策略程序的多种入口场景

基于TqSdk开发的策略程序可能在多种场景下运行

用户自己在独立python环境下执行策略程序

一种常见的运行方式是用户自己运行python策略程序, 象这样:

$python3 my_prog.py

在这种场景下,用户需要在TqApi创建时提供必要的参数

TqApi 独立运行模拟交易

创建 TqApi 实例时传入 TqSim

from tqsdk import TqApi, TqSim
api = TqApi(TqSim())

或者不填任何参数, 默认为使用TqSim:

api = TqApi()

TqApi 独立运行实盘交易

创建 TqApi 实例时传入 TqAccount

from tqsdk import TqApi, TqAccount
api = TqApi(TqAccount("H海通期货", "022631", "123456"))

特别的, 如果需要连接到期货公司的特定服务器, 可以在 TqAccount 中指定:

api = TqApi(TqAccount("H海通期货", "022631", "123456", front_broker="8888", front_url="tcp://134.232.123.33:41205"))

如果要连接到自己架设的交易网关, 可以使用:

api = TqApi(TqAccount("H海通期货", "022631", "123456"), url="ws://202.33.21.34:7878/")

TqApi 独立运行回测

创建 TqApi 实例时传入 TqBacktest

from tqsdk import TqApi, TqSim, TqBacktest
api = TqApi(TqSim(), backtest=TqBacktest(start_dt=date(2018, 5, 1), end_dt=date(2018, 10, 1)))

由天勤拉起策略进程

策略程序由天勤拉起执行时, TqApi始终使用默认构造函数, 由天勤提供命令行参数设定策略程序运行方式. 命令行参数包括这些:

  • _action : run/backtest/mdreplay, 指定运行方式

  • _tq_pid : int, 天勤进程ID. 策略进程会监控天勤进程的存活情况, 天勤进程退出时所有由天勤创建的策略进程都会自行终止

  • _tq_url : str, 天勤ws入口. 策略进程通过此端口与天勤通讯

当 _action == run 时, 策略程序按正常交易模式运行, 其它参数:

  • _broker_id : str, 期货公司代码

  • _account_id : str, 用户账号

  • _password : str, 用户密码

当 _action == backtest 时, 策略程序按回测模式运行, 其它参数:

  • _dt_start : YYYYMMDD, 回测起始日期

  • _dt_end : YYYYMMDD, 回测结束日期

当 _action == mdreplay 时, 策略程序按复盘模式运行, 其它参数:

  • _ins_url : url, 合约服务地址

  • _md_url : url, 行情服务地址

天勤发起实盘运行(含快期模拟)

天勤通过命令行参数传递交易账户信息给策略进程:

$ python3 my_prog.py --_action=run --_tq_pid=3233 --_tq_url=ws://127.0.0.1:7777 --_broker_id=快期模拟 --_account_id=13012345678 --_password=123456

天勤发起回测

天勤通过命令行参数传递交易账户信息给策略进程:

$ python3 my_prog.py --_action=backtest --_tq_pid=3233 --_tq_url=ws://127.0.0.1:7777 --_dt_start=20180101 --_dt_end=20180630

天勤发起复盘

天勤先创建好复盘服务器, 再传递:

$ python3 my_prog.py --_action=mdreplay --_tq_pid=3233 --_tq_url=ws://127.0.0.1:7777 --_md_url=ws://239.12.212.34:43232/... --ins_url=http://123.23.12.34/...

更复杂的情形

将独立运行的策略进程连接到天勤作监控

暂未支持