其他证券

vnpy 策略模板ctaTemplate分析

2018-07-04  本文已影响37人  hongf_

vnpy模板的设计思路

模板类似所有策略的基类,负责桥接 策略引擎 和 具体策略。其抽象并实现了所有策略类的共性的方法。再ctaTemplate类中包括:CtaTemplate 、TargetPosTemplate、BarGenerator、ArrayManager、CtaSignal。其中
1、CtaTemplate :为CTA策略模板基类
2、TargetPosTemplate : 为允许直接通过修改目标持仓来实现交易的策略模板,该模板实现的是开发策略时,无需再调用buy/sell/cover/short这些具体的委托指令, 只需在策略逻辑运行完成后调用setTargetPos设置目标持仓,底层算法会自动完成相关交易,适合不擅长管理交易挂撤单细节的用户
3、BarGenerator : 根据ticker合成不同周期的K线
4、ArrayManager: K线系列管理工具,负责常用技术指标的计算,主要通过talib来实现
5、CtaSignal : 交易信号基类,负责产生信号,不参与具体交易事物

ctaTemplate的整体设计:

  #初始化构造函数,即引入策略引擎实例和
    def __init__(self, ctaEngine, setting):
        """Constructor"""
        self.ctaEngine = ctaEngine

        # 设置参数字典
        if setting:
            d = self.__dict__
            for key in self.paramList:
                if key in setting:
                    d[key] = setting[key]


相关的方法集合

def onStart() 启动策略,再策略类中实现,再示例中,是调用putEvent 发出策略状态的变化事件
def onStop()停止策略,类似onstart
def onTick()  tick行情接受,推送到BarGenerator中 由其的updatetick处理,生产1分钟K
def onOrder( )收到委托变化推送
def onTrader()收到成交推送,
def onBar ( )收到Bar推送bg.updateBar(bar),生产不同周期K
def onStopOrder
def buy( ) 买开,多开;调用sendOrder 发送交易
def sell()卖平,多平;调用sendOrder 发送交易
def short()卖开,即空开;调用sendOrder 发送交易
def cover()买平,空平;调用sendOrder 发送交易
def sendOrder() 调用 策略引擎接口 sendorder发送交易
def cancelOrder()调用策略引擎接口 发送 cancelOder指令
def insertTick () 调用策略引起ctaEngine (insertData)->mainEngin(dbinsert)接口,将tikc保存到mongodb数据库中
def insertBar ()同上,保存的为k线
def loadTick() 从数据库中读取tick,调用ctaEngine的接口
def loadBar() 同上
def writeCtalog ()记录Cta的日志
def getEngineType ()查询当前的运行环境是测试还是实盘
def saveSyncData()保存同步数据到数据库 同样是调用的cta引擎接口
def getPriceTick ( )询最小价格变动,下指令时用到,ctaEngine是从 mainEngine中解析contract获得数据

总体上来看,上面的ctaTemplate的方法分四类:
1、策略管理类:初始化、启停,
2、k线管理类:ontick、onbar
3、指令管理类:委托类(sell、buy、short、cover),onOrder,Ontrader
4、历史数据管理类:insertTick、 insertBar、saveSyncData、getPriceTick

上一篇下一篇

猜你喜欢

热点阅读