咨询内容:
图表交易,框架引用股指指数下单,在启动交易设置勾选了品种映射,没有及时设置更换合约品种,原本IF1406品种上持单,但行情持仓最高的合约品种已经换为IF1407。
1、请教代码中如何实现品种的更换?
2、假设更换品种前要平掉当前的仓位,该如何编写?
金字塔客服: 1.2图表做不到
用户回复:
如果你连合约都懒得手工映射切换,那么你可以映射到IF00连续合约上交易,这样金字塔会自动为你切换合约.
换仓功能金字塔自身不提供,你可以考虑使用专业版的VBA二次开发功能,论坛高级区有现成的自动换月插件
网友回复: 1、在后台模型中条件设置每月14号大余等于10点测试持仓最大的品种,提示该品种,提醒换仓,请教如何编写?2、如果更换掉品种,如何在后台代码中进行先平仓?
网友回复:
//说明:此策略为后台自动移仓策略
//使用说明:后台加载此策略,时间可设置为每10分钟检测一次,当持有的仓位不是主力合约时自动换到主力合约。
variable:AccountID=800000;
//指定交易账户
M1:=MONTH();
HY1:=IF + If(M1>9,M1,0+numtostr(M1,0));
//当前月合约
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;
//上月买入持仓
PreSellHold:tsellholdingex(AccountID,HY1,1),linethick0;
//上月卖出持仓
if PreBuyHold>0 then begin //多单移仓
tSell(1,PreBuyHold,mkt,0,0,AccountID,HY1);
tbuy(1,PreBuyHold,mkt,0,0,AccountID,HY2);
end
if PreSellHold>0 then begin //空单移仓
tSellShort(1,PreSellHold,mkt,0,0,AccountID,HY1);
tbuyShort(1,PreSellHold,mkt,0,0,AccountID,HY2);
end
end
//这个策略专门针对股指来实现的,如果需要用于商品,应做些修改