欢迎访问369期货网 369会员登录 注册

当前位置: 主页 > 期货量化

聚宽的策略怎么移植到QMT?看完包会!!

时间:2025-10-14 15:11|来源:369期货网|作者:369期货网|点击:

不同量化平台之间策略的移植,主要就是API的替换。因为策略逻辑都是一样的,以下是可以实现的几种方法,其中QMT是最方便和最好用的【源码和使用方法,可以关注获取】


分隔线


01

对照API进行1v1修改


这个工作就比较麻烦了,而且还要解决同样的功能的函数,但是参数和返回值不同的问题。

比如定时运行函数run_daily():

聚宽是分别:run_daily()、run_weekly、run_monthly();

但QMT是一个函数:

Img


如果原本聚宽是按weekly的周期,那么QMT还得把period对应好策略的运行周期。
整体来说都比较复杂,所以我们重新改良了新方法。


02

聚宽+sqlalchemy+QMT


图片

实现方法

聚宽通过sqlalchemy模块向中间数据库写入持仓数据(中间数据库可以是云数据库,也可以是通过DDNS映射服务端口出去的本地数据库,我个人交易用云服务器自己搭建,这样比较稳定),找个可以外联数据库的QMT实时访问数据库,同步持仓数据。

03

聚宽+QMT


图片

实现原理

实现的原理是:聚宽信号发送到服务器——QMT读取服务器信息——QMT下单

图片

操作步骤

1.打开我们自己制作的插件,读取预警信号文件。在聚宽输入以下配置代码【找我开通QMT可获取完整代码】
    '''聚宽跟单系统原理替代,继承聚宽的交易函数类读取下单类的函数参数把交易数据发送到服务器把下面的全部源代码复制到聚宽策略的开头就可以实盘前先模拟盘测试一下数据把下面的内容全部复制到策略的开头就可以'''import requestsimport jsonimport pandas as pdurl='http://*******'port=*****#记得把这个改成自己的一个策略一个,策略的名称找作者建立password='*****'class joinquant_trader:    def __init__(self,url='http://*****',port=8025,password='******'):        '''        获取服务器数据        '''        self.url=url        self.port=port        self.password=password    def get_user_data(self,data_type='用户信息'):        '''        获取使用的数据        data_type='用户信息','实时数据',历史数据','清空实时数据','清空历史数据'        '''        url='{}:{}/_dash-update-component'.format(self.url,self.port)        headers={'Content-Type':'application/json'}        data={"output":"joinquant_trader_table.data@63d85b6189e42cba63feea36381da615c31ad8e36ae420ed67f60f3598efc9ad",            "outputs":{"id":"joinquant_trader_table","property":"data@63d85b6189e42cba63feea36381da615c31ad8e36ae420ed67f60f3598efc9ad"},            "inputs":[{"id":"joinquant_trader_password","property":"value","value":self.password},                    {"id":"joinquant_trader_data_type","property":"value","value":data_type},                    {"id":"joinquant_trader_text","property":"value","value":"\n               {'状态': 'held', '订单添加时间': 'datetime.datetime(2024, 4, 23, 9, 30)', '买卖': 'False', '下单数量': '9400', '已经成交': '9400', '股票代码': '001.XSHE', '订单ID': '1732208241', '平均成交价格': '10.5', '持仓成本': '10.59', '多空': 'long', '交易费用': '128.31'}\n                "},                    {"id":"joinquant_trader_run","property":"value","value":"运行"},                    {"id":"joinquant_trader_down_data","property":"value","value":"不下载数据"}],                    "changedPropIds":["joinquant_trader_run.value"],"parsedChangedPropsIds":["joinquant_trader_run.value"]}        res=requests.post(url=url,data=json.dumps(data),headers=headers)        text=res.json()        df=pd.DataFrame(text['response']['joinquant_trader_table']['data'])        return df    def send_order(self,result):        '''        发送交易数据        '''        url='{}:{}/_dash-update-component'.format(self.url,self.port)        headers={'Content-Type':'application/json'}        data={"output":"joinquant_trader_table.data@63d85b6189e42cba63feea36381da615c31ad8e36ae420ed67f60f3598efc9ad",            "outputs":{"id":"joinquant_trader_table","property":"data@63d85b6189e42cba63feea36381da615c31ad8e36ae420ed67f60f3598efc9ad"},            "inputs":[{"id":"joinquant_trader_password","property":"value","value":self.password},                    {"id":"joinquant_trader_data_type","property":"value","value":'实时数据'},                    {"id":"joinquant_trader_text","property":"value","value":result},                    {"id":"joinquant_trader_run","property":"value","value":"运行"},                    {"id":"joinquant_trader_down_data","property":"value","value":"不下载数据"}],                    "changedPropIds":["joinquant_trader_run.value"],"parsedChangedPropsIds":["joinquant_trader_run.value"]}        res=requests.post(url=url,data=json.dumps(data),headers=headers)        text=res.json()        df=pd.DataFrame(text['response']['joinquant_trader_table']['data'])        return df

    2.聚宽进行回测,在我们的服务器上查看信号图片

    3.QMT文件配置,运行策略【需要有授权码,关注领取】图片图片
    以上只是大致思路,具体操作步骤,可找我领取资料图片

    编辑推荐

    Copyright © 2024-2025 成都宁时科技有限公司 版权所有

    蜀ICP备2022023994号