yuhanbolh文档使用说明与付费服务简要

通达信预警、问财轮动、网格、封单不足等 QMT 自动下单,以及可转债策略和收盘逆回购等 QMT 代码

yuhanbolh 文档

文档目前分为 8 个 py 文件,后续可能根据需要增加,这个 8 个 py 文件分别是:

  1. create_strategy.py:策略存放文件,将不同的策略函数存放到该文件中。
  2. get_data.py:获取各种数据的文件。
  3. global_functions.py:全局函数,将可能被多个函数调用的文件放在该文件中。
  4. process_data.py:数据处理文件,主要为技术指标的计算等
  5. qmt_trade.py:qmt的委托、交易和推送文件
  6. send_email.py:通过邮件发送通知文件
  7. mt5_trade.py: MT5 的交易文件,使用 QMT 的话不用理会。
  8. mt5_ic_custom.py:MT5 的自定义函数文件,使用 QMT 的话不用理会。

QMT 策略使用说明

提供的下载文件主要由两部分构成:数据库和运行代码

  1. 数据库放在 data 文件夹中,需要打开数据库,即后缀为 db 的文件,建议使用数据库工具 Downloads - DB Browser for SQLite (sqlitebrowser.org),查看或修改数据表内容。
    1. sqlite_sequence:数据表序列,默认,不用理会
    2. account_details:账户明细,不用理会
    3. account_holdings:账户持仓数据
    4. manage_assets:账户证券和资产数据
    5. daily_orders:当日委托数据
    6. daily_trades:当日成交数据
    7. open_positions:策略持仓,或者说开仓
    8. other_positions:非策略持仓,即不属于所有策略的持仓,比如手动操作
    9. stop_profit_loss:止盈止损价格设置数据表,可以与现价比较,触发时写入到对应以 order 结尾策略数据表中进行交易。
    10. unallocated_transaction:不在任何成交数据表中的成交记录,比如手动交易,手动归类。
    11. receive_condition:接收条件监控数据表,自定义条件单会保存到该表,会与GUI 或网页界面中的数据表保持一致。
    12. place_general_order:自定义条件单的委托数据表,QMT 委托会监控该数据表,每秒监控一次。若该表有数据,则进行委托,委托完成之后会清空该数据表。
    13. execute_general_trade:成交记录表,会将来自 place_general_order 的委托成交之后都会保存到该数据表。收盘后会对该数据表进行处理,检查代码与策略名称,若不在表 receive_condition 中,则会删除所有成交记录。同时,若是网格交易策略,会对交易进行汇总,保持最后一次的交易记录,而数量和金额会是之前的和。
    14. 以 order 结尾的数据表是委托数据表,将策略处理数据后获得需要操作的买卖数据放到该表中(请在策略设计时,要将数据填到以 order 结尾的数据表时,先对数据表进行清空,以免重复委托),在交易框架中会遍历该表的每行数据,进行批量买卖。
    15. 以 trade 结尾的数据表是成交回报数据表,不同的策略交易成功数据写入不同的以 trade 结尾的数据表,以便自己查看,或对策略的进一步处理。比如,可以根据“买卖”列的方向(买为 1,卖为-1),先买先卖或后买先卖等处理,产生新的交易数据。
    16. 其他数据,按个人的需要,可以自行创建与策略有关的数据表,但需要注意数据表的列名——它在委托中是存在对应的映射的。
  2. python 文件,即后缀为 py 的文件可能有多个,看具体运行多少策略,通常一个策略一个 py 文件,个人建议使用 Download Visual Studio Code - Mac, Linux, Windows。但在小 QMT 中需要注意的有两个文件:execute_qmt_trade.py 和 send_email.py
    1. execute_qmt_trade.py 是交易框架,大约有千行代码,需要调用其他文件的策略需要放到 schedule_jobs()函数中,策略交易数据和委托回报等都是写进数据库的,即每个策略是相互隔离的,可以同时运行多个策略,不会冲突。
    2. send_email.py 是邮件发送通知文件,有些交易可能不需要自动交易,只需要触发发送通知,进行手动交易,或者需要交易委托或成交等通知,可以进行设置并调用邮件通知——个人建议用 QQ 邮箱,可以通过微信及时的收到通知。
  3. 个人在 github 上提供开源的库 yuhanbo758/yuhanbolh: 股票量化代码,包括通过qmt、同花顺问题和东财api等获取金融数据,以及处理量化这些数据 (github.com) ,可以自行查看各个函数,每个函数都有注释,可通过 pip install yuhanbolh 进行安装。
    1. 详细函数文档请访问关于 | yuhanbolh文档 (sanrenjz.com),很详细,甚至附带函数代码,以及提供函数每一步实现的流程图。
    2. 通过 pip install yuhanbolh 安装 pythony 库,基本会连带安装其他所需的库。但有两个库需要说明,一个是 pywencai,另一个是 xtquant
      1. pywencai 是爬取同花顺问财的库,主要为了爬取可转债期权价值,当然你要爬取任何问财的数据都可以。该库 zsrl/pywencai: 获取同花顺问财数据 (github.com) 需要 Node.js 的支持,需要自行安装 Node.js。
      2. xtquant 是小 QMT 的数据获取和交易的库,不支持通过 pip 安装,可以到官网 xtquant版本下载 | 迅投知识库 (thinktrader.net) 自行下载,然后放到你 python 安装所在的 site-packages 文件夹内。
  4. 文件路径安排:个人建议创建路径 D:\wenjian\python\smart 存放策略代码和数据库文件 data 文件夹,以及创建 D:\wenjian\python\data\data 存在密码管理数据库 mm.db。因为代码是基于我的电脑路径写的,所以最好是按这个路径来,否则的话需要修改代码中的数据库路径等,较为麻烦。

注意:提供的交易框架只支持普通股票账户,信用账户的话需要自行修改相应的代码。其次,个人精力有限,不提供免费的技术支持,尽量的将代码注释写得详细,大家少做无用功。若实在看不懂且愿付费,可参考下面的付费服务。

自定义挂单策略规则

策略的委托规则

  1. 委托价格非 0,则以限价进行委托
  2. 委托价格为 0,委托备注没有“最优五档”,则以最新价进行委托
  3. 委托价格为 0,并且备注为“最优五档”,则以对手方的最优五档进行委托,剩余撤销。
  4. 委托价格为 0,并且备注为“对手方最优”,则以对手方最优进行委托
  5. 委托价格为 0,并且备注为“本方最优”,则以本方最优进行委托

通达信公式监控:

  1. 需自行在通达信建仓两个版块:买入与卖出
    1. 板块名称:买入;板块简称:BUY
    2. 板块名称:卖出;板块简称:SELL
  2. 板块文件会被存在到通达信软件的 \T0002\blocknew\ 下,需在代码中修改成你的通达信板块路径,比如:
    1. buy_file_path = r"D:\jiaoyi\gxtdx\T0002\blocknew\BUY.blk"
    2. sell_file_path = r"D:\jiaoyi\gxtdx\T0002\blocknew\SELL.blk"
  3. 默认“委托数量”=100,即一手,需要修改在调用函数处修改,比如 scheduler.add_job(monitor_file(buy_file_path, "buy", 100), 'interval', seconds=1)
  4. 默认“委托价格“=0,“委托备注”=“最优五档”,即默认以对手方最优五档进行委托。需人修改在 monitor_file 函数中修改。

自定义条件监控

  1. 即时交易:
    1. 证券代码:必要。需交易的代码,比如平安银行填‘000001’。
    2. 委托价格:必要。若有设定价格,则进行限价委托;若填 0,则进行市价委托,即最新价上报委托;若填 0 的同时,委托备注中填“最优五档”,则以对手方最优五档进行委托,剩余撤销。
    3. 委托数量: 必要。 需交易的数量,比如 100。
    4. 买卖方向:必要。买填 1,卖填-1。
    5. 策略名称:必要。默认选择的是“即时委托”。
    6. 委托备注:可选。作为备注,利于之后的辨别。但若填的是“最优五档”,同时委托价格填的是 0,那则会被识别为以最优五档委托的操作。
    7. 日期时间:可选。若不填,监控日期时间无限制,除非自己删除策略;若填,格式为 "YYYYMMDD hh:mm",设置截至日期,例如设置成 "20241026 09:15 :00" 表示在该时间内都会被监控,超过该时间会被删除监控。
  2. 上破价:
    1. . 证券代码:必要。需交易的代码,比如平安银行填‘000001’。
    2. 委托价格:必要。上破的设置价格,比如设置为 9.99,那么交易产品的价格>=9.99,条件会被触发,并以 9.99 的价格进行委托。
    3. 委托数量: 必要。 需交易的数量,比如 100。
    4. 买卖方向:必要。买填 1,卖填-1。
    5. 策略名称:必要。默认选择的是“上破价”。
    6. 委托备注:可选。作为备注,利于之后的辨别。
    7. 日期时间:可选。若不填,监控日期时间无限制,除非自己删除策略;若填,格式为 "YYYYMMDD hh:mm",设置截至日期,例如设置成 "20241026 09:15 :00" 表示在该时间内都会被监控,超过该时间会被删除监控。
  3. 下破价:
    1. 证券代码:必要。需交易的代码,比如平安银行填‘000001’。
    2. 委托价格:必要。上破的设置价格,比如设置为 9.99,那么交易产品的价格<=9.99,条件会被触发,并以 9.99 的价格进行委托。
    3. 委托数量: 必要。 需交易的数量,比如 100。
    4. 买卖方向:必要。买填 1,卖填-1。
    5. 策略名称:必要。默认选择的是“下破价”。
    6. 委托备注:可选。作为备注,利于之后的辨别。
    7. 日期时间:可选。若不填,监控日期时间无限制,除非自己删除策略;若填,格式为 "YYYYMMDD hh:mm",设置截至日期,例如设置成 "20241026 09:15 :00" 表示在该时间内都会被监控,超过该时间会被删除监控。
  4. 封单不足-注数量:
    1. 证券代码:必要。需交易的代码,比如平安银行填‘000001’。
    2. 委托价格:必要。上破的设置价格,比如设置为 9.99,那么交易产品的价格>=9.99,条件会被触发,并以 9.99 的价格进行委托。可填 0,填 0 则以最新价进行委托。
    3. 委托数量: 必要。 需交易的数量,比如 100。
    4. 买卖方向:必要。买填 1,卖填-1。
    5. 策略名称:必要。默认选择的是“封单不足-注数量”。
    6. 委托备注:必要。格式为 "buy:委买一量"和“sell:委卖一量”,注意为冒号为英文冒号。比如某股票已封涨停,要在封单少于 1w 时进行委托,则填“buy:10000”。
    7. 日期时间:可选。不填,监控日期时间无限制,除非自己删除策略;若填,格式为 "YYYYMMDD hh:mm",设置截至日期,例如设置成 "20241026 09:15 :00" 表示在该时间内都会被监控,超过该时间会被删除监控。
  5. 回落卖-价跌幅-注回撤:
    1. 证券代码:必要。需交易的代码,比如平安银行填‘000001’。
    2. 委托价格:必要。设置的当天监测涨幅,不使用百分号。注意,不是具体的价格,而是涨幅。比如监测某只股票,涨幅达到 6%触发监测,当最高价回撤 2%进行委托,那则填:6。委托以对手方最优五档进行委托,不是最新价,若需最新价,请自行修改该策略的插入函数。
    3. 委托数量: 必要。 需交易的数量,比如 100。
    4. 买卖方向:必要。买填 1,卖填-1。一般卖-1,即回落后卖出,进行止盈;但若你是左侧交易,也可以填 1,即高点回撤多少之后买入。
    5. 策略名称:必要。默认选择的是“回落卖-价跌幅-注回撤”。
    6. 委托备注:必要。设置最高价回撤幅度,不使用百分号。注意,必需是数字。比如监测某只股票,涨幅达到 6%触发监测,当最高价回撤 2%进行委托,那则填:2。
    7. 日期时间:可选。不填,监控日期时间无限制,除非自己删除策略;若填,格式为 "YYYYMMDD hh:mm",设置截至日期,例如设置成 "20241026 09:15 :00" 表示在该时间内都会被监控,超过该时间会被删除监控。
  6. 反弹买-价跌幅-注反弹:
    1. 证券代码:必要。需交易的代码,比如平安银行填‘000001’。
    2. 委托价格:必要。设置的当天监测跌幅,不使用百分号。注意,不是具体的价格,而是涨幅。比如监测某只股票,跌幅达到 6%触发监测,当最高价反弹 2%进行委托,那则填:6。委托以对手方最优五档进行委托,不是最新价,若需最新价,请自行修改该策略的插入函数。
    3. 委托数量: 必要。 需交易的数量,比如 100。
    4. 买卖方向:必要。买填 1,卖填-1。一般卖 1,即反弹之后买入,进行追涨;但若你需反弹之后止损,也可以填 -1,即低点后弹多少之后卖出。
    5. 策略名称:必要。默认选择的是“反弹买-价跌幅-注反弹”。
    6. 委托备注:必要。设置最高价回撤幅度,不使用百分号和负号。注意,必需是数字。比如监测某只股票,跌幅达到 6%触发监测,当最高价反弹 2%进行委托,那则填:2。
    7. 日期时间:可选。不填,监控日期时间无限制,除非自己删除策略;若填,格式为 "YYYYMMDD hh:mm",设置截至日期,例如设置成 "20241026 09:15 :00" 表示在该时间内都会被监控,超过该时间会被删除监控。
  7. 价差网格-注价差:
    1. 证券代码:必要。需交易的代码,比如平安银行填‘000001’。
    2. 委托价格:必要。开始时的基准价,即触发价格。比如要对某只 10 元的股票进行监测,每下跌 0.1 买入,每上跌 0.1 卖出,那么委托价格就填:10.00。
    3. 委托数量: 必要。 需交易的数量,比如 100。
    4. 买卖方向:必要,填 1。
    5. 策略名称:必要。默认选择的是“价差网格-注价差”。
    6. 委托备注:必要。网格的区间,比如要对某只 10 元的股票进行监测,每下跌 0.1 买入,每上跌 0.1 卖出,那么委托备注就填:0.1。
    7. 日期时间:可选。不填,监控日期时间无限制,除非自己删除策略;若填,格式为 "YYYYMMDD hh:mm",设置截至日期,例如设置成 "20241026 09:15 :00" 表示在该时间内都会被监控,超过该时间会被删除监控。
  8. 振幅风格-注振幅:
    1. 证券代码:必要。需交易的代码,比如平安银行填‘000001’。
    2. 委托价格:必要。开始时的基准价,即触发价格。比如要对某只 10 元的股票进行监测,每下跌 1%买入,每上跌 1% 卖出,那么委托价格就填:10.00。
    3. 委托数量: 必要。 需交易的数量,比如 100。
    4. 买卖方向:必要,填 1。
    5. 策略名称:必要。默认选择的是“振幅风格-注振幅”。
    6. 委托备注:必要。网格的区间,比如要对某只 10 元的股票进行监测,每下跌 1%买入,每上跌 1% 卖出,那么委托备注就填:1。
    7. 日期时间:可选。不填,监控日期时间无限制,除非自己删除策略;若填,格式为 "YYYYMMDD hh:mm",设置截至日期,例如设置成 "20241026 09:15 :00" 表示在该时间内都会被监控,超过该时间会被删除监控。

问财轮动策略:

  1. 运行该模块的必填项:
    1. 证券代码:不能以 0、1、5 和 6 开头的代码,建议以 22 开头的 6 位数,比如 221122 等等。因为证券代码被设置为必填的 6 位数字,否则无法提交,而以 0、1、5 和 6 等开头与股票开头判断冲突,最后提交后会显示“代码.市场”,而不是“轮动定时”,所以填入的代码开头为非 0、1、5 和 6 开头的数字。
    2. 委托价格:0,即以最新价进行委托。因为问财条件问询的策略只能是轮动策略,不知道最终筛选出来的是什么交易产品和价格,所以以最新价进行委托。
    3. 委托数量:自行按需填写。
    4. 买卖方向:1,即买入。
    5. 策略名称:问财轮动-注询问。
    6. 委托备注:按需填写筛选条件,比如我的轮动策略是"价格小于 100 元的可转债",那么策略执行时,它就会买入价格小入 100 元的所有可转债,而卖出该策略之前买入,价格张到 100 元以上的可转债。
    7. 日期时间:格式为“YYYYMMDD hh:mm”,比如 20241026 10:30 。 若当前日期时间超过该日期时间,则策略会被删除,策略下持仓都会被卖出清仓。同时,时间部分是交易日的执行时间,例如举例中的时间是 10:30 ,那么则会在 10:30 时执行问财的轮动策略。若你需要在一天内进行多次执行轮动策略,那可增加多条策略内容,把时间改成你要执行的时间便可。
  2. 需区分交易产品,委托备注中尽量带有交易产品的种类,比如 ETF,你要带有“基金”两字,否则可能出错。A 股交易产品包括:
    1. 默认是股票,若问财询问后结果有其他交易产品,可能会出错,所以在询问语句中,请带来有“股票”字样,比如“三天连张的股票”,那查询结果就只有股票了。
    2. 基金:指的是场内基金,包括 ETF 和 LOF 。
    3. 转债:所有的可转债。

付费服务

个人精力有限,证券开户、付费咨询和加付费群的可加我微信: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不等
THE END