交易终端上线文件单功能
由qxiao创建,最终由small_q 被浏览 12 用户
功能描述
本功能实现了从云端(bigquant.com)策略信号生成到终端自动获取并下单的完整闭环。用户在BigQuant云端平台运行量化策略后,系统会自动生成交易信号,用户在本地终端通过Python程序自动获取这些信号,最终将信号保存到文件单目录,实现下单功能。
此功能旨在提升量化交易的效率和自动化程度,减少人工干预,确保交易信号能够快速、准确地执行。
\
功能流程图
详细流程如下:
1.用户在宽邦科技的bigquant平台上开发策略;
2.用户将策略提交模拟交易,可产生信号;
3.用户在本地电脑打开交易终端,并开启文件单功能;
4.用户在本地通过程序获取模拟交易的信号,并将信号写入文件单目录;
5.交易终端定时扫描文件单目录下的信号并执行,执行完成后删除信号文件;
\
功能截图
打开交易终端,有个提个Tab窗口,名称为文件单。
目录是你的文件夹位置,源文件是程序写入的信号文件,扫描间隔是终端扫描的频率,一旦new_order.txt产生,10ms后就被执行了。输出文件是指信号执行后,会更新订单、成交等文件。
执行状态是指当前文件单功能是否开启,开启后可以通过操作使其停止。
本地程序示例代码
在本地电脑上需要程序执行自动交易,主要两部分逻辑:
1、本地获取交易信号
2、设置定时运行,将交易信号按既定格式写入文件单目录
完整代码见下,可直接克隆,代码里的账户、凭证、策略id需要手动填写
https://bigquant.com/codesharev3/04e2f866-6d4c-4989-bd36-648c682a6d37
\
功能优势
- 高效性 :从信号生成到下单全程自动化,实现策略交易的全托管,实现交易的零操心。
- 可靠性 :支持断点续传和重试机制,确保信号不丢失、订单可靠执行。
- 灵活性 :支持多种交易平台对接,满足不同用户需求。
- 易用性 :用户只需专注于策略开发,无需关心底层通信和下单逻辑。
\
FAQ
Q:当前支持哪些券商\nA:目前是万和证券,所以开户需要再万和证券,交易终端需要在万和官网下载
Q: 文件单支持bigquant平台什么类型的策略的自动执行?
A: 日频策略和日内策略都支持,只要模拟交易信号产生,本地程序能获取就可以直接下单,因此日频的策略或者分钟、tick策略都能自动交易,只是本文档的例子是日频策略。
Q:如何保证信号获取的实时性?\nA:日频策略的话,不存在延时,因为是8点早上就委托下单;高频实时策略的话,延时在10秒以内
Q: 如果遇到无法成交的情形,如何处理?\nA:未成交单需要手动撤回并追单,为减低不成交的概率,下单价格可适当浮动下。当然,你也可以本地python程序通过成交信息判断来自动撤单和追单
Q: 什么情况下,策略信号会每天自动运行?
A:只要交易终端开着的,本地程序是运行状态,本地电脑网络无故障,那么策略信号就能天天执行,实现交易零操心。
Q: 文件单是什么机制?\nA: 交易终端会实时扫描对应目录下 new_order.txt的文件,如果存在该文件,就下单并删除txt,订单成交后会更新到当日委托和当日成交的txt文件中,因此用户可通过python程序查询委托和成交情况。更多请参考下文的《技术细节及使用介绍》
Q: 本地程序可以查询委托和撤单吗?
A:可以的,在file_order目录下有多个文件。file_order_exec.log是文件单执行的日志,order_data.txt是委托文件,trade_data是成交文件,position_data是持仓文件,都是可以python读取的。
Q:文件单功能可以关闭吗?
A:可以的,在交易终端上手动关闭即可。只有处于启动状态,才能实现信号的自动交易,一旦关闭就不会自动执行信号。
\
技术细节及使用介绍
使用文件单服务交易时,需要先在交易终端软件上“文件单”Tab页上启动文件单服务,文件单默认路径为交易终端程序根目录下的 file_order 目录下。策略程序和文件单服务间通过该目录下的订单导入文件 “new_order.txt” 文本文件进行通讯,策略程序通过写入报单指令或撤单指令完成交易需求。可以进行文件单相关配置编辑,或者停止/删除文件单服务,停止或删除后,文件单服务不会再扫描目录下的订单文件,当然也不会再导出相关资产数据。
交易数据交互图:
策略程序 <---> 订单文件 <---> 交易终端 <------> 券商服务器 <---> 交易所
一、文件单内容说明:
每一行内容第一个字段为指令类型且以 \n 结尾,即为一笔指令,可能是报单指令,也可能是撤单指令
每一行内容的各个字段默认以 ',' 英文逗号分隔,各字段的顺序见下文说明
一次可写入多行内容
文件单最后一行内容必须是 "end" 结尾,用于表明本次文件写入结束
文件单服务读取到 end 后,会依次处理每笔订单请求,处理完成后,会将文件删除。因此当文件存在时,表明文件单服务处理订单文件未完成,此时不可再新写入新指令至订单文件中
每笔指令中各个字段的顺序是固定的,非必须字段不填值时,需要留空占一个位置
报单指令说明,第一个字段必须是 "order":
买入下单参数示例:order,2100000597,20250103,000001.SZ,1,0,0, ,200,10.2,file_order,0,0,150001
卖出下单参数示例:order,2100000597,20250103,000001.SZ,2,1,0, ,200,10.2,file_order,0,0,150002
下单字段说明:
order
资金账号
交易日(非必须),格式:YYYYmmdd
交易标的,如 000001.SZ
买卖方向,'1'-买入,'2'-卖出
开平标志(期货/期权)(非必须),'0'-开仓,'1'-平仓,'2'-平今
投保标志(期货/期权)(非必须),'1'-投机
订单价格类型,0-限价,U-市价五档即成剩撤
订单数量
订单价格
策略标识(非必须),长度必须小于 16 字节
本地委托号(非必须)
请求ID(非必须)
有效截止时间(非必须),格式:YYYY-mm-dd HH:MM:SS 或 HHMMSS
下单补充说明:
策略标识(字段 11):主要可用于标识一个策略的所有订单,如填入 "Strategy1",之后所有的委托回报、成交回报中的 UserID 字段都会带上 "Strategy1",但此字段有长度限制,小于 16 字节
有效截止时间(字段 13):默认为空或0表示不检查,否则当程序扫描到该订单的时间大于有效截止时间时,此订单不会发出,该字段值可以是 HHMMSS,也可以是 YYYY-mm-dd HH:MM:SS。主要可用于下单服务重启后扫描到了很早之前下单的订单,但该订单的当前市场价格已不合适了
股票下单时,在连续竞价期间受价格笼子机制限制 2%,即限价单的买/卖价格不能超过最新价的102%/98%。在刚进入连续竞价时,如 09:30:00 或 13:00:00 时刻,价格波动可能会比较大,此时的下单价格浮动值设置不合理时很容易被交易所拒单或不成交
市价下单时,上交所市场需要输入保护价(填在订单价格字段上),而深交所不需要价格字段
关于上交所科创板下单数量,买入时只要 >= 200 即可,不要求整百数量
撤单指令说明,第一个字段必须是 "cancel":
撤单参数示例:cancel,2100000597,20250103,000001.SZ, 123,1_0_0,0,150001
撤单字段说明:
cancel
资金账号
交易日(非必须)
交易标的
报单编号(系统委托号) order_sysid(字段 5 和 6 不能同时为空)
本地订单唯一标识 order_key(字段 5 和 6 不能同时为空)
请求ID(非必须)
有效截止时间
批量撤单指令说明,第一个字段必须是 "cancel_all":
批量撤单参数示例:cancel_all,2100000597,20250103,000001.SZ,0
批量撤单字段说明:
cancel_all
资金账号
交易日(非必须)
交易标的(非必须)
有效截止时间(非必须)
批量撤单补充说明:
交易标的(字段 4):当指定了该标的时,文件单服务只会尝试撤销此标的下的所有挂单,否则会去撤销该账户下的所有挂单
其它指令说明:
export:文件单服务扫描到该指令时,会重新导出资产数据至导出文件中
二、文件单服务导出数据说明:
文件单服务启动时或退出时,会导出一次全量数据至文件中
文件单服务默认会导出账户资金fund_data.txt、账户持仓position_data.txt、当日委托order_data.txt、当日成交trade_data.txt,数据编码为 UTF-8
导出的数据中均有“交易日” 字段和更新时间字段,可以用于区分数据是否正常导出更新了,可避免使用到昨日过期的数据
当有订单更新/状态变化时,都会自动触发一次导出数据
需要撤单时,在 order_data.txt 中使用委托状态过滤出可撤销的委托,并将 order_sysid 和 order_key 字段填入撤单指令中
三、数据字典:
买卖方向:'1'-买入,'2'-卖出
开平标志(期货/期权):'0'-开仓,'1'-平仓,'2'-平今
投保标志(期货/期权):'1'-投机
订单价格类型:'0'-限价,'U'-市价五档即成剩撤
委托状态:0-未成交,1-部分成交,2-全部成交,3-部成部撤,4-全部撤单,5-废单,6-未知,10-未报,11-正报,12-待报,15-部分待撤,16-待撤单,17-已过期
四、注意事项:
文件单就是您的下单通道,因此不要随意写入数据至订单文件中
使用文件单时,一定要确保文件单服务已经开启
\