yuhanbolh文档使用说明与付费服务简要
通达信预警、问财轮动、网格、封单不足等 QMT 自动下单,以及可转债策略和收盘逆回购等 QMT 代码
yuhanbolh 文档
文档目前分为 8 个 py 文件,后续可能根据需要增加,这个 8 个 py 文件分别是:
- create_strategy.py:策略存放文件,将不同的策略函数存放到该文件中。
- get_data.py:获取各种数据的文件。
- global_functions.py:全局函数,将可能被多个函数调用的文件放在该文件中。
- process_data.py:数据处理文件,主要为技术指标的计算等
- qmt_trade.py:qmt的委托、交易和推送文件
- send_email.py:通过邮件发送通知文件
- mt5_trade.py: MT5 的交易文件,使用 QMT 的话不用理会。
- mt5_ic_custom.py:MT5 的自定义函数文件,使用 QMT 的话不用理会。
QMT 策略使用说明
提供的下载文件主要由两部分构成:数据库和运行代码
- 数据库放在 data 文件夹中,需要打开数据库,即后缀为 db 的文件,建议使用数据库工具 Downloads - DB Browser for SQLite (sqlitebrowser.org),查看或修改数据表内容。
- sqlite_sequence:数据表序列,默认,不用理会
- account_details:账户明细,不用理会
- account_holdings:账户持仓数据
- manage_assets:账户证券和资产数据
- daily_orders:当日委托数据
- daily_trades:当日成交数据
- open_positions:策略持仓,或者说开仓
- other_positions:非策略持仓,即不属于所有策略的持仓,比如手动操作
- stop_profit_loss:止盈止损价格设置数据表,可以与现价比较,触发时写入到对应以 order 结尾策略数据表中进行交易。
- unallocated_transaction:不在任何成交数据表中的成交记录,比如手动交易,手动归类。
- receive_condition:接收条件监控数据表,自定义条件单会保存到该表,会与GUI 或网页界面中的数据表保持一致。
- place_general_order:自定义条件单的委托数据表,QMT 委托会监控该数据表,每秒监控一次。若该表有数据,则进行委托,委托完成之后会清空该数据表。
- execute_general_trade:成交记录表,会将来自 place_general_order 的委托成交之后都会保存到该数据表。收盘后会对该数据表进行处理,检查代码与策略名称,若不在表 receive_condition 中,则会删除所有成交记录。同时,若是网格交易策略,会对交易进行汇总,保持最后一次的交易记录,而数量和金额会是之前的和。
- 以 order 结尾的数据表是委托数据表,将策略处理数据后获得需要操作的买卖数据放到该表中(请在策略设计时,要将数据填到以 order 结尾的数据表时,先对数据表进行清空,以免重复委托),在交易框架中会遍历该表的每行数据,进行批量买卖。
- 以 trade 结尾的数据表是成交回报数据表,不同的策略交易成功数据写入不同的以 trade 结尾的数据表,以便自己查看,或对策略的进一步处理。比如,可以根据“买卖”列的方向(买为 1,卖为-1),先买先卖或后买先卖等处理,产生新的交易数据。
- 其他数据,按个人的需要,可以自行创建与策略有关的数据表,但需要注意数据表的列名——它在委托中是存在对应的映射的。
- python 文件,即后缀为 py 的文件可能有多个,看具体运行多少策略,通常一个策略一个 py 文件,个人建议使用 Download Visual Studio Code - Mac, Linux, Windows。但在小 QMT 中需要注意的有两个文件:execute_qmt_trade.py 和 send_email.py
- execute_qmt_trade.py 是交易框架,大约有千行代码,需要调用其他文件的策略需要放到 schedule_jobs()函数中,策略交易数据和委托回报等都是写进数据库的,即每个策略是相互隔离的,可以同时运行多个策略,不会冲突。
- send_email.py 是邮件发送通知文件,有些交易可能不需要自动交易,只需要触发发送通知,进行手动交易,或者需要交易委托或成交等通知,可以进行设置并调用邮件通知——个人建议用 QQ 邮箱,可以通过微信及时的收到通知。
- 个人在 github 上提供开源的库 yuhanbo758/yuhanbolh: 股票量化代码,包括通过qmt、同花顺问题和东财api等获取金融数据,以及处理量化这些数据 (github.com) ,可以自行查看各个函数,每个函数都有注释,可通过
pip install yuhanbolh
进行安装。- 详细函数文档请访问关于 | yuhanbolh文档 (sanrenjz.com),很详细,甚至附带函数代码,以及提供函数每一步实现的流程图。
- 通过
pip install yuhanbolh
安装 pythony 库,基本会连带安装其他所需的库。但有两个库需要说明,一个是pywencai
,另一个是xtquant
pywencai
是爬取同花顺问财的库,主要为了爬取可转债期权价值,当然你要爬取任何问财的数据都可以。该库 zsrl/pywencai: 获取同花顺问财数据 (github.com) 需要 Node.js 的支持,需要自行安装 Node.js。xtquant
是小 QMT 的数据获取和交易的库,不支持通过 pip 安装,可以到官网 xtquant版本下载 | 迅投知识库 (thinktrader.net) 自行下载,然后放到你 python 安装所在的 site-packages 文件夹内。
- 文件路径安排:个人建议创建路径
D:\wenjian\python\smart
存放策略代码和数据库文件 data 文件夹,以及创建D:\wenjian\python\data\data
存在密码管理数据库mm.db
。因为代码是基于我的电脑路径写的,所以最好是按这个路径来,否则的话需要修改代码中的数据库路径等,较为麻烦。
注意:提供的交易框架只支持普通股票账户,信用账户的话需要自行修改相应的代码。其次,个人精力有限,不提供免费的技术支持,尽量的将代码注释写得详细,大家少做无用功。若实在看不懂且愿付费,可参考下面的付费服务。
自定义挂单策略规则
策略的委托规则
- 委托价格非 0,则以限价进行委托
- 委托价格为 0,委托备注没有“最优五档”,则以最新价进行委托
- 委托价格为 0,并且备注为“最优五档”,则以对手方的最优五档进行委托,剩余撤销。
- 委托价格为 0,并且备注为“对手方最优”,则以对手方最优进行委托
- 委托价格为 0,并且备注为“本方最优”,则以本方最优进行委托
通达信公式监控:
- 需自行在通达信建仓两个版块:买入与卖出
- 板块名称:买入;板块简称:BUY
- 板块名称:卖出;板块简称:SELL
- 板块文件会被存在到通达信软件的
\T0002\blocknew\
下,需在代码中修改成你的通达信板块路径,比如:- buy_file_path =
r"D:\jiaoyi\gxtdx\T0002\blocknew\BUY.blk"
- sell_file_path =
r"D:\jiaoyi\gxtdx\T0002\blocknew\SELL.blk"
- buy_file_path =
- 默认“委托数量”=100,即一手,需要修改在调用函数处修改,比如
scheduler.add_job(monitor_file(buy_file_path, "buy", 100), 'interval', seconds=1)
。 - 默认“委托价格“=0,“委托备注”=“最优五档”,即默认以对手方最优五档进行委托。需人修改在
monitor_file
函数中修改。
自定义条件监控
- 即时交易:
- 证券代码:必要。需交易的代码,比如平安银行填‘000001’。
- 委托价格:必要。若有设定价格,则进行限价委托;若填 0,则进行市价委托,即最新价上报委托;若填 0 的同时,委托备注中填“最优五档”,则以对手方最优五档进行委托,剩余撤销。
- 委托数量: 必要。 需交易的数量,比如 100。
- 买卖方向:必要。买填 1,卖填-1。
- 策略名称:必要。默认选择的是“即时委托”。
- 委托备注:可选。作为备注,利于之后的辨别。但若填的是“最优五档”,同时委托价格填的是 0,那则会被识别为以最优五档委托的操作。
- 日期时间:可选。若不填,监控日期时间无限制,除非自己删除策略;若填,格式为 "YYYYMMDD hh:mm",设置截至日期,例如设置成 "20241026 09:15 :00" 表示在该时间内都会被监控,超过该时间会被删除监控。
- 上破价:
- . 证券代码:必要。需交易的代码,比如平安银行填‘000001’。
- 委托价格:必要。上破的设置价格,比如设置为 9.99,那么交易产品的价格>=9.99,条件会被触发,并以 9.99 的价格进行委托。
- 委托数量: 必要。 需交易的数量,比如 100。
- 买卖方向:必要。买填 1,卖填-1。
- 策略名称:必要。默认选择的是“上破价”。
- 委托备注:可选。作为备注,利于之后的辨别。
- 日期时间:可选。若不填,监控日期时间无限制,除非自己删除策略;若填,格式为 "YYYYMMDD hh:mm",设置截至日期,例如设置成 "20241026 09:15 :00" 表示在该时间内都会被监控,超过该时间会被删除监控。
- 下破价:
- 证券代码:必要。需交易的代码,比如平安银行填‘000001’。
- 委托价格:必要。上破的设置价格,比如设置为 9.99,那么交易产品的价格<=9.99,条件会被触发,并以 9.99 的价格进行委托。
- 委托数量: 必要。 需交易的数量,比如 100。
- 买卖方向:必要。买填 1,卖填-1。
- 策略名称:必要。默认选择的是“下破价”。
- 委托备注:可选。作为备注,利于之后的辨别。
- 日期时间:可选。若不填,监控日期时间无限制,除非自己删除策略;若填,格式为 "YYYYMMDD hh:mm",设置截至日期,例如设置成 "20241026 09:15 :00" 表示在该时间内都会被监控,超过该时间会被删除监控。
- 封单不足-注数量:
- 证券代码:必要。需交易的代码,比如平安银行填‘000001’。
- 委托价格:必要。上破的设置价格,比如设置为 9.99,那么交易产品的价格>=9.99,条件会被触发,并以 9.99 的价格进行委托。可填 0,填 0 则以最新价进行委托。
- 委托数量: 必要。 需交易的数量,比如 100。
- 买卖方向:必要。买填 1,卖填-1。
- 策略名称:必要。默认选择的是“封单不足-注数量”。
- 委托备注:必要。格式为 "buy:委买一量"和“sell:委卖一量”,注意为冒号为英文冒号。比如某股票已封涨停,要在封单少于 1w 时进行委托,则填“buy:10000”。
- 日期时间:可选。不填,监控日期时间无限制,除非自己删除策略;若填,格式为 "YYYYMMDD hh:mm",设置截至日期,例如设置成 "20241026 09:15 :00" 表示在该时间内都会被监控,超过该时间会被删除监控。
- 回落卖-价跌幅-注回撤:
- 证券代码:必要。需交易的代码,比如平安银行填‘000001’。
- 委托价格:必要。设置的当天监测涨幅,不使用百分号。注意,不是具体的价格,而是涨幅。比如监测某只股票,涨幅达到 6%触发监测,当最高价回撤 2%进行委托,那则填:6。委托以对手方最优五档进行委托,不是最新价,若需最新价,请自行修改该策略的插入函数。
- 委托数量: 必要。 需交易的数量,比如 100。
- 买卖方向:必要。买填 1,卖填-1。一般卖-1,即回落后卖出,进行止盈;但若你是左侧交易,也可以填 1,即高点回撤多少之后买入。
- 策略名称:必要。默认选择的是“回落卖-价跌幅-注回撤”。
- 委托备注:必要。设置最高价回撤幅度,不使用百分号。注意,必需是数字。比如监测某只股票,涨幅达到 6%触发监测,当最高价回撤 2%进行委托,那则填:2。
- 日期时间:可选。不填,监控日期时间无限制,除非自己删除策略;若填,格式为 "YYYYMMDD hh:mm",设置截至日期,例如设置成 "20241026 09:15 :00" 表示在该时间内都会被监控,超过该时间会被删除监控。
- 反弹买-价跌幅-注反弹:
- 证券代码:必要。需交易的代码,比如平安银行填‘000001’。
- 委托价格:必要。设置的当天监测跌幅,不使用百分号。注意,不是具体的价格,而是涨幅。比如监测某只股票,跌幅达到 6%触发监测,当最高价反弹 2%进行委托,那则填:6。委托以对手方最优五档进行委托,不是最新价,若需最新价,请自行修改该策略的插入函数。
- 委托数量: 必要。 需交易的数量,比如 100。
- 买卖方向:必要。买填 1,卖填-1。一般卖 1,即反弹之后买入,进行追涨;但若你需反弹之后止损,也可以填 -1,即低点后弹多少之后卖出。
- 策略名称:必要。默认选择的是“反弹买-价跌幅-注反弹”。
- 委托备注:必要。设置最高价回撤幅度,不使用百分号和负号。注意,必需是数字。比如监测某只股票,跌幅达到 6%触发监测,当最高价反弹 2%进行委托,那则填:2。
- 日期时间:可选。不填,监控日期时间无限制,除非自己删除策略;若填,格式为 "YYYYMMDD hh:mm",设置截至日期,例如设置成 "20241026 09:15 :00" 表示在该时间内都会被监控,超过该时间会被删除监控。
- 价差网格-注价差:
- 证券代码:必要。需交易的代码,比如平安银行填‘000001’。
- 委托价格:必要。开始时的基准价,即触发价格。比如要对某只 10 元的股票进行监测,每下跌 0.1 买入,每上跌 0.1 卖出,那么委托价格就填:10.00。
- 委托数量: 必要。 需交易的数量,比如 100。
- 买卖方向:必要,填 1。
- 策略名称:必要。默认选择的是“价差网格-注价差”。
- 委托备注:必要。网格的区间,比如要对某只 10 元的股票进行监测,每下跌 0.1 买入,每上跌 0.1 卖出,那么委托备注就填:0.1。
- 日期时间:可选。不填,监控日期时间无限制,除非自己删除策略;若填,格式为 "YYYYMMDD hh:mm",设置截至日期,例如设置成 "20241026 09:15 :00" 表示在该时间内都会被监控,超过该时间会被删除监控。
- 振幅风格-注振幅:
- 证券代码:必要。需交易的代码,比如平安银行填‘000001’。
- 委托价格:必要。开始时的基准价,即触发价格。比如要对某只 10 元的股票进行监测,每下跌 1%买入,每上跌 1% 卖出,那么委托价格就填:10.00。
- 委托数量: 必要。 需交易的数量,比如 100。
- 买卖方向:必要,填 1。
- 策略名称:必要。默认选择的是“振幅风格-注振幅”。
- 委托备注:必要。网格的区间,比如要对某只 10 元的股票进行监测,每下跌 1%买入,每上跌 1% 卖出,那么委托备注就填:1。
- 日期时间:可选。不填,监控日期时间无限制,除非自己删除策略;若填,格式为 "YYYYMMDD hh:mm",设置截至日期,例如设置成 "20241026 09:15 :00" 表示在该时间内都会被监控,超过该时间会被删除监控。
问财轮动策略:
- 运行该模块的必填项:
- 证券代码:不能以 0、1、5 和 6 开头的代码,建议以 22 开头的 6 位数,比如 221122 等等。因为证券代码被设置为必填的 6 位数字,否则无法提交,而以 0、1、5 和 6 等开头与股票开头判断冲突,最后提交后会显示“代码.市场”,而不是“轮动定时”,所以填入的代码开头为非 0、1、5 和 6 开头的数字。
- 委托价格:0,即以最新价进行委托。因为问财条件问询的策略只能是轮动策略,不知道最终筛选出来的是什么交易产品和价格,所以以最新价进行委托。
- 委托数量:自行按需填写。
- 买卖方向:1,即买入。
- 策略名称:问财轮动-注询问。
- 委托备注:按需填写筛选条件,比如我的轮动策略是"价格小于 100 元的可转债",那么策略执行时,它就会买入价格小入 100 元的所有可转债,而卖出该策略之前买入,价格张到 100 元以上的可转债。
- 日期时间:格式为“YYYYMMDD hh:mm”,比如 20241026 10:30 。 若当前日期时间超过该日期时间,则策略会被删除,策略下持仓都会被卖出清仓。同时,时间部分是交易日的执行时间,例如举例中的时间是 10:30 ,那么则会在 10:30 时执行问财的轮动策略。若你需要在一天内进行多次执行轮动策略,那可增加多条策略内容,把时间改成你要执行的时间便可。
- 需区分交易产品,委托备注中尽量带有交易产品的种类,比如 ETF,你要带有“基金”两字,否则可能出错。A 股交易产品包括:
- 默认是股票,若问财询问后结果有其他交易产品,可能会出错,所以在询问语句中,请带来有“股票”字样,比如“三天连张的股票”,那查询结果就只有股票了。
- 基金:指的是场内基金,包括 ETF 和 LOF 。
- 转债:所有的可转债。
付费服务
个人精力有限,证券开户、付费咨询和加付费群的可加我微信:yuhanbo758
服务 | 价格 | 内容 |
QQ 群 | 免费 | 群号:916720018(量化开源)。无任何门槛,有 2 个开源的库,分别是量化的 yuhanbolh 和效率的 yuhanboxl,感兴趣的可加入讨论。 |
yuhanbol微信1 群 | ¥199 / 人 | 股票和 QMT 交流群,凡这边开户的有效户都可免费加群,非开户需支付 199 元/人,以此来避免广告和骚扰等。群内目前提供一个可转债策略(可转债轮动策略:近5年年化收益率67.86%,QMT的整体框架+打地鼠+自动逆回购 (qq.com))和小 QMT 的交易框架代码(包括通达信问财监控下单等),以后会增加行情获取等,加群请遵守微信社群规范 |
yuhanbolh 微信2 群 | ¥999 / 人 | 股票和 QMT 交流群,凡这边开户的账户资金在 50w 以上可以免费加群,有新的 QMT 策略首先提供。 |
yuhanboxl 微信群 | ¥88/ 人 | 效率工具交流群,凡付费咨询 100 元以上,可免费申请加入,未曾付费咨询需支付 199 元/人,以此来避免广告和骚扰等。 |
付费咨询 | 19.9 起 | 关注微信公众号(余汉波),小程序-咨询服务-商品,选择付费咨询服务,价格从19.9-499不等 |
版权声明:
作者:余汉波
链接:https://www.sanrenjz.com/2024/09/29/yuhanbolh%e6%96%87%e6%a1%a3%e4%bd%bf%e7%94%a8%e8%af%b4%e6%98%8e%e4%b8%8e%e4%bb%98%e8%b4%b9%e6%9c%8d%e5%8a%a1%e7%ae%80%e8%a6%81-3/
文章版权归作者所有,未经允许请勿转载。
THE END