加强版网格策略第三版20241117
总保险,为了防止程序出错造成的困扰:
0、如果量化程序上实盘,记得在
东方财富的APP与PC段关闭该标的如电信网格单,
最好也关闭其它条件单,以免造成困扰与混乱,
同时如果盘中想手动操作,请先关闭量化程序
1、模拟盘的低价持仓股模拟运行至少3个月
每天分析是否出现异常情况,后续才考虑上实盘。
2、每只低价股的资金设置上限
如电信总持仓股份数不超过10万股之类
3、某只股票如电信,每天程序产生的委托单和成交单也做限制,以免产生过多的无效或重复的单子
比如委托单总数大于8笔、成交单大于5笔时,
量化程序当天不再操作电信
但大秦如果没有触及这些限制,仍然可以继续;
4、为了尽量简化程序开发,每个程序实例只操作一只股票。
即可能是一套代码,但是分成2个策略,方便控制,减少互相干扰。
~~~
盘前初始化生成中枢价位上下的卖单和买单。
逻辑
为了防止误操作而多次运行了初始化策略
或前一天晚上手动有挂单,产生冲突
防止策略被多次运行方法
• 标志文件可以命名为initialized_today.txt或者使用当天的日期作为文件名,比如initialized_20241117.txt,这样可以更直观地看出策略是否已经运行过。
::先查询目前电信的委托单
如果有未报与已报状态的单子,
打印警告日志,退出。
此时应该人工检查与处理。如果有必要,手动撤回,待开盘后再次手动运行此初始化程序。
::按网格策略(中枢价位,价差,单位股票数量)
生成买单与卖单,准备提交
::针对买单,
获取当前持仓可用资金
是否够买
如果不够,打印警告日志
如果够,提交买单,打印提交买单日志。
::针对卖单
获取当前可用电信股票数量
是否够卖
如果不够,打印警告日志
如果够,提交卖单,打印提交卖单日志。
~~~
盘中逻辑:
收到一条成交消息
该笔消息对应的委托单是否为全部成交?
否,忽略此消息
是,继续
生成买卖单前检查:
获取当天委托中(已报、部成、已成)的个数,
有没有超过最大值?
获取当天委托已成数量,
有没有超过最大值?
~~
这里生成买卖单的过程,此处略过
后续补充
~~
备注:因为卖单的判断逻辑简单一些,所以可以先处理卖单,再处理买单。
下面是卖单提交前检查:
提交卖单前当前持仓可用数量是否足够,
比如至少大于100,当然也要小于或等于当前可售数量。
满足则提交卖单
获取提交结果
判断卖单是否提交成功
打印卖单提交结果
~~
下面是买单提交前检查:
提交买单前该股票当前持仓量有没有超过最大值?
提交买单前剩余可用资金是否足够?
满足则提交买单
获取提交结果
判断买单是否提交成功
打印买单提交结果
更多补充
异常处理:
• 你提到了打印警告日志,这是一个好的做法。但除了打印日志外,还应该有一个异常处理机制,比如弹窗,发送邮件或短信通知,以便在出现问题时能够及时人工介入。