VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 4
声望: 0

代码如下:

from vnpy_ctastrategy.template import CtaTemplate
from vnpy.trader.object import TickData,BarData,OrderData,TradeData
from vnpy_ctastrategy.base import StopOrder
from vnpy.trader.utility import BarGenerator,ArrayManager
from vnpy.trader.constant import Interval

class TickTest(CtaTemplate):

author=""

tick_last_price:float=0.0
tick_hour:int=0
tick_minute:int=0
tick_second:int=0
tick_up_limit:float=0
tick_down_limit:float=0

parameters=[]

variables=[
    "tick_last_price",
    "tick_hour",
    "tick_minute",
    "tick_second",
    "tick_up_limit",
    "tick_down_limit"
]

def __init__(self, cta_engine, strategy_name, vt_symbol, setting): 
    super().__init__(cta_engine, strategy_name, vt_symbol, setting) 
    pass

def on_init(self):
    """策略初始化"""
    print("on_init")
    self.put_event()

def on_start(self):
    """策略启动"""
    print("on_start")
    self.put_event() 

def on_stop(self):
    """策略停止"""
    self.put_event()  

def on_tick(self,tick:TickData): 
    """收到tick时调用该函数"""  
    print("on_tick")     
    self.tick_last_price=tick.last_price
    self.tick_hour=tick.datetime.hour
    self.tick_minute=tick.datetime.minute
    self.tick_second=tick.datetime.second
    self.tick_up_limit=tick.limit_up
    self.tick_down_limit=tick.limit_down
    self.put_event()

def on_order(self,order:OrderData):
    """交易所委托出现变化时调用该函数"""
    pass

def on_stop_order(self, stop_order: StopOrder):
    """本地的停止单委托发生变化时调用该函数"""
    pass

def on_trade(self, trade: TradeData):
    """成交时调用该函数"""
    pass
Member
avatar
加入于:
帖子: 4
声望: 0

on_init 和 on_start都有打印出来,为什么tick就收不到呢,有神人指导吗?

Member
avatar
加入于:
帖子: 4669
声望: 285

可以去vnpy_ctastrategy.engine的process_tick_event函数下打印看看。按道理如果策略初始化了就会把tick传进策略实例的
description

Member
avatar
加入于:
帖子: 54
声望: 0

polaris1973 wrote:

on_init 和 on_start都有打印出来,为什么tick就收不到呢,有神人指导吗?

如果你实盘的CTP的夜盘交易时间是显示的交易日时间,那么你早上9点前在未有新数据的时候启动,你的将不会收到新的tick推动,因在bar合成类中,被return了。不知道你是不是这个问题,我就是遇到这个bug了。

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

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】