圖表交易,框架引用股指指數(shù)下單,在啟動(dòng)交易設(shè)置勾選了品種映射,沒有及時(shí)設(shè)置更換合約品種,原本IF1406品種上持單,但行情持倉(cāng)最高的合約品種已經(jīng)換為IF1407。
1、請(qǐng)教代碼中如何實(shí)現(xiàn)品種的更換?
2、假設(shè)更換品種前要平掉當(dāng)前的倉(cāng)位,該如何編寫?
如果你連合約都懶得手工映射切換,那么你可以映射到IF00連續(xù)合約上交易,這樣金字塔會(huì)自動(dòng)為你切換合約.
換倉(cāng)功能金字塔自身不提供,你可以考慮使用專業(yè)版的VBA二次開發(fā)功能,論壇高級(jí)區(qū)有現(xiàn)成的自動(dòng)換月插件
//說(shuō)明:此策略為后臺(tái)自動(dòng)移倉(cāng)策略
//使用說(shuō)明:后臺(tái)加載此策略,時(shí)間可設(shè)置為每10分鐘檢測(cè)一次,當(dāng)持有的倉(cāng)位不是主力合約時(shí)自動(dòng)換到主力合約。
variable:AccountID='800000'; //指定交易賬戶
M1:=MONTH();
HY1:='IF' + If(M1>9,M1,'0'+numtostr(M1,0)); //當(dāng)前月合約
HY2:='IF' + If(M1+1>9,M1+1,'0'+numtostr(M1+1,0));//下月合約
HY0:='IF00';
VHY0:CALLSTOCK(HY0,VTVOL,6,0),linethick0;
VHY1:CALLSTOCK(HY1,VTVOL,6,0),linethick0;
VHY2:CALLSTOCK(HY2,VTVOL,6,0),linethick0;
if VHY1=VHY0 then CurMonth:=Month();
if VHY2=VHY0 then CurMonth:=Month()+1;
主力:CurMonth,linethick0;
if CurMonth>M1 then begin
PreBuyHold:tbuyholdingex(AccountID,HY1,1),linethick0; //上月買入持倉(cāng)
PreSellHold:tsellholdingex(AccountID,HY1,1),linethick0; //上月賣出持倉(cāng)
if PreBuyHold>0 then begin //多單移倉(cāng) www.tumamayizhan.com
tSell(1,PreBuyHold,mkt,0,0,AccountID,HY1);
tbuy(1,PreBuyHold,mkt,0,0,AccountID,HY2);
end
if PreSellHold>0 then begin //空單移倉(cāng)
tSellShort(1,PreSellHold,mkt,0,0,AccountID,HY1);
tbuyShort(1,PreSellHold,mkt,0,0,AccountID,HY2);
end
end
//這個(gè)策略專門針對(duì)股指來(lái)實(shí)現(xiàn)的,如果需要用于商品,應(yīng)做些修改