vn.py官网
开源量化社区
Member
avatar
加入于:
帖子: 240
声望: 56

1 目前的CTA策略只有一个合约

class CtaTemplate(ABC):
    ... ...
    def __init__(
        self,
        cta_engine: Any,
        strategy_name: str,   
        vt_symbol: str,             # 合约代码
        setting: dict,
    ):

用户策略启动后,CTA策略引擎帮助订阅代码为vt_symbol合约的行情,用户策略收到tick推送之后,合成1分钟bar、N分钟bar乃至小时日线的bar。
策略在on_xmin_bar()函数中实现交易信号的计算并且完成交易逻辑。
我们可以知道,策略使用vt_symbol合约的行情指导了对vt_symbol合约的交易。

2 CTA策略的应该包含两个合约参数:指标合约和交易合约

2.1 何为交易合约

交易合约是指CTA策略要交易的合约,目前CTA策略里的合约参数就是交易合约,如果是期货的话,我们一般都选择主力合约来交易。

2.2 何为指标合约

指标合约是指CTA策略用来进行各种指标计算的合约,它可以和要交易的合约相同,也可以不同。可以是交易合约所在品种或者板块的指数,也可以是交易合约所在品种的指数或者主连合约,也可以选择如rqdata中的经过主力合约如rb888,rb999之类的主连合约,这样合约是通过行主力合约间的升水和贴水的方式得到的,没有主连合约那样的在主力合约去换时产生的巨大跳空,更加合理。

2.3 增加指标合约的好处

  1. 我们一般都选择主力合约,因为流动性好,在品种合约中占据主导地位。
  2. 主力合约会变化,到期之后需要即时换约
  3. 主力合约的K线通常较短,通常较短,长的7,8个月,短的2,3个月,不利于指标分析。一个期货合约上线通常不足一年,它成为主力合约的时间更短,它在非主力合约时期和成为主力合约之后的行情节奏有时候会判若两人!
  4. 主连合约的时间通常较长,可以长达数年,便于指标分析,但是不可以交易!
  5. 合约指数的时间通常也较长,可以长达数年而且连续平滑,便于指标分析,也是不可以交易!
  6. 如果增加了指标合约,分型行情的时候,使用指数或者主连合约来分析,交易的时候才有主力合约来交易,就可以实现自动换约,及时跟踪到最新的主力合约,有可以避免新近主力合约K线数量太少的问题,一举两得!

3 如何修改?

要做到这一点,需要修改的类包括:

3.1 修改CtaEngine:

对send_order等需要需要区分对策略的交易合约发送委托单,
策略初始化时需要同时订阅指标合约和交易合约的行情。

3.2 修改CtaTemplate:

加指标合约参数vt_symbol1,
指标计算时时有指标合约的行情数据进行进行
交易时使用交易合约进行交易

3.3 修改CTA的StrategyManager

使得在CTA策略在创建时可以输入指标合约

Member
avatar
加入于:
帖子: 138
声望: 13

非常赞同。
从使用经验来看,这其实也是多年以来被第三方平台培养出来的————指数映射合约这个习惯。

反过来讲,指数映射合约的绩效在长期看确实优于合约下合约(至少是大多数策略)。

Member
avatar
加入于:
帖子: 138
声望: 13

直接基于portfolio_manager改造吧,这个是多品种的,构造了指数后从这里多品种来做。

Member
avatar
加入于:
帖子: 240
声望: 56

kingmo888 wrote:

直接基于portfolio_manager改造吧,这个是多品种的,构造了指数后从这里多品种来做。

谢谢,一直没有关注portfolio_strategy,原来是这样的,不错!

Member
avatar
加入于:
帖子: 138
声望: 13

hxxjava wrote:

kingmo888 wrote:

直接基于portfolio_manager改造吧,这个是多品种的,构造了指数后从这里多品种来做。

谢谢,一直没有关注portfolio_strategy,原来是这样的,不错!

后来经过分析,感觉还是不如cta引擎来的方便。因为要维护理论持仓的时候,真的挺麻烦的。

Member
avatar
加入于:
帖子: 240
声望: 56

kingmo888 wrote:

hxxjava wrote:

kingmo888 wrote:

直接基于portfolio_manager改造吧,这个是多品种的,构造了指数后从这里多品种来做。

谢谢,一直没有关注portfolio_strategy,原来是这样的,不错!

后来经过分析,感觉还是不如cta引擎来的方便。因为要维护理论持仓的时候,真的挺麻烦的。

用米筐的某个主力合约前复权的xx888来跟踪主力合约的做法确实比较合理些,只是xx888无法订阅,在实时行情下需要对指标合约进行合成处理!。

Member
avatar
加入于:
帖子: 138
声望: 13

hxxjava wrote:

kingmo888 wrote:

hxxjava wrote:

kingmo888 wrote:

直接基于portfolio_manager改造吧,这个是多品种的,构造了指数后从这里多品种来做。

谢谢,一直没有关注portfolio_strategy,原来是这样的,不错!

后来经过分析,感觉还是不如cta引擎来的方便。因为要维护理论持仓的时候,真的挺麻烦的。

用米筐的某个主力合约前复权的xx888来跟踪主力合约的做法确实比较合理些,只是xx888无法订阅,在实时行情下需要对指标合约进行合成处理!。

咱们已经有非常优秀的指数实时合成方案啦,即插即用的。目前我已使用。

适合所有gateway类型的指数合成方案
https://www.vnpy.com/forum/topic/5242-gua-he-suo-you-gatewaylei-xing-de-zhi-shu-he-cheng-fang-an

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3

沪公网安备 31011502017034号