-- 作者:uheart
-- 发布时间:2013/10/24 9:34:15
-- 请教止盈止损后排斥同方向开仓的问题
又来麻烦老师了,实在过意不去。
以下是30分钟突破的代码和止盈止损。我想在里面加止盈止损后同方向不再开仓的条件(比如在上线多单止损后,今日不再开多单),学生不知如何编写。
恳请老师指点(_ _)
input:ss(1,1,100,1),nmin1(30,1,100,1),nmin2(1,1,100,1),n1(0,0,100,1),,n2(22,1,60,1),n3(13,10,20,1),n4(59,1,80,1); N:=barslast(date<>ref(date,1))+1; 开盘30分钟最高价:=valuewhen(time<=090000+nmin1*100,hhv(h,n)); 开盘30分钟最低价:=valuewhen(time<=090000+nmin1*100,llv(l,n)); 上轨:开盘30分钟最高价+n1*mindiff; 下轨:开盘30分钟最低价-N1*mindiff;
//条件 开多条件:=cross(c,上轨); 开空条件:=cross(下轨,c); t1:=time>091500+nmin2*100 and time<151000; t2:=time=151300;
//交易系统
VARIABLE:DUOKONG=0; TSFS:=0; {停损反手,1-反手 0-不反手} 开仓手数:=ss; {开仓手数} ZSDS:=n4/100; {止损百分比} //以下变量用于移动止盈 VARIABLE:YDZY=1; {移动止盈总开关,1为开,0为关} VARIABLE:HIGHPRICE=0,LOWPRICE=0; {保存开仓后的最高价、最低价} VARIABLE:DHCDS=n2/100,KHCDS=n2/100; {多、空单回撤百分比} VARIABLE:DYLDS=n3,KYLDS=n3; {多、空单盈利点数,当盈利点数达到这个标准后,如果回撤达到上面的参数值百分比就平仓} VARIABLE:Z3B1:=0; {赚3保1开关} DUOKONG:=1;
//持有空单 IF HOLDING<0 THEN BEGIN IF t2 THEN BEGIN //平空单 空平:SELLSHORT(1,0,market),ORDERQUEUE; END //止损59% IF (C-ENTERPRICE)/ENTERPRICE*100>=ZSDS THEN BEGIN 空损:SELLSHORT(1,0,market),ORDERQUEUE; END //空单移动止盈 IF YDZY=1 THEN BEGIN //每周期判断是否创新低 IF L<LOWPRICE THEN BEGIN LOWPRICE:=L; END //如果盈利超过10点之后回撤达到22%,就平仓,保住盈利 IF ENTERPRICE-LOWPRICE>=KYLDS THEN BEGIN IF (L-LOWPRICE)/LOWPRICE*100>=KHCDS THEN BEGIN //回撤超过的百分比 空赢: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 开多条件 and t1 THEN BEGIN 多开:BUY(1=1,ss,market); HIGHPRICE:=ENTERPRICE; //将开仓价保存到最高价 END END END
//持有多单 IF HOLDING>0 THEN BEGIN IF t2 THEN BEGIN {平多单} 多平:SELL(1,0,market),ORDERQUEUE; END //多单管理 //多单止损 IF (ENTERPRICE-C)/ENTERPRICE*100>=ZSDS THEN BEGIN 多损:SELL(1,0,market),ORDERQUEUE; END //多单移动止盈 IF YDZY=1 THEN BEGIN //每周期判断是否创新高 IF H>HIGHPRICE THEN BEGIN HIGHPRICE:=H; END //如果盈利超过10点之后回撤达到22%,就平仓,保住盈利 IF HIGHPRICE-ENTERPRICE>=DYLDS THEN BEGIN IF (HIGHPRICE-H)/HIGHPRICE*100>=DHCDS THEN BEGIN //回撤超过22% 多赢: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 开空条件 and t1 THEN BEGIN 空开:BUYSHORT(1=1,ss,market); LOWPRICE:=ENTERPRICE; END END END
|
-- 作者:jinzhe
-- 发布时间:2013/10/24 9:49:05
--
需要用全局变量来限定开平状态,思路如下:
1.策略最开头添加代码
variable:kaiguan_duo=0;//多头开关
variable:kaiguan_kong=0;//空头开关
2.所有的止盈止损代码添加对全局变量的赋值以及判断,全局变量的赋值写在平仓语句之后,比如:
①
空头添加开关
//止损59% IF (C-ENTERPRICE)/ENTERPRICE*100>=ZSDS and kaiguan_kong=0 THEN BEGIN 空损:SELLSHORT(1,0,market),ORDERQUEUE;
kaiguan_kong:=1; END ②
多头添加开关
//持有多单 IF HOLDING>0 and kaiguan_duo=0 THEN BEGIN IF t2 THEN BEGIN {平多单} 多平:SELL(1,0,market),ORDERQUEUE;
kaiguan_duo:=1; END
其他的多空头止盈止损不做重复的讲解,按照上面的处理即可
3.策略最后面添加代码
if time=closetime(0) then begin
kaiguan_duo:=0;
kaiguan_kong:=0;
end
[此贴子已经被作者于2013/10/24 9:49:50编辑过]
|
-- 作者:uheart
-- 发布时间:2013/10/24 10:44:13
--
加上去了,测试也通过。非常感谢!
。。不过又出现个问题,图表的时候线缩得不成样子了。不知道哪里错了,求救!
input:ss(1,1,100,1),nmin1(41,1,100,1),nmin2(1,1,100,1),n1(0,0,100,1),,n2(22,1,60,1),n3(13,10,20,1),n4(59,1,80,1); N:=barslast(date<>ref(date,1))+1; 开盘30分钟最高价:=valuewhen(time<=090000+nmin1*100,hhv(h,n)); 开盘30分钟最低价:=valuewhen(time<=090000+nmin1*100,llv(l,n)); 上轨:开盘30分钟最高价+n1*mindiff; 下轨:开盘30分钟最低价-N1*mindiff;
//条件 开多条件:=h>上轨; 开空条件:=l<下轨; t1:=time>091500+nmin2*100 and time<151000; t2:=time=151300;
//交易系统
VARIABLE:DUOKONG=0; variable:kaiguan_duo=0;//多头开关 variable:kaiguan_kong=0;//空头开关
TSFS:=0; {停损反手,1-反手 0-不反手} 开仓手数:=ss; {开仓手数} ZSDS:=n4/100; {止损百分比}
//以下变量用于移动止盈 VARIABLE:YDZY=1; {移动止盈总开关,1为开,0为关} VARIABLE:HIGHPRICE=0,LOWPRICE=0; {保存开仓后的最高价、最低价} VARIABLE:DHCDS=n2/100,KHCDS=n2/100; {多、空单回撤百分比} VARIABLE:DYLDS=n3,KYLDS=n3; {多、空单盈利点数,当盈利点数达到这个标准后,如果回撤达到上面的参数值百分比就平仓} VARIABLE:Z3B1:=0; {赚3保1开关} DUOKONG:=1;
//持有空单 IF HOLDING<0 THEN BEGIN IF t2 THEN BEGIN //平空单 空平:SELLSHORT(1,0,market),ORDERQUEUE; END //止损59% IF (C-ENTERPRICE)/ENTERPRICE*100>=ZSDS and kaiguan_kong=0 THEN BEGIN 空损:SELLSHORT(1,0,market),ORDERQUEUE; kaiguan_kong:=1; END //空单移动止盈 IF YDZY=1 THEN BEGIN //每周期判断是否创新低 IF L<LOWPRICE THEN BEGIN LOWPRICE:=L; END //如果盈利超过10点之后回撤达到22%,就平仓,保住盈利 IF ENTERPRICE-LOWPRICE>=KYLDS THEN BEGIN IF (L-LOWPRICE)/LOWPRICE*100>=KHCDS THEN BEGIN //回撤超过的百分比 空赢: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 开多条件 and t1 THEN BEGIN 多开:BUY(1=1,ss,market); HIGHPRICE:=ENTERPRICE; //将开仓价保存到最高价 END END END
//持有多单 IF HOLDING>0 THEN BEGIN IF t2 THEN BEGIN {平多单} 多平:SELL(1,0,market),ORDERQUEUE; END //多单管理 //多单止损 IF (ENTERPRICE-C)/ENTERPRICE*100>=ZSDS and kaiguan_duo=0 THEN BEGIN 多损:SELL(1,0,market),ORDERQUEUE; kaiguan_duo=1; END //多单移动止盈 IF YDZY=1 THEN BEGIN //每周期判断是否创新高 IF H>HIGHPRICE THEN BEGIN HIGHPRICE:=H; END //如果盈利超过10点之后回撤达到22%,就平仓,保住盈利 IF HIGHPRICE-ENTERPRICE>=DYLDS THEN BEGIN IF (HIGHPRICE-H)/HIGHPRICE*100>=DHCDS THEN BEGIN //回撤超过22% 多赢: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 开空条件 and t1 THEN BEGIN 空开:BUYSHORT(1=1,ss,market); LOWPRICE:=ENTERPRICE; END END
END
if time=closetime(0) then begin kaiguan_duo:=0; kaiguan_kong:=0; end
此主题相关图片如下:tm截图未命名.png

|
-- 作者:uheart
-- 发布时间:2013/10/24 12:34:26
--
还是不行呢,比如昨天的图形,开多止盈以后还是会同方向开仓,多单止盈以后如何可以禁止同方向开仓啊?请老师指点迷津!
代码和昨日图如下(红色为按老师的教程添加的代码,没有达到效果。)
input:ss(1,1,100,1),nmin1(41,1,100,1),nmin2(1,1,100,1),n1(0,0,100,1),,n2(22,1,60,1),n3(13,10,20,1),n4(59,1,80,1); N:=barslast(date<>ref(date,1))+1; 开盘30分钟最高价:=valuewhen(time<=090000+nmin1*100,hhv(h,n)); 开盘30分钟最低价:=valuewhen(time<=090000+nmin1*100,llv(l,n)); 上轨:开盘30分钟最高价+n1*mindiff; 下轨:开盘30分钟最低价-N1*mindiff;
//条件 开多条件:=cross(c,上轨); 开空条件:=cross(下轨,c); t1:=time>091500+nmin2*100 and time<151000; t2:=time=151300;
//交易系统
VARIABLE:DUOKONG=0; variable:kaiguan_duo=0;//多头开关 variable:kaiguan_kong=0;//空头开关
TSFS:=0; {停损反手,1-反手 0-不反手} 开仓手数:=ss; {开仓手数} ZSDS:=n4/100; {止损百分比} //以下变量用于移动止盈 VARIABLE:YDZY=1; {移动止盈总开关,1为开,0为关} VARIABLE:HIGHPRICE=0,LOWPRICE=0; {保存开仓后的最高价、最低价} VARIABLE:DHCDS=n2/100,KHCDS=n2/100; {多、空单回撤百分比} VARIABLE:DYLDS=n3,KYLDS=n3; {多、空单盈利点数,当盈利点数达到这个标准后,如果回撤达到上面的参数值百分比就平仓} VARIABLE:Z3B1:=0; {赚3保1开关} DUOKONG:=1;
//持有空单 IF HOLDING<0 THEN BEGIN IF t2 THEN BEGIN //平空单 空平:SELLSHORT(1,0,market),ORDERQUEUE; END //止损59% IF (C-ENTERPRICE)/ENTERPRICE*100>=ZSDS and kaiguan_kong=0 THEN BEGIN 空损:SELLSHORT(1,0,market),ORDERQUEUE; kaiguan_kong:=1; END //空单移动止盈 IF YDZY=1 THEN BEGIN //每周期判断是否创新低 IF L<LOWPRICE THEN BEGIN LOWPRICE:=L; END //如果盈利超过10点之后回撤达到22%,就平仓,保住盈利 IF ENTERPRICE-LOWPRICE>=KYLDS THEN BEGIN IF (L-LOWPRICE)/LOWPRICE*100>=KHCDS and kaiguan_kong=0 THEN BEGIN //回撤超过的百分比 空赢:SELLSHORT(1,0,MARKET); kaiguan_kong=1; 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 开多条件 and t1 THEN BEGIN 多开:BUY(1=1,ss,market); HIGHPRICE:=ENTERPRICE; //将开仓价保存到最高价 END END END
//持有多单 IF HOLDING>0 THEN BEGIN IF t2 THEN BEGIN {平多单} 多平:SELL(1,0,market),ORDERQUEUE; END //多单管理 //多单止损 IF (ENTERPRICE-C)/ENTERPRICE*100>=ZSDS and kaiguan_duo=0 THEN BEGIN 多损:SELL(1,0,market),ORDERQUEUE; kaiguan_duo=1; END //多单移动止盈 IF YDZY=1 THEN BEGIN //每周期判断是否创新高 IF H>HIGHPRICE THEN BEGIN HIGHPRICE:=H; END //如果盈利超过10点之后回撤达到22%,就平仓,保住盈利 IF HIGHPRICE-ENTERPRICE>=DYLDS THEN BEGIN IF (HIGHPRICE-H)/HIGHPRICE*100>=DHCDS and kaiguan_duo=0 THEN BEGIN //回撤超过22% 多赢:SELL(1,0,MARKET); kaiguan_duo=1; 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 开空条件 and t1 THEN BEGIN 空开:BUYSHORT(1=1,ss,market); LOWPRICE:=ENTERPRICE; END END END
if time=closetime(0) then begin kaiguan_duo:=0; kaiguan_kong:=0; end
此主题相关图片如下:tm截图未命名.png

[此贴子已经被作者于2013/10/24 12:35:39编辑过]
|