您现在的位置:程序化交易>> 期货公式>> 文华财经>> 文华财经知识>>正文内容

关于海龟模型修改 [文华财经]

  • 咨询内容:

     老师我改编了一下海龟模型,模型如下:

     

    TR:MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
    ATR:MA(TR,20); //ATR定义
    TC:INTPART((MONEYTOT*0.01/(UNIT*ATR)));


    CROSSUP(C,HV(H,20))&&ISLASTBK=0&&ISLASTSK=0,BK(TC);//入市策略
    CROSSUP(C,HV(H,20))&&ISLASTBK=0&&ISLASTSK=0,BK(TC);//入市策略


    BARPOS=1,BK(TC);
    BARPOS=2,SP(TC);
    BARPOS=3,SK(TC);
    BARPOS=4,BP(TC);

    N1:=MIN(BARSSP,BARSBP);
    KB:=COUNT(BARSBK=1,N1);
    C>=BKPRICE+0.5*ATR&&KB=1&&ISLASTBK,BK(TC);//加仓策略(第一次加仓)
    C>=BKPRICE+0.5*ATR&&KB=2&&ISLASTBK,BK(TC);//加仓策略(第二次加仓)


    KS:=COUNT(BARSSK=1,N1);
    C<=SKPRICE-0.5*ATR&&KS=1&&ISLASTSK,SK(TC);//加仓策略(第一次加仓)
    C<=SKPRICE-0.5*ATR&&KS=2&&ISLASTSK,SK(TC);//加仓策略(第二次加仓)


    KB=1&&C<=(BKPRICE-2*ATR)&&BKVOL>0,SP(BKVOL);//开仓止损策略
    KS=1&&C>=(SKPRICE+2*ATR)&&SKVOL>0,BP(SKVOL); //开仓止损策略

    KB=2&&C<=(BKPRICE-1.8*ATR)&&BKVOL>0,SP(BKVOL);//第一次加仓后的止损策略
    KS=2&&C>=(SKPRICE+1.8*ATR)&&SKVOL>0,BP(SKVOL);//第一次加仓后的止损策略
    KB=3&&C<=(BKPRICE-1.5*ATR)&&BKVOL>0,SP(BKVOL);//第二次加仓后的止损策略
    KS=3&&C>=(SKPRICE+1.5*ATR)&&SKVOL>0,BP(SKVOL);//第二次加仓胡的止损策略

    CROSSDOWN(L,LV(L,10))&&BKVOL>0,SP(BKVOL); //退出策略
    CROSSUP(H,HV(H,10))&&SKVOL>0,BP(SKVOL);//退出策略


    BKHIGH>BKPRICE+2*ATR&&C<=BKPRICE,SP(BKVOL);//止盈策略
    BKHIGH>BKPRICE+4*ATR&&C<=BKHIGH-(BKHIGH-BKPRICE)*0.618,SP(BKVOL);//止盈策略
    BKHIGH>BKPRICE+6*ATR&&C<=BKHIGH-(BKHIGH-BKPRICE)*0.382,SP(BKVOL);//止盈策略

     

    SKLOW<SKPRICE-2*ATR&&C>=SKPRICE,BP(SKVOL);//止盈策略
    SKLOW<SKPRICE-4*ATR&&C>=SKLOW+(SKPRICE-SKLOW)*0.618,BP(SKVOL);//止盈策略
    SKLOW<SKPRICE-6*ATR&&C>=SKLOW+(SKPRICE-SKLOW)*0.382,BP(SKVOL);//止盈策略

     

     

    现在的问题是:

    1、由于ATR一直在变化,所以加仓手数和开仓手数会不一致,我希望能加仓手数始终和开仓手数保持一致。

    2、我目前的模型是一根K线上一个信号,加仓不能和开仓在同一根K线上,我希望能在同一根K线上进行开仓和加仓。(只加两次仓)

     

     

     

     

  • 文华技术人员:

     问题1:开仓手数TC的问题 您可以将TC:INTPART((MONEYTOT*0.01/(UNIT*ATR))); 中的ATR的值写成一个固定值

     问题2:您的模型并没有加入一根K线单信号函数,所以您可以试试使用 出信号立即下单 不复核 这种下单执行方式 来解决一根K线一个信号的问题

     

  • 文华客服:

     如何把ATR写成固定值?

     

     

  • 网友回复:

     TC:INTPART((MONEYTOT*0.01/(UNIT*ATR)));


     距离 您将这里的ATR换成一个参数即可 比如“5”

      TC:INTPART((MONEYTOT*0.01/(UNIT*5)));

     

  • 网友回复:

     我还是不太明白,

    ATR:MA(TR,20); //ATR定义

    ATR是这样定义出来的,每次开仓都是根据当时的值计算出来的,而且不同的品种,ATR的值都是不同的,如何固定?

     

    我搜到论坛里有这样的答案,不知道对吗?

    TC:INTPART((MONEYTOT*0.01/(UNIT*ATR)));
    MTC:4*TC; //头寸计算
    TC0:=REF(TC,BARSLAST(REF(BKVOL=0&&SKVOL=0,1)&&(SKVOL>0||BKVOL>0)));

 

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

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


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

相关文章

    没有相关内容