交易编程代码 [文华财经]
-
咨询内容:
老师,我想给下面代码加个止盈策略,当价格往有利的方向运行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 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容