设计的思路是,MA3上穿MA7时,开多,如果连续2天收盘价大于MA17,加多。
第一次平多是MA7下穿MA3时,平一半多;连续2天收盘价小于MA17时,多全平;
反过来一样,但是实际运行中发现,会不停的加仓开多开空,请问这是哪里写错了吗?请指教,谢谢
VARIABLE:mark:=0;
ss:2;//
MA3:=MA(CLOSE,3); //
MA7:=MA(CLOSE,7); //
MA17:=MA(CLOSE,17);
KD1:=CROSS(MA3,MA7);
KD2:=EVERY(C>MA17,2);
KK1:=CROSS(MA7,MA3);
KK2:=EVERY(C<MA17,2);
开多1:KD1 and mark>=0;
开空1:KK1 and mark<=0;
加多:KD2;
加空:KK2;
平多1:KK1;
平空1:KD1;
全平多:KK2;
全平空:KD2;
//
if 开多1 then begin
buy(holding=0,ss,market);
end
if 开空1 then
begin
buyshort(holding=0,ss,market);
end
if 加多 then begin
buy(holding>0,ss,market);
end
if 加空 then
begin
buyshort(holding<0,ss,market);
end
if 平多1 and holding>0 then
begin
sell(holding>0,holding/2,market);
mark:=-1;
end
if 平空1 and holding<0 then
begin
sellshort(holding<0,holding/2,market);
mark:=1;
end
if 全平多 and holding>0 then
begin
sell(holding>0,holding,market);
mark:=-1;
end
if 全平空 and holding<0 then
begin
sellshort(holding<0,holding,market);
mark:=1;
end
应该如何控制,加仓只加一次?
第一次平多或平空只平一半,后面的全平我这样写的可对?
“如果连续2天收盘价大于MA17” 这个条件
基本上只要是个上涨趋势,就会触发很多次, 反正空头的条件也是一样。
是的,我的意思是,控制只加一次该如何用语句来控制呢?请您指点,谢谢
VARIABLE:mark:=0,mark1:=0,mark2:=0;
ss:2;//
MA3:=MA(CLOSE,3); //
MA7:=MA(CLOSE,7); //
MA17:=MA(CLOSE,17);
KD1:=CROSS(MA3,MA7);
KD2:=EVERY(C>MA17,2);
KK1:=CROSS(MA7,MA3);
KK2:=EVERY(C<MA17,2);
开多1:KD1 and mark>=0;
开空1:KK1 and mark<=0;
加多:KD2;
加空:KK2;
平多1:KK1;
平空1:KD1;
全平多:KK2;
全平空:KD2;
if 加多 and mark1=0 then begin
加多仓:buy(holding>0,ss,market);
mark1:=mark1+1;
end
if 加空 and mark2=0 then
begin
加空仓:buyshort(holding<0,ss,market);
mark2:=mark2+1;
end
if 开多1 then begin
buy(holding=0,ss,market);
mark1:=0;
end
if 开空1 then
begin
buyshort(holding=0,ss,market);
mark2:=0;
end
if 平多1 and holding>0 then
begin
sell(holding>0,holding/2,market);
mark:=-1;
end
if 平空1 and holding<0 then
begin
sellshort(holding<0,holding/2,market);
mark:=1;
end
if 全平多 and holding>0 then
begin
sell(holding>0,holding,market);
mark:=-1;
end
if 全平空 and holding<0 then
begin
sellshort(holding<0,holding,market);
mark:=1;
end
用全局变量控制下。另外我把加仓代码置开仓前面了。
还有就是这个加仓,我只限制在开仓之后的加仓。如果中间减仓后又满足 加仓的条件也是忽略掉的。
以下是引用FireScript在2020/9/8 13:37:42的发言:
还有就是这个加仓,我只限制在开仓之后的加仓。如果中间减仓后又满足 加仓的条件也是忽略掉的。
谢谢谢谢,我来测试下
请问下,为什么要把加仓的代码放到开仓前面呢?这样会不会有些就不开了?
也可以放在后面。只是这样 会有加仓 开仓在一个K的情况。就是这么个区分了。