持仓2手空单的情况下
当C大于5日线平仓一手空单,当C大于10日线平全仓。怎么写?
sellshort(cross(c,ma(c,5)),1,market);
sellshort(cross(c,ma(c,10)),holding,market);
如果2个平仓是或的关系的话,就上面这样操作就行了。谁触发就执行谁。
单是 大于5日线平1手后,股价来回在5日线上下波动,结果第二手也在第二次C穿过5日线时平仓了。那我想在穿越10日线平剩下一手的想法落空了啊,怎么办
你如果要这样的逻辑的话,就只能用全局变量操作了。
VARIABLE:mark:=0;
if cross(c,ma(c,5)) and mark=0 and holding<0 then
begin
sellshort(1,1,market);
mark:=1;//五日线平仓时候纪录下
end
if cross(c,ma(c,10)) and mark=1 and holding<0 then
begin
sellshort(1,holding,market);
mark:=0;//十日线平仓时候重置下全局变量
end
你参考这个逻辑 应用到你代码里就行了。
平多条件:=cross(ma1,c);//平多条件
平空条件:=cross(c,ma1);//平空条件
PK:=C>三多头20;
PD:=C<三多头20;
平多条件1:=COUNT(PK,2)=2;
平空条件1:=COUNT(PK,2)=2;
//交易系统
BUY(开多条件 AND HOLDING=0,2,MARKET);
BUYSHORT(开空条件 AND HOLDING=0,2,MARKET);
SELL(平多条件 AND HOLDING>0,1,MARKET);
SELLSHORT(平空条件 AND HOLDING<0,1,MARKET);
VARIABLE:mark:=0;
mark:=0;
mark:=1;
if 平空条件1 and mark=1 and holding<0 then
begin
sellshort(1,holding,market);
//十日线平仓时候重置下全局变量
end
IF 平多条件1 and mark=1 and HOLDING>0 THEN
BEGIN//若持有多单
SELL(1,HOLDING,MARKET);//平多单
END
老师 这样写行吗
VARIABLE:mark1:=0,mark2:=0;
平多条件:=cross(ma1,c);//平多条件
平空条件:=cross(c,ma1);//平空条件
PK:=C>三多头20;
PD:=C<三多头20;
平多条件1:=COUNT(PK,2)=2;
平空条件1:=COUNT(PK,2)=2;
//交易系统
BUY(开多条件 AND HOLDING=0,2,MARKET);
BUYSHORT(开空条件 AND HOLDING=0,2,MARKET);
if 平多条件 AND HOLDING>0 and mark1=0 then
begin
SELL(1,1,MARKET);
mark1:=1;
end
if 平空条件 AND HOLDING>0 and mark2=0 then
begin
SELLSHORT(1,1,MARKET);
mark2:=1;
end
if 平空条件1 and mark2=1 and holding<0 then
begin
sellshort(1,holding,market);
mark2:=0;
//十日线平仓时候重置下全局变量
end
IF 平多条件1 and mark1=1 and HOLDING>0 THEN
BEGIN//若持有多单
SELL(1,HOLDING,MARKET);//平多单
mark1:=0;
END
多空要用2个全局变量分开来做的。
老师,粘贴你这代码进去 老提示 BEGEN语句缺少END