编写了一个股指期货的程序,想根据大盘指数上穿均线来买卖,出现一点问题,请教老师帮忙看看。
A1:="999999$CLOSE"; //这行也可以改成A1:=CALLSTOCK('999999',VTCLOSE,6,0);
A2:=MA(A1,5);
A3:=MA(A1,10);
平空:SELLSHORT(CROSS(A1,A2) OR CROSS(A1,A3),HOLDING,THISCLOSE);
IF CROSS(A2,A1) THEN
开空:BUYSHORT(HOLDING=0,1,THISCLOSE);
IF CROSS(A3,A1) THEN
开空:BUYSHORT(HOLDING=0,1,THISCLOSE);
调试都通过了,但是用在图表交易中,都提示我第一行解释错误,请老师帮忙看看,是否有隐藏的问题,谢谢
A0:=CALLSTOCK('399106',VTCLOSE,6,0);
A1:=CALLSTOCK('399106',VTCLOSE,6,-1);
A2:=CALLSTOCK('399106',VTCLOSE,6,-2);
A3:=CALLSTOCK('399106',VTCLOSE,6,-3);
A4:=CALLSTOCK('399106',VTCLOSE,6,-4);
A5:=CALLSTOCK('399106',VTCLOSE,6,-5);
A6:=CALLSTOCK('399106',VTCLOSE,6,-6);
A7:=CALLSTOCK('399106',VTCLOSE,6,-7);
A8:=CALLSTOCK('399106',VTCLOSE,6,-8);
A9:=CALLSTOCK('399106',VTCLOSE,6,-9);
A10:=CALLSTOCK('399106',VTCLOSE,6,-10);
A11:=CALLSTOCK('399106',VTCLOSE,6,-11);
A12:=CALLSTOCK('399106',VTCLOSE,6,-12);
A13:=CALLSTOCK('399106',VTCLOSE,6,-13);
A14:=CALLSTOCK('399106',VTCLOSE,6,-14);
A15:=CALLSTOCK('399106',VTCLOSE,6,-15);
A16:=CALLSTOCK('399106',VTCLOSE,6,-16);
A17:=CALLSTOCK('399106',VTCLOSE,6,-17);
A18:=CALLSTOCK('399106',VTCLOSE,6,-18);
A19:=CALLSTOCK('399106',VTCLOSE,6,-19);
AA5:=(A0+A1+A2+A3+A4)/5;
AA10:=(A0+A1+A2+A3+A4+A5+A6+A7+A8+A9)/10;
AA15:=(A0+A1+A2+A3+A4+A5+A6+A7+A8+A9+A10+A11+A12+A13+A14)/15;
AA20:=(A0+A1+A2+A3+A4+A5+A6+A7+A8+A9+A10+A11+A12+A13+A14+A15+A16+A17+A18+A19)/20;
AFZ:=CALLSTOCK('399106',VTCLOSE,1,0);
PK:=CROSS(AFZ,AA20) or cross(afz,aa5) or cross(afz,aa10) or cross(afz,aa15);
平空:SELLSHORT(PK,HOLDING,MARKET);
IF CROSS(AA5,AFZ) THEN
开空1:BUYSHORT(HOLDING=0,1,MARKET);
IF CROSS(AA10,AFZ) THEN
开空2:BUYSHORT(HOLDING=0,1,MARKET);
IF CROSS(AA15,AFZ) THEN
开空3:BUYSHORT(HOLDING=0,1,MARKET);
IF CROSS(AA20,AFZ) THEN
开空4:BUYSHORT(HOLDING=0,1,MARKET);
求助一下,请金哲老师帮忙看看,能不能将上面的公式进行简化,感觉这样编写既繁琐又增加计算量。
aa5:=stkindi('399106','ma.ma1(5)',0,6);
aa10:=stkindi('399106','ma.ma1(10)',0,6);
aa15:=stkindi('399106','ma.ma1(15)',0,6);
aa20:=stkindi('399106','ma.ma1(20)',0,6);
aa5:=stkindi('399106','ma.ma1(5)',0,6,-1);
aa10:=stkindi('399106','ma.ma1(10)',0,6,-1);
aa15:=stkindi('399106','ma.ma1(15)',0,6,-1);
aa20:=stkindi('399106','ma.ma1(20)',0,6,-1);
AFZ:=CALLSTOCK('399106',VTCLOSE,1,0);
KDPK:=CROSS(AFZ,AA20) or cross(afz,aa5) or cross(afz,aa10) or cross(afz,aa15);
平空:TSELLSHORT(KDPK,THOLDING,MKT);
开多:TBUY(KDPK AND THOLDING<=0,1,MKT);
KKPD:=CROSS(AA5,AFZ) OR CROSS(AA10,AFZ) OR CROSS(AA15,AFZ) OR CROSS(AA20,AFZ);
开空:TBUYSHORT(KKPD AND THOLDING>=0,1,MKT);
平多:TSELL(KKPD,THOLDING,MKT);
金哲老师,帮忙看看上面的代码运行有没有问题?
另外这里THOLDING换成TBUYHOLDING(1)和TSELLHOLDING(1)可以吧?
还有,图表上有没有专门的多头持仓和空头持仓?