您现在的位置:程序化交易>> 期货公式>> 交易开拓者(TB)>> 开拓者知识>>正文内容

新手求指点marketposttion的问题 [开拓者 TB]

  • 咨询内容: Params
            Numeric teLength(16);                   // 离市周期 Trailing Exit Length,在15分钟上用16表达为4小时K线的最低或最高价
            Numeric FastLength(12);
            Numeric SlowLength(26);
            Numeric MACDLength(9);
    Vars
            NumericSeries MACDValue;
            NumericSeries AvgMACD;
            Numeric MACDDiff;
        Numeric ExitHighestPrice;               // 离市时判断需要的N周期最高价
        Numeric ExitLowestPrice;                // 离市时判断需要的N周期最低价
            BoolSeries Condition1;
            BoolSeries Condition2;
            NumericSeries duo;
            NumericSeries kong;
            NumericSeries yid;
            NumericSeries yik;
    Begin
            MACDValue = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;       
            AvgMACD = XAverage(MACDValue,MACDLength);
            MACDDiff = MACDValue - AvgMACD;
            PlotNumeric("MACD",MACDValue);
            PlotNumeric("MACDAvg",AvgMACD);
            If (MACDDiff >= 0)       
                    PlotNumeric("MACDDiff",MACDDiff,0,Red);
            Else
                    PlotNumeric("MACDDiff",MACDDiff,0,Green);
            PlotNumeric("零线",0);              
           
            Condition1 = CrossOver(MACDValue,AvgMACD);     //金叉买进
        Condition2 = CrossUnder(MACDValue,AvgMACD);    //死叉卖出
           
            ExitLowestPrice = LowestFC(Low[1],teLength);
            ExitHighestPrice = HighestFC(High[1],teLength);

        If(MarketPosition!=0)
          {
                If(Condition1[1] && AvgMACD[1]<0 )        // 0线以下金叉开多
             {
              Buy(1,Open);
                      duo=ExitLowestPrice-50;
                      yid=(open-duo)*2+Open;
              }Else        If(Condition2[1] && AvgMACD[1]>0 )                //0线以上死叉开空
              {
               SellShort(1,Open);
                   kong=ExitHighestPrice+50;
                   yik=Open-(kong-Open)*2;
               }
                    }

            If(MarketPosition==1)
              {
                If(Open>=yid)
                  {
                   Sell(0,Open);
                   }Else
                    {
                          If(open<=duo)
                           {
                                Sell(0,Open);
                                }
                       }
                    }
           
            If(MarketPosition==-1)
              {
               If(open<=yik)
                 {
                  BuyToCover(0,Open);
                  }Else
                   {
                         If(open>=kong)
                          {
                            BuyToCover(0,open);
                               }
                        }
                    }
    End

    这一段代码中,为什么 有marketposition!=0这个条件,它就不开仓,去掉marketposition!=0就可以正常开仓。

     

  • TB技术人员: marketposition==0说明是没有信号持仓的情况下。
    marketposition!=0 是指已经有信号持仓的情况下。
    加上marketposition!=0的条件是指已经有信号持仓后再去执行相应的指令。。
    整个公式后面的指令也是判断==1或==-1时,即加仓的指令。。
    那图表上加载一个公式时,一定是从0信号开始的。。在信号持仓为0时是不满足你的任一开仓指令的。
    自然,就一个信号也没有了。
    在公式里这个位置加上这个marketposition!=0的判断明显是不合理的。

     

  • TB客服: 谢谢,版主老大,说明文件上没写这个。我改成==0了,没问题了!

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 511411198  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容