返回列表 发布新帖

综合交易模型:多策略同时交易,支持同花顺、qmt

3468 1
发表于 2024-7-17 19:44:55 | 显示全部楼层 阅读模式

对系统重新设计了一下,参考qmt通过策略名称来区分不同策略,同时周末完成了聚宽跟单,全部加入了综合模型

目前框架支持的模型,支持自己改源代码自定义

<pre class="public-DraftStyleDefault-pre" data-offset-key="e22r8-0-0"><pre class="Editable-styled" data-block="true" data-editor="664k8" data-offset-key="e22r8-0-0"><div data-offset-key="e22r8-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="e22r8-0-0"><span data-text="true">"模型策略":{ "get_wencai_buy_data":"问财买入股票", "get_wencai_sell_data":"问财卖出股票", "get_dfcf_zh_buy_stock":"东方财富自选股买入", "get_dfcf_zh_sell_stock":"东方财富自选股卖出", "run_bond_cov_rend_strategy":"可转债趋势轮动策略", "run_limit_trading_strategy":"涨停板策略", "run_etf_trend_strategy":"etf趋势轮动策略", "run_bond_cov_popularity_strategy":"可转债人气策略", "run_stock_sentiment_strategy":"股票人气策略", "run_bond_cov_custom_factor_rotation":"可转债自定义因子轮动策略", "run_bond_cov_hot_concept_strategy":"运行可转债热门概念策略", "run_micro_stock_cap_trend_trading":"微盘股趋势轮动策略", "run_tdx_yj_trader_func_1":"通达信警告交易函数1", "run_tdx_trader_stock_buy":"通达信自选股买入", "run_tdx_trader_stock_sell":"通达信自选股卖出", "get_connect_trader_data":"合并交易数据", "run_joinquant_trader_strategy_get_simultaneous_stock_hold_models":"聚宽跟单持股模式", "run_joinquant_trader_strategy_get_simultaneous_transaction_models":"聚宽跟单成交模式" },</span></span></div></pre></pre>

第一步:选择交易系统

支持同花顺,qmt,比如我们选择qmt

对qmt进行配置

<pre class="public-DraftStyleDefault-pre" data-offset-key="bms0v-0-0"><pre class="Editable-styled" data-block="true" data-editor="664k8" data-offset-key="bms0v-0-0"><div data-offset-key="bms0v-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="bms0v-0-0"><span data-text="true">"交易系统设置":"*****", "交易系统选择":"ths/qmt", "交易系统":"qmt", "交易品种":"全部", "交易品种说明":["stock","fund","bond","全部"], "同花顺下单路径":"C:/同花顺软件/同花顺/xiadan.exe", "识别软件安装位置":"C:/Program Files/Tesseract-OCR/tesseract", "qmt路径":"D:/国金QMT交易端模拟/userdata_mini", "qmt账户":"55009640", "qmt账户类型":"STOCK", "证券公司交易设置":"兼容老牌证券公司可转债1手为单位", "是否开启特殊证券公司交易设置":"否",</span></span></div></pre></pre>

第二步:选择交易策略

我们只需要策略名称函数比如我们选择同花顺可转债人气策略,同花顺热门可转债趋势轮动2个策略

同花顺人气可转债策略函数名称run_bond_cov_popularity_strategy

<pre class="public-DraftStyleDefault-pre" data-offset-key="aqev1-0-0"><pre class="Editable-styled" data-block="true" data-editor="664k8" data-offset-key="aqev1-0-0"><div data-offset-key="aqev1-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="aqev1-0-0"><span data-text="true">"run_bond_cov_popularity_strategy":"可转债人气策略",</span></span></div></pre></pre>

选择可转债热门概念趋势轮动策略函数名称 run_bond_cov_hot_concept_strategy

<pre class="public-DraftStyleDefault-pre" data-offset-key="1inq5-0-0"><pre class="Editable-styled" data-block="true" data-editor="664k8" data-offset-key="1inq5-0-0"><div data-offset-key="1inq5-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="1inq5-0-0"><span data-text="true">"run_bond_cov_hot_concept_strategy":"可转债热门概念策略",</span></span></div></pre></pre>

第三步:函数名称复制到自定义函数

对于策略类的函数运行类型我们选择定时,比如跟单,通达信警告模块我们都是选择循环类型

如果2个策略间隔时间比较就,在策略后面添加应该合并交易数据函数

比如下面例子

<pre class="public-DraftStyleDefault-pre" data-offset-key="3vshm-0-0"><pre class="Editable-styled" data-block="true" data-editor="664k8" data-offset-key="3vshm-0-0"><div data-offset-key="3vshm-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="3vshm-0-0"><span data-text="true">"自定义运行函数设置":"自定义运行函数说明,运行类型有定时和循环,只需要把自定义模块的函数名称放在下面**", "自定义函数说明":"定时策略get_connect_trader_data必须保留,跟单通达信警告不需要", "自定义函数运行类型":["定时","定时","定时","定时"], "自定义函数模块运行时间":["09:45","09:48","14:30","14:33"], "自定义函数":["run_bond_cov_popularity_strategy","get_connect_trader_data", "run_bond_cov_hot_concept_strategy","get_connect_trader_data"],</span></span></div></pre></pre>

如果2个策略间隔比较短,可用保留一个合并数据模块就可用比如

get_connect_trader_data要放在2个策略后面,等2个策略数据更新完成,合并交易数据,就马上开始交易

<pre class="public-DraftStyleDefault-pre" data-offset-key="7tu4c-0-0"><pre class="Editable-styled" data-block="true" data-editor="664k8" data-offset-key="7tu4c-0-0"><div data-offset-key="7tu4c-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="7tu4c-0-0"><span data-text="true">"自定义运行函数设置":"自定义运行函数说明,运行类型有定时和循环,只需要把自定义模块的函数名称放在下面**", "自定义函数说明":"定时策略get_connect_trader_data必须保留,跟单通达信警告不需要", "自定义函数运行类型":["定时","定时","定时"], "自定义函数模块运行时间":["09:45","09:48","09:50"], "自定义函数":["run_bond_cov_popularity_strategy", "run_bond_cov_hot_concept_strategy","get_connect_trader_data"],</span></span></div></pre></pre>

第四步:点击user_def_models更新交易数据

更新交易数据

同花顺可转债人气交易模型更新的结果

可转债热门趋势概念更新数据,分析热门概念

可转债热度排行

也可用通过我开发我网站看数据

热门概念可转债成分股

可转债热门概念分析出来的可转债

合并2个策略的交易数据,相同的标的保留一个就可以

第五步:运行trader_st开头的策略

进行实盘交易,qmt为例子

开启的模块

下单的结果

下单结果周末不能交易

交易检查

全部的源代码,可用直接下载

合并交易数据函数

<pre class="public-DraftStyleDefault-pre" data-offset-key="3bmq2-0-0"><pre class="Editable-styled" data-block="true" data-editor="664k8" data-offset-key="3bmq2-0-0"><div data-offset-key="3bmq2-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="3bmq2-0-0"><span data-text="true">def get_connect_trader_data(self): ''' 合并买卖数据 循环类型直接写入,比如通达信警告 定时策略合并多个数据,比如模型策略 ''' import os with open('分析配置.json','r+',encoding='utf-8') as f: com=f.read() text=json.loads(com) user_def_func=text['自定义函数'] user_def_func_name=text['模型策略'] buy_df=pd.DataFrame() sell_df=pd.DataFrame() buy_path_list=os.listdir(r'多策略买入股票') sell_path_list=os.listdir(r'多策略卖出股票') for func in user_def_func: name=user_def_func_name[func] if func=='run_tdx_yj_trader_func_1': print(name,'直接写入买卖数据') else:

合并买入

            buy_path='{}.xlsx'.format(func)
            if buy_path in buy_path_list:
                buy=pd.read_excel(r'多策略买入股票\{}'.format(buy_path))
                if buy.shape[0]>0:
                    print('合并策略{}'.format(name))
                    buy=buy[['证券代码','交易状态','策略名称']]
                    buy_df=pd.concat([buy_df,buy],ignore_index=True)
                else:
                    print('策略{}没有数据'.format(name))
            #合并卖出
            sell_path='{}.xlsx'.format(func)
            if sell_path in sell_path_list:
                sell=pd.read_excel(r'多策略卖出股票\{}'.format(sell_path))
                if sell.shape[0]>0:
                    print('合并策略{}'.format(name))
                    sell=sell[['证券代码','交易状态','策略名称']]
                    sell_df=pd.concat([sell_df,sell],ignore_index=True)
                else:
                    print('策略{}没有数据'.format(name))
    #多个策略叠加买入一个就可以
    buy_df=buy_df.drop_duplicates(subset=['证券代码'])
    sell_df=sell_df.drop_duplicates(subset=['证券代码'])
    buy_df.to_excel(r'买入股票\买入股票.xlsx')
    print('合并买入股票***********************')
    print(buy_df)
    sell_df.to_excel(r'卖出股票\卖出股票.xlsx')
    print('合并卖出股票***********************')
    print(sell_df)</span></span></div></pre></pre>

评论1

小果量化楼主
发表于 2024-10-10 11:08:43 | 显示全部楼层
源代码全部上传,还有其他的很多形态,可用直接调用源代码(私信领取:QMT使用教学、策略分享、源代码获取)

回复

您需要登录后才可以回帖 登录 | 立即注册

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2025 迅投QMT社区 版权所有 All Rights Reserved. 京ICP备2025122616号-3
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表