您现在的位置:程序化交易>> 期货公式>> 金字塔等>> 金字塔模型>>正文内容

金字塔“序列模式下,平仓信号未出现,却出现另一方向的开仓信号”的解决方法[金字塔模型]

  • 内容:

    金字塔“序列模式下,平仓信号未出现,却出现另一方向的开仓信号”的解决方法,类似的问题之前论坛上好几个人提过,当时只是给你建议,没有具体解决

    今天一客户刚好碰到类似情况,故在此给一个解决的示例

     

    某投资者的策略:

    做多: 仓位为0时,macd  金叉开多,死叉平多(需穿越)

    做空:仓位为0时, 慢速KD死叉开空,金叉平空(需穿越)

     

    当然,如果是标准版用户,使用逐K线模式,此模型很容易便可实现,但在序列模式下如何实现呢?

    如果采用以下代码,则会出现“平仓信号未出现,却出现另一方向的开仓信号”:

    diff:=ema(c,12)-ema(c,26);
    dea:=ema(diff,9);
    RSV:= (CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
    FASTK:=SMA(RSV,3,1);
    K:=SMA(FASTK,3,1);
    D:=SMA(K,5,1);

    bk:=cross(diff,dea);sp:=cross(dea,diff);
    sk:=cross(d,k);bp:=cross(k,d);

    enterlong:bk,tfilter;

    exitlong:sp,tfilter;

    entershort:sk,tfilter;

    exitshort:bp,tfilter;

     

     

     

    问题出现的原因是 平仓条件成立之前,另一方向的开仓信号就成立了。所以,这里要过滤一下。

    方法有多种,可以采用如下思路,这种思路比较有通用性:

    diff:=ema(c,12)-ema(c,26);
    dea:=ema(diff,9);
    RSV:= (CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
    FASTK:=SMA(RSV,3,1);
    K:=SMA(FASTK,3,1);
    D:=SMA(K,5,1);

    bk:=cross(diff,dea);
    sp:=cross(dea,diff);
    sk:=cross(d,k);
    bp:=cross(k,d);

    flagd1:=if(barpos=1,0,if(bk,1,if(sp,0,0)));
    flagd:=valuewhen(barpos=1 or bk or sp,flagd1);

    flagk1:=if(barpos=1,0,if(sk,-1,if(bp,0,0)));
    flagk:=valuewhen(barpos=1 or sk or bp,flagk1);

    enterlong:bk and flagk=0,tfilter;//flagk过滤

    exitlong:sp,tfilter;

    entershort:sk and flagd=0,tfilter;//flagd过滤

    exitshort:bp,tfilter;
     

 

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

可联系技术人员 QQ: 262069696  点击在线交流进行 有偿 编写!不贵!点击查看价格!

 


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

相关文章

    没有相关内容