-- 作者:FireScript
-- 发布时间:2019/3/27 14:37:48
--
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点止盈止损。在触发止盈止损的时候务必对全局变量进行处理。
参考这个代码先理解下,然后再处理你自己的代码。
|
-- 作者:天天涨停
-- 发布时间:2019/4/3 10:15:41
--
老师,为什么我这样写还是要开同一方向的仓。
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

|
-- 作者:FireScript
-- 发布时间:2019/4/4 14:43:34
--
需要注意一个细节。
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
红色标注的条件必须加上去,保证全局变量赋值时候实际也是出信号的位置。
|