# encoding utf-8
import imp
from pickle import NONE
import tbpy
import sys
import datetime as dt
from datetime import datetime
# 自定义策略,须继承 tbpy.IStrategy
class MyStrategy(tbpy.IStrategy):
#策略的初始化:传入最大持仓、撤单时间、账户 ID、合约代码
def __init__(self, interval_secs, account_id, symbol):
super().__init__('MyStrategy')
self._side = 0
self._interval_secs = interval_secs
self._account_id = account_id
self._symbol = symbol
self._account = None
self._pos = None
self._order_dict = {}
self._time= None
self.last_tick = None
self.flag = 0
# 初始化事件函数:订阅 TICK、订阅账户、设置定时器、读取初始仓位
def on_init(self, context):
ret = context.subscribe_tick(symbol=self._symbol)
if ret is not None:
print(ret)
tbpy.exit()
self._account = context.subscribe_account(account_id=self._account_id)
if self._account is None:
print(tbpy.get_last_err())
tbpy.exit()
context.create_timer(interval_millsecs=1*1000)
# BAR 事件函数
def on_bar(self, context, bars, symbol, flag):
pass
# TICK 事件函数:读取目前的持仓,根据规则发送委托。
def on_tick(self, context, tick):
self.last_tick = tick
# 定时器事件函数:委托超时撤单
def on_timer(self, context, id, millsecs):
print(self.last_tick)
if __name__ == '__main__':
# TBPY 模块初始化
ret = tbpy.init()
if ret is False:
sys.exit()
rb_main = tbpy.get_main_instrument(underlying_symbol='ss.SHFE')
if rb_main is None:
sys.exit()
# 声明用户策略对象
strategy = MyStrategy(5, 'xxxx', rb_main.symbol)
# 进入 tbpy 事件循环
tbpy.exe()
tick数据接收几分钟后就程序就自动关闭了,日志也没有任何提示
请把运行窗口的错误消息,截图看看?