C1:"P00$CLOSE";//棕榈油连续
C2:="Y00$CLOSE";//豆油连续
价差中枢: MA(C2-C1,Z);
价差: C2-C1;
B: ABS(价差-价差中枢);
UPPER: 价差中枢 + K*STD(价差,Z);//布林上轨
LOWER: 价差中枢 - K*STD(价差,Z);//布林下轨
//交易条件
开多条件:=CROSS(价差,LOWER) ;//开多条件
平空条件:=CROSS(价差,价差中枢);//平空条件
开空条件:=CROSS(UPPER,价差) ;//开空条件
平多条件:=CROSS(价差中枢,价差);//平多条件
//交易系统
IF STRCMP(STKLABEL,'P00') = 0 THEN
BEGIN
SELL(平空条件 AND HOLDING>0, 0,LIMITR,C); //平空价差
SELLSHORT(平多条件 AND HOLDING<0,0,LIMITR,C); //平多价差
BUYSHORT(开多条件 AND HOLDING=0,6,LIMITR,C); //做多价差
BUY(开空条件 AND HOLDING=0,6,LIMITR,C); //做空价差
END
IF STRCMP(STKLABEL,'Y00') = 0 THEN
BEGIN
SELL(开空条件 AND HOLDING>0,0,LIMITR,C); //平多价差
SELLSHORT(开多条件 AND HOLDING<0,0,LIMITR,C);//平空价差
BUYSHORT(开空条件 AND HOLDING=0,5,LIMITR,C); //做空价差
BUY(开多条件 AND HOLDING=0,5,LIMITR,C); //做多价差
END
回测是在图表上进行回测的,是否应该转换成后台回测才不会出现这种情况
y00的平仓条件和p00的平仓条件不对应。
IF STRCMP(STKLABEL,'P00') = 0 THEN
BEGIN
SELL(平空条件 AND HOLDING>0, 0,LIMITR,C); //平空价差
SELLSHORT(平多条件 AND HOLDING<0,0,LIMITR,C); //平多价差
BUYSHORT(开多条件 AND HOLDING=0,6,LIMITR,C); //做多价差
BUY(开空条件 AND HOLDING=0,6,LIMITR,C); //做空价差
END
IF STRCMP(STKLABEL,'Y00') = 0 THEN
BEGIN
SELL(平多条件 AND HOLDING>0,0,LIMITR,C); //平多价差
SELLSHORT(平空条件 AND HOLDING<0,0,LIMITR,C);//平空价差
BUYSHORT(开空条件 AND HOLDING=0,5,LIMITR,C); //做空价差
BUY(开多条件 AND HOLDING=0,5,LIMITR,C); //做多价差
END