
等级: 新手上路
- 注册:
- 2022-5-27
- 曾用名:
|
VARIABLE:n=0,ss=1,KC_ZH='10000000',KC_PZ='V00';
m5:ma(c,5);
m10:ma(c,10);
kd:ref(cross(m5,m10),1);
kk:ref(cross(m10,m5),1);
if kd then begin:
n:=ss;
end
if kk then begin:
n:=-1*ss;
end
平空:TSELLSHORT(kd,ss,LMT,OPEN,0,KC_ZH,KC_PZ),ORDERQUEUE; //平空信号
开多:TBUY(kd AND TSELLHOLDINGEX(KC_ZH,KC_PZ,2)=0 and TBUYHOLDINGEX(KC_ZH,KC_PZ,2)=0,ss,LMT,OPEN,0,KC_ZH,KC_PZ),ORDERQUEUE; //开多信号
平多:TSELL(kk,ss,LMT,OPEN,0,KC_ZH,KC_PZ),ORDERQUEUE; //平多信号
开空:TBUYSHORT(kk AND TSELLHOLDINGEX(KC_ZH,KC_PZ,2)=0 and TBUYHOLDINGEX(KC_ZH,KC_PZ,2)=0,ss,LMT,OPEN,0,KC_ZH,KC_PZ),ORDERQUEUE; //开空信号
//开仓撤单
if currenttime-TORDERTIME(0,1 )>20 THEN BEGIN
TCANCELEX(1,0,KC_ZH,KC_PZ),ALLOWREPEAT;
end
//多单信号校正
if TISREMAINEX(0,KC_ZH,KC_PZ)=0 AND n>0 and TSELLHOLDINGEX(KC_ZH,KC_PZ,2)>0 and TBUYHOLDINGEX(KC_ZH,KC_PZ,2)=0 then BEGIN
TSELLSHORT(1,0,MKT,0,0,KC_ZH,KC_PZ),ALLOWREPEAT;
TBUY(1,n,MKT,0,0,KC_ZH,KC_PZ),ALLOWREPEAT;
end
if TISREMAINEX(0,KC_ZH,KC_PZ)=0 AND n>0 and TSELLHOLDINGEX(KC_ZH,KC_PZ,2)=0 and TBUYHOLDINGEX(KC_ZH,KC_PZ,2)<n then BEGIN
TBUY(1,n-TBUYHOLDINGEX(KC_ZH,KC_PZ,2),MKT,0,0,KC_ZH,KC_PZ),ALLOWREPEAT;
end
if TISREMAINEX(0,KC_ZH,KC_PZ)=0 AND n>0 and TSELLHOLDINGEX(KC_ZH,KC_PZ,2)=0 and TBUYHOLDINGEX(KC_ZH,KC_PZ,2)>n then BEGIN
TSELL(1,TBUYHOLDINGEX(KC_ZH,KC_PZ,2)-n,MKT,0,0,KC_ZH,KC_PZ),ALLOWREPEAT;
end
//空单信号校正
if TISREMAINEX(0,KC_ZH,KC_PZ)=0 AND n<0 and TBUYHOLDINGEX(KC_ZH,KC_PZ,2)>0 and TSELLHOLDINGEX(KC_ZH,KC_PZ,2)=0 then BEGIN
TSELL(1,0,MKT,0,0,KC_ZH,KC_PZ),ALLOWREPEAT;
TBUYSHORT(1,ABS(n),MKT,0,0,KC_ZH,KC_PZ),ALLOWREPEAT;
end
if TISREMAINEX(0,KC_ZH,KC_PZ)=0 AND n<0 and TBUYHOLDINGEX(KC_ZH,KC_PZ,2)=0 and (TSELLHOLDINGEX(KC_ZH,KC_PZ,2)+n)<0 then BEGIN
TBUYSHORT(1,ABS(n+TSELLHOLDINGEX(KC_ZH,KC_PZ,2)),MKT,0,0,KC_ZH,KC_PZ),ALLOWREPEAT;
end
if TISREMAINEX(0,KC_ZH,KC_PZ)=0 AND n<0 and TBUYHOLDINGEX(KC_ZH,KC_PZ,2)=0 and (TSELLHOLDINGEX(KC_ZH,KC_PZ,2)+n)>0 then BEGIN
TSELLSHORT(1,TSELLHOLDINGEX(KC_ZH,KC_PZ,2)+n,MKT,0,0,KC_ZH,KC_PZ),ALLOWREPEAT;
end
//空仓信号校正
if TISREMAINEX(0,KC_ZH,KC_PZ)=0 AND n=0 AND TBUYHOLDINGEX(KC_ZH,KC_PZ,2)>0 then BEGIN
TSELL(1,0,MKT,0,0,KC_ZH,KC_PZ),ALLOWREPEAT;
END
if TISREMAINEX(0,KC_ZH,KC_PZ)=0 AND n=0 AND TSELLHOLDINGEX(KC_ZH,KC_PZ,2)>0 then BEGIN
TSELLSHORT(1,0,MKT,0,0,KC_ZH,KC_PZ),ALLOWREPEAT;
end
专家好,我之前编写了一个策略,在后台交易中,账户仓位校正的时候,会出现多开。例如,信号是1手多单,通过校正,账户里面会直接开2手多单;之后会平掉一手。请问这是什么原因造成的,希望得到你专业的解答,谢谢!!!!!!!!!!!!!
|
|