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

交易编程代码 [文华财经]

  • 咨询内容:

     老师,我想给下面代码加个止盈策略,当价格往有利的方向运行3倍最初止损区间时,比如入市点2000多单,当时真实波动幅度为20,止损区间为60,那么当价格到达2180时,开始进入止盈区间,当盈利为3倍止损区间时,利润回撤30%止盈,即到达2180后,止盈点为2180-180*0.3=2126,当盈利为4倍止损区间时,即2240,利润回撤25%止盈,当利润大于等于5倍止损区间时,利润回撤20%止盈。
    备注:开仓和离市点都按实时价,移动止损点的计算按收盘价。

      请问这个止盈该怎么写?

    TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));//真实波幅  

    ATR:=MA(TR,10); //求10个周期内真实波幅的简单移动平均  

    UNIT,NODRAW;  

    UNIT*ATR,NODRAW;  

    TC..INTPART((MONEYTOT*0.02/(UNIT*ATR*3)));//根据权益的2%计算下单手数  

    HH:=HV(H,20);  

    LL:=LV(L,20);  

    CROSSUP(C,HH)&&ISLASTBK=0&&ISLASTSK=0,BK(TC);//最新价超过20周期的最高值,首次买入开仓,手数为TC手  

    CROSSDOWN(C,LL)&&ISLASTBK=0&&ISLASTSK=0,SK(TC); //最新价跌破20周期的最低值,首次卖出开仓,手数为TC手  

    C<=(BKPRICE-3*ATR)&&BKVOL>0,SP(BKVOL);//最新价小于开仓价减去3倍的ATR,止损平仓  

    C>=(SKPRICE+3*ATR)&&SKVOL>0,BP(SKVOL); //最新价大于开仓价加上3倍的ATR,止损平仓  

    CSD:BKPRICE-3*ATR;  

    CSK:BKPRICE+3*ATR;  

    DQD:C-3*ATR;  

    DQK:C+3*ATR;  

    DD:IF(REF(DQD>CSD),REF(DQD,1),REF(CSD,1));  

    KK:IF(REF(DQK<CSK),REF(DQK,1),REF(CSK,1));  

    C<=DD&&BKVOL>0,SP(BKVOL);//最新价小于开仓价减去3倍的ATR,止损平仓  

    C>=KK&&SKVOL>0,BP(SKVOL); //最新价大于开仓价加上3倍的ATR,止损平仓TRADE_AGAIN(3);  

    CHECKSIG(BK,''0,''0,0);  

    CHECKSIG(SK,''0,''0,0);  

    CHECKSIG(BP,''0,''0,0);  

    CHECKSIG(SP,''0,''0,0);

     

     

     来源:程序化99

  • 文华技术人员:

    同一个sp信号不能同时设置收盘价与指令价,您设置指令价方式立即止损是合理的

     

    参考:

    TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));//真实波幅

    ATR:=MA(TR,10); //求10个周期内真实波幅的简单移动平均

    UNIT,NODRAW;

    UNIT*ATR,NODRAW;

    TC..INTPART((MONEYTOT*0.02/(UNIT*ATR*3)));//根据权益的2%计算下单手数

    HH:=HV(H,20);

    LL:=LV(L,20);

    CROSSUP(C,HH)&&ISLASTBK=0&&ISLASTSK=0,BK(TC);//最新价超过20周期的最高值,首次买入开仓,手数为TC手

    CROSSDOWN(C,LL)&&ISLASTBK=0&&ISLASTSK=0,SK(TC); //最新价跌破20周期的最低值,首次卖出开仓,手数为TC手

    C<=(BKPRICE-3*ATR)&&BKVOL>0,SP(BKVOL);//最新价小于开仓价减去3倍的ATR,止损平仓

    C>=(SKPRICE+3*ATR)&&SKVOL>0,BP(SKVOL); //最新价大于开仓价加上3倍的ATR,止损平仓

    CSD:BKPRICE-3*ATR;

    CSK:SKPRICE+3*ATR;

    DQD:C-3*ATR;

    DQK:C+3*ATR;

    DD:IF(REF(DQD>CSD,1),REF(DQD,1),REF(CSD,1));

    KK:IF(REF(DQK<CSK,1),REF(DQK,1),REF(CSK,1));
    //当盈利为3倍止损区间时,利润回撤30%止盈,即到达2180后,止盈点为2180-180*0.3=2126,
    //当盈利为4倍止损区间时,即2240,利润回撤25%止盈,当利润大于等于5倍止损区间时,利润回撤20%止盈。
    BKHIGH>=BKPRICE+3*REF(ATR,BARSBK)&&C<=BKHIGH-REF(ATR,BARSBK)*0.3,SP(BKVOL);
    BKHIGH>=BKPRICE+4*REF(ATR,BARSBK)&&C<=BKHIGH-REF(ATR,BARSBK)*0.25,SP(BKVOL);
    BKHIGH>=BKPRICE+5*REF(ATR,BARSBK)&&C<=BKHIGH-REF(ATR,BARSBK)*0.2,SP(BKVOL);

    SKLOW<=SKPRICE-3*REF(ATR,BARSSK)&&C>=SKLOW+REF(ATR,BARSBK)*0.3,SP(BKVOL);
    SKLOW<=SKPRICE-4*REF(ATR,BARSSK)&&C>=SKLOW+REF(ATR,BARSBK)*0.25,SP(BKVOL);
    SKLOW<=SKPRICE-5*REF(ATR,BARSSK)&&C>=SKLOW+REF(ATR,BARSBK)*0.2,SP(BKVOL);

    C<=DD&&BKVOL>0,SP(BKVOL);//最新价小于开仓价减去3倍的ATR,止损平仓

    C>=KK&&SKVOL>0,BP(SKVOL); //最新价大于开仓价加上3倍的ATR,止损平仓TRADE_AGAIN(3);

    CHECKSIG(BK,'A',0,'C',0,0);

    CHECKSIG(SK,'A',0,'C',0,0);

    CHECKSIG(BP,'A',0,'C',0,0);

    CHECKSIG(SP,'A',0,'C',0,0);

     

     来源: WWW.CXH99.COM

  • 文华客服:

    老师,这个红色部分的止盈策略,里面的真实波动幅度是最初的吗?我的策略是当盈利为最初止损区间的3倍,即入市时2000,当时真实波动幅度20,那么最初止损区间就是60,所以到了2180才进入止盈区间。

     

  • 网友回复:  是的,BKPRICE+3*REF(ATR,BARSBK)这样计算的就是开仓时的ATR 

     

  • 网友回复:

    老师,刚回测时显示这行函数REF参数个数非法

     DD:IF(REF(DQD>CSD),REF(DQD,1),REF(CSD,1));

     

 

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

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


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

相关文章

    没有相关内容