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

请问这个策略哪里编写有问题? [金字塔]

  • 咨询内容:

    源代码:    

     

    variable:bj=0;                                    //全局变量    

     

    //做多部分    

     

    tr1 : max(max((high-low),abs(ref(close,1)-high)),abs(ref(close,1)-low));    

    atr : ma(tr1,20);                               //atr公式    

     

    ma20:ma(close,20);                               //20日均线    

     

    a1:=0.01*valuewhen(barpos=1,asset);              //初始资金的1%    

     

    a2:=floor(a1/(2*atr));                         //开仓手数    

     

    a3:=ref(hhv(high,20),1);                       //20日高点    

     

    if holding=0 and close>a3 and close>ma20 and bj=0    

    then begin    

    buy(1,a2,marketr);    

    bj:=1;    

    end                                   //第一次开仓    

     

    a4:=enterprice+2*atr;    

    if holding>0 and close>a4 and bj=1    

    then begin    

    buy(1,a2,marketr);    

    end                                  //第n次开仓    

     

    a5:=enterprice-2*ref(atr,enterbars=1);    

    if holding=1 and low<=a5    

    then begin    

    sell(1,0,limitr,a4);    

    end                                   //第一次开仓的离场      

     

     

    e1:=ref(enterprice,enterbars);    

    e2:=ref(e1,enterbars);    

    e3:=(e1+e2)/2;    

    if holding>1 and close<e3    

    then begin    

    sell(1,0,marketr);    

    end                                     //第n次开仓离场,即:收盘<("holding=n"与“holding=n-1”)/2的位置            

     

     

     

    //做空部分    

     

    a1:=0.01*valuewhen(barpos=1,asset);              //初始资金的1%    

     

    a2:=floor(a1/(2*atr));                         //开仓手数    

     

    a6:=ref(llv(low,20),1);                       //20日低点    

     

    if holding=0 and close<a6 and close<ma20 and bj=0    

    then begin    

    buyshort(1,a2,marketr);    

    bj:=1;    

    end                                   //第一次开仓    

     

    a7:=enterprice-2*atr;    

    if holding<0 and close<a7 and bj=1    

    then begin    

    buyshort(1,a2,marketr);    

    end                                  //第n次开仓    

     

    a8:=enterprice+2*ref(atr,enterbars=1);    

    if holding=1 and high>=a8    

    then begin    

    sellshort(1,0,limitr,a8);    

    end                                   //第一次开仓的离场      

     

     

    e1:=ref(enterprice,enterbars);    

    e2:=ref(e1,enterbars);    

    e3:=(e1+e2)/2;    

    if holding<-1 and close>e3    

    then begin    

    sellshort(1,0,marketr);    

    end                                     //第n次开仓离场,即:收盘 > ("holding=n"与“holding=n-1”)/2的位置    

     

    测试结果:    


    此主题相关图片如下:图片1.jpg


    此主题相关图片如下:图片2.png


    问题:    

    1.从2009年测试至今,为什么只交易了一次,其他条件都没成立?    

    2.第二次开仓与第一次开仓点位相差根本不多,为什么开仓手数相差了一倍?    

    3.随后的平仓都还没有到达平仓条件怎么就被平掉了?    

     

  • 金字塔客服:

    1、自己在图上输出下交易条件,然后进行下分析。很多问题不要一看到问题自己不做调试,图标的调试非常容易的比如cond1:c>0;这种就是一个条件了

    2、自己在图上输出下手数看是数字几,然后分析下,为何两次的数值差那么多

 

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

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


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

相关文章

    没有相关内容