全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
tbpy触发on_fill函数
2021-12-02 11:03

通过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()

realmac2

我昨天也问了这个问题,on_order 和 on_fill 都收不到消息

2021-12-02 12:19
zr822047310
@realmac2

这个问题给你解决了吗

2021-12-02 13:01
realmac2
@zr822047310

没有所以,我才来翻其他帖子

2021-12-02 14:17
bert718
@realmac2

quant软件要先确保登录该交易账户?

2021-12-02 14:22
zr822047310
@bert718

是的

 

2021-12-02 14:39
realmac2
@bert718

用TBPY帮助中心的原代码,修改代码中的交易账号为自己账号,打开TBQ登录交易账号。

运行TBPY代码,

在TBQ中随便下一单。

on_bar,on_timer,on_position都可看到推送内容

on_order,on_fill 无信息

2021-12-02 15:03
bert718
@realmac2

tbpy没有提过订阅交易的范围,默认是只收本策略发的委托或成交。后面版本再支持。

2022-01-11 11:36
realmac

最近的版本更新解决了这个问题,目前TBPY文件 tbpy-1.3.4.5.P2-py3-none-any.whl,路径是 tbquant/tbby/

命令行输入:

pip install tbpy-1.3.4.5.P2-py3-none-any.whl -U

搞定

2022-01-11 11:30
realmac
@realmac

补充:先更新TBQUANT,才能有最新WHL文件

2022-01-11 11:31
您未登录,请先 登录注册 后发表评论
顶部