开拓者期货期权程序化系统交易论坛

标题: 为什么开平仓都在同一根k线 求解 [打印本页]

作者: w278112766    时间: 2014-4-15 10:24:23     标题: 为什么开平仓都在同一根k线 求解

Condition1 = MA4[1]<MA2[1]&&MA4[2]>MA2[2];
          Condition2 = MA4[1]<MA3[1]&&MA4[2]>MA3[2];


          If( MarketPosition ==0 && Condition1 ==True)
           {
           SellShort(CC,Open);
           }
          
          If(MarketPosition == -1)
          {
            If(Condition2 == true)
                {
                 BuyToCover(CC,Open);
                 }
作者: ample    时间: 2014-4-16 09:22:02

如果条件都满足了,是有可能同一根K线开仓的。

楼主可以在公式里增加一些调试语句,看看条件的满足情况。

另, MarketPosition 的值同一根K线上,开仓之后就会改变的,仅靠它控制不了同一根K线开平仓
作者: w278112766    时间: 2014-4-16 11:20:37

ample 发表于 2014-4-16 09:22
如果条件都满足了,是有可能同一根K线开仓的。

楼主可以在公式里增加一些调试语句,看看条件的满足情况。

您好,我这样改写之后还是同一根k线反复开平,请看看哪里出错了谢谢
  NumericSeries  MA1;
          NumericSeries  MA2;
          NumericSeries  MA3;
          NumericSeries  MA4;
         
Begin
      MinPoint = MinMove*PriceScale;
          MyEntryprice = AvgEntryPrice;
          MA1 = AverageFC(CLOSE,N1);
          MA2 = MA1+N3*AvgTrueRange(N2);
          MA3 = MA1-N3*AvgTrueRange(N2);
          MA4 = AverageFC(CLOSE,5);
          Condition1 = MA4[1]<MA2[1] && MA4[2]>MA2[2] && MA4[1]>MA3[1] && MA4[2]>MA3[2];
          Condition2 = MA4[1]>MA3[1] && MA4[2]<MA3[2] && MA4[1]<MA2[1] && MA4[2]<MA2[2];
          
          
          If( MarketPosition <>-1 && Condition1 ==True)
          
           {
           SellShort(CC,Close);
           }
          
          If(MarketPosition == -1)
          {
            If(Condition2 == true)
                {
                 BuyToCover(CC,Open);
                 }
作者: i171717    时间: 2014-5-4 17:03:40

要用A函数,你这系统在实盘之中,buy函数几乎有着严重的滞后性
作者: diorjojo    时间: 2014-5-22 15:15:13

If( MarketPosition ==0 && Condition1 ==True)
           {
           SellShort(CC,Open);
           }

把 MarketPosition ==0 改为 MarketPosition !=-1看看
作者: TBLearning    时间: 2014-5-23 10:16:41

本帖最后由 TBLearning 于 2014-5-23 10:18 编辑

Condition1 = MA4[1]<MA2[1]&&MA4[2]>MA2[2];
          Condition2 = MA4[1]<MA3[1]&&MA4[2]>MA3[2];

           If(MarketPosition == -1)
          {
                If(Condition2 == true)
                {
                     BuyToCover(CC,Open);
                 }
          }
          else   If( MarketPosition ==0 && Condition1 ==True)
           {
                SellShort(CC,Open);
           }
           这样是不会平掉同一Bar上开进去的单子的
         
作者: ST振翔    时间: 2014-5-23 15:24:11

要我就这样处理:
Condition1 = MA4[1]<MA2[1]&&MA4[2]>MA2[2];
          Condition2 = MA4[1]<MA3[1]&&MA4[2]>MA3[2];


          If( MarketPosition ==0 && Condition1 ==True)
           {
           SellShort(CC,Open);
           }
           
          If(MarketPosition == -1)
          {
            If(Condition2 == true && BarsSinceEntry()>1)
                {
                 BuyToCover(CC,Open);
                 }




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2