以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  交易策略发布专区  (http://www.weistock.com/bbs/list.asp?boardid=10)
----  【期货策略】自动换月移仓  (http://www.weistock.com/bbs/dispbbs.asp?boardid=10&id=150833)

--  作者:FexTel
--  发布时间:2017/4/10 10:43:41
--  【期货策略】自动换月移仓
                                                           期货自动换月移仓策略

期货合约除了各月份合约外,一般都包含指数与连续合约。当我们使用连续合约交易时,存在自动换月移仓问题。
连续合约换月规制:下月品种当日成交量大于连续对应的当前品种,第二天自动换月,连续合约对应下月

代码
//策略:自动移仓换月策略
//品种:沪铜、焦炭(其它品种复制代码即可)
//适用范围:后台程序化,每日开盘后自动执行一次即可
//修订时间: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





[此贴子已经被作者于2017/4/10 10:49:35编辑过]

--  作者:风度翩翩
--  发布时间:2017/4/27 18:44:55
--  
标准版如何搞,楼主?
--  作者:王锋
--  发布时间:2017/6/29 21:42:03
--  
这个只能在专业版的后台程序化下执行
--  作者:wzsunshao
--  发布时间:2017/7/5 10:09:05
--  
碰到一种情况:主力合约换月后,如果同时开着自动持仓同步,自动持仓同步先于自动移仓执行,会发生仓内既有旧主力合约又有新主力合约的情况,再执行自动换月,旧换新,就出现了2倍的新主力合约量,然后持仓同步会再次执行平仓。
两个程序执行先后难以把握,如何解决?  建议自动持仓同步设置启用时间,也可以避免开盘时间段行情波动大执行同步时造成的冲击风险。

--  作者:王锋
--  发布时间:2017/7/5 13:51:45
--  

如果你开启了图表的自动持仓同步,换月天会进行开仓行为,那么你的后台代码只要改一下只针对非主力合约进行平仓操作就好了


--  作者:wzsunshao
--  发布时间:2017/7/5 21:40:24
--  
策略不能正确运行,请看

ZL:=DYNAINFO2(210,HY1); //取得指定品种主力合约  
//当日主力合约月份
IF CURRENTTIME>140000 THEN
BEGIN
LSZL:=EXTGBSTRINGSET(\'LSZL\',ZL);//全局变量LSZL为ZL,LSZL==ZL
END

//品种1自动换月移仓
IF STRCMP(ZL,LSZL)<>0 THEN BEGIN//////该句能成立吗,LSZL==ZL,