通过tbq产生交易信号,在有新信号发出时,事件函数on_fill能否实时在tbpy中触发的,获取该交易订单写信息,并打印出来?(tbpy只获取TBQ产生的交易信号,不发出交易信号),交易账户已经指定好了,但是发出信号时,on_fill触发不了。import tbpy
import sys
import pymysql
from sqlalchemy import create_engine,text
class Read_Data(tbpy.IStrategy):
#策略的初始化:传入均线参数、资金账户 ID、合约代码
def __init__(self, account_id):
super(Read_Data,self).__init__(account_id)
self._account_id = account_id
self._account = None
#on_init 事件:订阅 TICK、订阅 BAR 数据、订阅账户、设置定时器(用于委托超时的撤单)
def on_init(self, context):
self._account = context.subscribe_account(account_id=self._account_id)
if self._account is None:
print(tbpy.get_last_err())
tbpy.exit()
print('on_init success.')
#on_bar 事件:计算均线指标、根据规则发送委托单
def on_bar(self, context, bars, symbol, flag):
if flag != 1:
return
if self._account.get_status() != tbpy.AccountStatus.OnService:
return
#on_tick 事件:接收实时 tick,用于交易委托的委托价确定
def on_tick(self, context, tick):
pass
#on_position 时间:获取最新持仓,用于交易委托的类型判断
def on_position(self, context, position):
print(position)
#on_order 事件:剔除已经处于完成状态的委托单编号,只留下未完成的委托单
def on_order(self, context, order):
pass
#on_fill 事件:打印成交
def on_fill(self, context, fill):
print(fill)
if __name__ == "__main__":
#TBPY 初始化
ret = tbpy.init()
print(ret)
if ret is False:
print('init fail.')
sys.exit()
#定义一个策略对象
strategy1 = Read_Data('*****') #输入账户号
#执行策略
tbpy.exe()
是的
这个问题给你解决了吗