等级: 管理员
- 注册:
- 2021-5-18
- 曾用名:
|
期货自动换月移仓策略
期货合约除了各月份合约外,一般都包含指数与连续合约。当我们使用连续合约交易时,存在自动换月移仓问题。
连续合约换月规制:下月品种当日成交量大于连续对应的当前品种,第二天自动换月,连续合约对应下月。
代码
//策略:自动移仓换月策略
//品种:沪铜、焦炭(其它品种复制代码即可)
//适用范围:后台程序化,每日开盘后自动执行一次即可
//修订时间:2017.04.10
ACCOUNTID:='800000'; //要执行自动换月的账户
//移仓换月的品种
HY1:='CU00';
HY2:='J00';
//连续对应的主力月份合约
ZL:=DYNAINFO2(210,HY1);
ZL2:=DYNAINFO2(210,HY2);
//当日主力合约月份
IF CURRENTTIME>140000 THEN
BEGIN
LSZL:=EXTGBSTRINGSET('LSZL',ZL);
LSZL2:=EXTGBSTRINGSET('LSZL2',ZL2);
END
//品种1自动换月移仓
IF STRCMP(ZL,LSZL)<>0 THEN BEGIN
PREBUYHOLD:TBUYHOLDINGEX(ACCOUNTID,LSZL,1),LINETHICK0; //上月买入持仓
PRESELLHOLD:TSELLHOLDINGEX(ACCOUNTID,LSZL,1),LINETHICK0; //上月卖出持仓
IF PREBUYHOLD>0 THEN BEGIN //多单移仓
TSELL(1,PREBUYHOLD,MKT,0,0,ACCOUNTID,LSZL);
TBUY(1,PREBUYHOLD,MKT,0,0,ACCOUNTID,ZL);
END
IF PRESELLHOLD>0 THEN BEGIN //空单移仓
TSELLSHORT(1,PRESELLHOLD,MKT,0,0,ACCOUNTID,LSZL);
TBUYSHORT(1,PRESELLHOLD,MKT,0,0,ACCOUNTID,ZL);
END
END
//品种2移仓
IF STRCMP(ZL2,LSZL2)<>0 THEN BEGIN
PREBUYHOLD2:TBUYHOLDINGEX(ACCOUNTID,LSZL2,1),LINETHICK0; //上月买入持仓
PRESELLHOLD2:TSELLHOLDINGEX(ACCOUNTID,LSZL2,1),LINETHICK0; //上月卖出持仓
IF PREBUYHOLD2>0 THEN BEGIN //多单移仓
TSELL(1,PREBUYHOLD2,MKT,0,0,ACCOUNTID,LSZL2);
TBUY(1,PREBUYHOLD2,MKT,0,0,ACCOUNTID,ZL2);
END
IF PRESELLHOLD2>0 THEN BEGIN //空单移仓
TSELLSHORT(1,PRESELLHOLD2,MKT,0,0,ACCOUNTID,LSZL2);
TBUYSHORT(1,PRESELLHOLD2,MKT,0,0,ACCOUNTID,ZL2);
END
END
|
|