1、多单止盈或止损后,往往会达到多单条件,又开了多单,我想多单止盈或止损后,不再开多单,等空单出信号后再开仓。
2、空单反之。
这个用什么来控制,请老师帮我写一下,谢谢。
http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=169010
这里刚好有个类似的例子,你可以看下。思路就是用全局变量标记下就行。
我稍迟点会提供个范例。
[此贴子已经被作者于2019/3/27 14:26:45编辑过]
VARIABLE:lt1:=0,lt2:=0;
ma5:ma(c,5);
ma10:ma(c,10);
ma20:ma(c,20);
cd1:ma5>ma10 and ma10>ma20;//开多条件
cd2:ma5<ma10 and ma10<ma20;//开空条件
if cd1 and lt1=0 then buy(holding=0,1,market);
if abs(c-ENTERPRICE)>=100*MINDIFF and holding>0 then //多头100点止盈止损
begin
lt1:=1;
lt2:=0;
sell(holding>0,holding,market);
end
if cd2 and lt2=0 then buyshort(holding=0,1,market);
if abs(ENTERPRICE-c)>=100*MINDIFF and holding<0 then //空头100止盈止损
begin
lt2:=1;//平空之后限制下次重复开同方向仓位
lt1:=0;//平空之后解除对开多仓的限制sellshort(holding<0,holding,market);
end
一个简单范例,止盈止损均是100点止盈止损。在触发止盈止损的时候务必对全局变量进行处理。
参考这个代码先理解下,然后再处理你自己的代码。
老师,为什么我这样写还是要开同一方向的仓。
input:N(5,1,500,5),N1(10,1,500,5),N2(20,1,500,5),N3(30,1,500,5),;
A1:=MA(CLOSE,N);
A2:=MA(CLOSE,N1);
A3:=MA(CLOSE,N2);
A4:=MA(CLOSE,N3);
BB:=CLOSE<A1 AND A1<A2 AND A2<A3 AND A3<A4 AND CLOSE<OPEN;
AA:=OPEN>A1 AND A1>A2 AND A2>A3 AND A3>A4 AND CLOSE>OPEN;
VARIABLE:lt1:=0,lt2:=0;
if c>A1 then
begin
SELLSHORT(holding<0,1,marketr);//平空
lt2:=1;//平空之后限制下次重复开同方向仓位
lt1:=0;//平空之后解除对开多仓的限制
end
if AA and lt1=0 then
begin
buy(holding=0,1,marketr)IGNORECHECKPRICE;//开多
end
if c<A1 then begin
SELL(holding>0,1,marketr)IGNORECHECKPRICE;//平多
lt1:=1;//平多之后限制下次重复开同方向仓位
lt2:=0;//平多之后解除对开空仓的限制
end
if BB and lt2=0 then
begin
BUYSHORT(holding=0,1,marketr)IGNORECHECKPRICE;//开空
end
此主题相关图片如下:1.png

此主题相关图片如下:2.png

我本地先看下你的代码。
[此贴子已经被作者于2019/4/3 17:22:04编辑过]
需要注意一个细节。
VARIABLE:lt1:=0,lt2:=0;
if c<A1 and holding>0 then
begin
SELL(holding>0,1,marketr),IGNORECHECKPRICE;//平多
lt1:=1;//平多之后限制下次重复开同方向仓位
lt2:=0;//平多之后解除对开空仓的限制
end
if AA and lt1=0 and holding=0 then
begin
buy(holding=0,1,marketr),IGNORECHECKPRICE;//开多
end
if c>A1 and holding<0 then
begin
SELLSHORT(holding<0,1,marketr);//平空
lt2:=1;//平空之后限制下次重复开同方向仓位
lt1:=0;//平空之后解除对开多仓的限制
end
if BB and lt2=0 and holding=0 then
begin
BUYSHORT(holding=0,1,marketr),IGNORECHECKPRICE;//开空
end
红色标注的条件必须加上去,保证全局变量赋值时候实际也是出信号的位置。