以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 止盈止损编写请教 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=164455) |
-- 作者:yuanman -- 发布时间:2018/7/17 10:11:15 -- 止盈止损编写请教 请教老师;这个上软件上带的止盈止损范列,我想要在移动止盈上加一个条件;开仓后从最高价大于upper上轨或小于lower下轨时,再开始进行移动止盈的计算,该如何编写,谢谢老师! //使用逐K线模式时 VARIABLE:DUOKONG=0; TSFS:=0; {停损反手,1-反手 0-不反手} ORDVOL:=1; {开仓手数} ZSDS:=100; {止损点数} //以下变量用于移动止盈,,移动止盈只能保证你尽可能稳健盈利,却不能保证盈利最大化,如果不想使用,可是将总开关设置为0 VARIABLE:YDZY=1; {移动止盈总开关,1为开,0为关} VARIABLE:HIGHPRICE=0,LOWPRICE=0; {保存开仓后的最高价、最低价} VARIABLE:DHCDS=100,KHCDS=100; {多、空单回撤点数} VARIABLE:DYLDS=100,KYLDS=100; {多、空单盈利点数,当盈利点数达到这个标准后,如果回撤达到上面的参数值就平仓} VARIABLE:Z3B1:=1; {赚3保1开关} DUOKONG:=0; //持有空单 IF HOLDING<0 THEN BEGIN IF BUY1 THEN BEGIN //平空单 空平:SELLSHORT(1,0,MARKET),ORDERQUEUE; END //止损 IF C-ENTERPRICE>=ZSDS THEN BEGIN 空损:SELLSHORT(1,0,MARKET),ORDERQUEUE; END //移动止盈 IF YDZY=1 THEN BEGIN //每周期判断是否创新低 IF L<LOWPRICE THEN BEGIN LOWPRICE:=L; END //如果盈利超过10点之后回撤达到3点,就平仓,保住盈利 IF ENTERPRICE-LOWPRICE>=KYLDS THEN BEGIN IF L-LOWPRICE>=KHCDS THEN BEGIN //回撤超过3点 空赢:SELLSHORT(1,0,MARKET); END END END //赚3保1 IF Z3B1=1 THEN BEGIN IF ENTERPRICE-LOWPRICE>=3 THEN BEGIN IF ENTERPRICE-L<=1.2 THEN BEGIN 空保:SELLSHORT(1,0,MARKET); END END END END //开多单 IF HOLDING=0 THEN BEGIN IF DUOKONG=1 OR DUOKONG=2 THEN BEGIN IF BUY1 THEN BEGIN 多开:BUY(1=1,ORDVOL,MARKET); HIGHPRICE:=ENTERPRICE; //将开仓价保存到最高价 END END END //持有多单 IF HOLDING>0 THEN BEGIN IF SELL1 THEN BEGIN {平多单} 多平:SELL(1,0,MARKET),ORDERQUEUE; END //多单管理 //止损 IF ENTERPRICE-C>=ZSDS THEN BEGIN 多损:SELL(1,0,MARKET),ORDERQUEUE; END //移动止盈 IF YDZY=1 THEN BEGIN //每周期判断是否创新高 IF H>HIGHPRICE THEN BEGIN HIGHPRICE:=H; END //如果盈利超过10点之后回撤达到3点,就平仓,保住盈利 IF HIGHPRICE-ENTERPRICE>=DYLDS THEN BEGIN IF HIGHPRICE-H>=DHCDS THEN BEGIN //回撤超过3点 多赢:SELL(1,0,MARKET); END END END //赚3保1 IF Z3B1=1 THEN BEGIN IF HIGHPRICE-ENTERPRICE>=3 THEN BEGIN IF H-ENTERPRICE<=1.2 THEN BEGIN 多保:SELL(1,0,MARKET); END END END END //开空单 IF HOLDING=0 THEN BEGIN IF DUOKONG=1 OR DUOKONG=3 THEN BEGIN IF SELL1 THEN BEGIN 空开:BUYSHORT(1=1,ORDVOL,MARKET); LOWPRICE:=ENTERPRICE; END END END |
-- 作者:FireScript -- 发布时间:2018/7/17 10:31:59 -- 意思是 开仓后 最高价大于upper上轨或最低价小于lower下轨时,再触发移动止盈的计算是吗? |
-- 作者:yuanman -- 发布时间:2018/7/17 10:41:34 -- 是的,老师。 |
-- 作者:FireScript -- 发布时间:2018/7/17 10:53:21 -- upper 和lower是如何定义的呢? 其实你这个只要给移动止损加个条件就可以了。 [此贴子已经被作者于2018/7/17 10:53:55编辑过]
|
-- 作者:yuanman -- 发布时间:2018/7/17 12:33:33 -- upper 和lower就是布林带的上下轨。 |
-- 作者:FireScript -- 发布时间:2018/7/17 13:30:45 -- //使用逐K线模式时 VARIABLE:DUOKONG=0; TSFS:=0; {停损反手,1-反手 0-不反手} ORDVOL:=1; {开仓手数} ZSDS:=100; {止损点数} //以下变量用于移动止盈,,移动止盈只能保证你尽可能稳健盈利,却不能保证盈利最大化,如果不想使用,可是将总开关设置为0 VARIABLE:YDZY=1; {移动止盈总开关,1为开,0为关} VARIABLE:HIGHPRICE=0,LOWPRICE=0; {保存开仓后的最高价、最低价} VARIABLE:DHCDS=100,KHCDS=100; {多、空单回撤点数} VARIABLE:DYLDS=100,KYLDS=100; {多、空单盈利点数,当盈利点数达到这个标准后,如果回撤达到上面的参数值就平仓} VARIABLE:Z3B1:=1; {赚3保1开关} DUOKONG:=0; cond:(hhv(h,ENTERBARS)>upper or llv(h,ENTERBARS)<lower) and holding<>0; //持有空单 IF HOLDING<0 THEN BEGIN IF BUY1 THEN BEGIN //平空单 空平:SELLSHORT(1,0,MARKET),ORDERQUEUE; END //止损 IF C-ENTERPRICE>=ZSDS THEN BEGIN 空损:SELLSHORT(1,0,MARKET),ORDERQUEUE; END //移动止盈 IF YDZY=1 and cond THEN BEGIN //每周期判断是否创新低 IF L<LOWPRICE THEN BEGIN LOWPRICE:=L; END //如果盈利超过10点之后回撤达到3点,就平仓,保住盈利 IF ENTERPRICE-LOWPRICE>=KYLDS THEN BEGIN IF L-LOWPRICE>=KHCDS THEN BEGIN //回撤超过3点 空赢:SELLSHORT(1,0,MARKET); END END END //赚3保1 IF Z3B1=1 THEN BEGIN IF ENTERPRICE-LOWPRICE>=3 THEN BEGIN IF ENTERPRICE-L<=1.2 THEN BEGIN 空保:SELLSHORT(1,0,MARKET); END END END END //开多单 IF HOLDING=0 THEN BEGIN IF DUOKONG=1 OR DUOKONG=2 THEN BEGIN IF BUY1 THEN BEGIN 多开:BUY(1=1,ORDVOL,MARKET); HIGHPRICE:=ENTERPRICE; //将开仓价保存到最高价 END END END //持有多单 IF HOLDING>0 THEN BEGIN IF SELL1 THEN BEGIN {平多单} 多平:SELL(1,0,MARKET),ORDERQUEUE; END //多单管理 //止损 IF ENTERPRICE-C>=ZSDS THEN BEGIN 多损:SELL(1,0,MARKET),ORDERQUEUE; END //移动止盈 IF YDZY=1 and cond THEN BEGIN //每周期判断是否创新高 IF H>HIGHPRICE THEN BEGIN HIGHPRICE:=H; END //如果盈利超过10点之后回撤达到3点,就平仓,保住盈利 IF HIGHPRICE-ENTERPRICE>=DYLDS THEN BEGIN IF HIGHPRICE-H>=DHCDS THEN BEGIN //回撤超过3点 多赢:SELL(1,0,MARKET); END END END //赚3保1 IF Z3B1=1 THEN BEGIN IF HIGHPRICE-ENTERPRICE>=3 THEN BEGIN IF H-ENTERPRICE<=1.2 THEN BEGIN 多保:SELL(1,0,MARKET); END END END END //开空单 IF HOLDING=0 THEN BEGIN IF DUOKONG=1 OR DUOKONG=3 THEN BEGIN IF SELL1 THEN BEGIN 空开:BUYSHORT(1=1,ORDVOL,MARKET); LOWPRICE:=ENTERPRICE; END END END 布林带你自行引入即可。红色是我修改或者增加的部分。 |
-- 作者:yuanman -- 发布时间:2018/7/17 14:33:09 -- 谢谢老师! |