這是根據軟件經典的DS日內模型改變的價差套利版本,因為今年行情反向套利機會很多,如七八九月份的豆油豆粕價差反向套利,鑒于此,我就把原先收盤價替換成價差,賭的是日內價差的持續擴大,但編寫出來之后發現幾個問題
1,豆粕可以開倉,豆油無法開倉
2,無法達成日內平倉
3,信號不準確
請版主提供一些思路或講解,謝謝
更正一下,函數為
INPUT:N(1,1,100,1),K1(0.7,0.1,1,0.1),K2(0.7,0.1,1,0.1),NMIN(10,1,100,1),SS(1,1,10000,1);
C1:="Y01$CLOSE";
C2:="M01$CLOSE";
Spread:=C1-C2;
CYC:=BARSLAST(DATE<>REF(DATE,1))+1;
Spread[1]:REF(Spread,1);
HH:HHV(Spread[1],225);
LL:=LLV(Spread[1],225);
OO:=valuewhen(date<>ref(date,1),Spread);
T1:=TIME>OPENTIME(1) AND TIME
手數:=SS;
//交易條件
浮動區間:=HH-LL;//RANGE
上軌:OO+K1*浮動區間,,COLORYELLOW;
下軌:OO-K2*浮動區間,,COLORYELLOW;
//交易條件
開多條件:=Spread>上軌 AND HOLDING=0;
開空條件:=Spread<下軌 AND HOLDING=0;
//交易系統
IF STRCMP(STKLABEL,'YO1') = 0 THEN
BEGIN
SELL(T2,手數,MARKET);
BUY(開多條件 AND T1 AND CYC>1 AND TIME<1445,手數,MARKET);
BUYSHORT(開空條件 AND T1 AND CYC>1 AND TIME<1445,1,MARKET);
SELLSHORT(T2,手數,MARKET)
END
IF STRCMP(STKLABEL,'M01') = 0 THEN
BEGIN
SELL(T2,手數,MARKET);
BUY(開空條件 AND T1 AND CYC>1 AND TIME<14450,1,MARKET);
BUYSHORT(開多條件 AND T1 AND CYC>1 AND TIME<1445,1,MARKET);
SELLSHORT(T2,手數,MARKET)
end
T1:=TIME>OPENTIME(1) AND TIME<CLOSETIME(0)-NMIN*100;
T2:=TIME>=CLOSETIME(0)-NMIN*100;
這是界定了日內階段開平倉的時間