quakecat 发布于2023-11-08
回复 96
浏览 7539
165
感谢蒋老师等高手,让我知道了redis和qmt,从10月开始开通券商、开通qmt权限,部署服务器、写收发代码,目前实盘运行正常,一点小经验分享一下:
1、需要聚宽策略、redis服务器(自己部署或者redis cloud)和qmt客户端(多个券商支持,有的听说不支持云服务器,那就只能用自己电脑跑,国金可以虚拟机)。我有一台六七年前的老群晖,安装了redis套件,经测试响应速度非常快,群晖上还装了一台win2016的虚拟机运行qmt,J3455的CPU居然也勉强能跑得动,而且下单飞快,测试期间曾经误操作十秒内下了上百个废单。
```
聚宽推送到redis服务器,qmt客户端接收指令进行交易,交易后删除redis信号
```
2、聚宽推redis:
```
import redis
order = order_target_value(security, value)
if order != None and order.filled > 0:
#推送redis交易指令
push_redis('buy', security, order.filled) #buy或者sell
def push_redis(action,stock,amount):
rs = redis.Redis(host='redis服务器IP或域名,IPv6可能要改配置文件', port=6379, db=0, password='公网上怎么也得设置一个密码')
qmt_order = {}
qmt_order['strategy'] = '策略名'
qmt_order['action'] = action # buy 或者 sell
qmt_order['stock'] = stock[:7] + ('SH' if stock[-1]=='G' else 'SZ')
qmt_order['amount'] = amount
rs.xadd('myredis', qmt_order)
rs.connection_pool.disconnect()
```
3、qmt接收指令进行交易,这个不会死循环,可以并行其他策略,例如盘后闲置资金自动逆回购
```
ContextInfo.run_time('redis_stream', '500nMilliSecond', '2023-10-28 20:58:00') #半秒检测一次信号足矣
def redis_stream(ContextInfo):
r = redis.Redis(host='redis服务器', port=6379, db=0, password='密码', decode_responses=True)
order_list = r.xrange('myredis')
for order_info in order_list:
if order_info[1]['action'] in ('buy', 'sell'):
qmt交易函数
r.xdel('myredis', order_info[0]) #交易后删除信号
r.connection_pool.disconnect()
```
4、有时候需要给一个实盘策略增减资金,那么先在研究里建一个文件:cashinout.txt,内容很简单:{"策略A": 0, "策略B": 0},以后哪个策略想增减资金,就写正数或者负数,例如:
{"策略A": 30000, "策略B": -20000}
然后每天盘前定时执行一下代码:
```
import json
Cash_inout = json.loads(read_file('cashinout.txt'))
if Cash_inout['策略名'] != 0:
inout_cash(Cash_inout['策略名'])
Cash_inout['策略名'] = 0
write_file('cashinout.txt',json.dumps(Cash_inout))
```
5、为了让实盘持仓与策略一致,目前我下单时用的是买五卖五,跟踪发现委托价和成交价相差最小的只有1分钱,那还是有不能成交的风险,不知道大家有什么保障成交的好办法。
评论
请问,你的J3455装多大内存?
2023-11-08
@echober 群晖共6G内存,我给2016分了2.25G,很够用。其实2G就够了,不过我把qmt取消了每日初始化,到周末才重启qmt,内存消耗会逐步增加,所以给大一点。
2023-11-08
是有公网IP吗?有公网IP可以直接开一个http服务,不用经过redis了
2023-11-09
@去码头整点薯条 是的,联通有公网IP,以前用移动宽带就没有。
2023-11-09
redis申请的时候网页或邮件打不开
2023-11-09
@789789 你是指redis cloud?我能打开,申请成功了,能正常使用,速度还行。不过当然还是自己家的服务器快。
2023-11-09
大佬,我有自己的轻量云服务器,请问怎么把redis的服务端安装到自己的云服务上?我用的还是redis的官方试用
2023-11-09
@混沌资本 不好意思,我只在群晖里部署过,其他系统没试过。不过不管你的云服务器是Windows还是Linux,网上都有很多安装Redis的教程,百度一下吧。
2023-11-09
刚好也有个老群晖,回头试试看
2023-11-10
既然搞量化,分分钟都是钱,真的不应该用这样的设备,也就几千块,下错一个单搞不好就不止了
2023-11-10
@盒子 下错单和电脑快慢没什么关系的,我又不是tick级别的策略。
2023-11-10