程序目前支持自定义交易股票池,我自定义一个自定义固收+ETF趋势择时策略,我选择了市场年化比较高的ETF,固收选择了国债ETF,我单独开发了一个ETF分析框架,部分内容,分析框架用了统一 的分析的趋势模块
<pre class="public-DraftStyleDefault-pre" data-offset-key="du7fb-0-0"><pre class="Editable-styled" data-block="true" data-editor="am7s1" data-offset-key="du7fb-0-0"><div data-offset-key="du7fb-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="du7fb-0-0"><span data-text="true">def getindex**ysis_models_data(self,index_stock=['511010','515220','513100','501018','159937'],
index_name=['国债ETF','煤炭ETF','纳斯达克','原油','黄金']):
'''
指数基金收益分析
'''
index_stock=['159915', '510300', '510500', '510050', '159902', '515220', '512880', '159865', '512660', '512290', '512720', '515880', '510230', '159996', '515210', '515170', '159967', '513330', '515030', '159995', '512170', '516020', '512800', '515000', '515260', '516800', '511010', '511260', '510900', '513500', '513100']
#index_name=['创业板指ETF', '沪深300ETF', '中证500ETF', '上证50ETF', '中小板ETF', '煤炭ETF', '证券ETF', '养殖ETF', '军工ETF', '生物医药ETF', '计算机ETF', '通信ETF', '金融ETF', '家电ETF', '钢铁ETF', '食品饮料ETF', '创成长ETF', '恒生互联网ETF', '新能源车ETF', '芯片ETF', '医疗ETF', '化工ETF', '银行ETF', '科技ETF', '电子ETF', '智能制造ETF', '国债ETF', '十年国债ETF', 'H股ETF', '标普500ETF', '纳指100ETF']
#最新价
price_list=[]
#涨跌幅
zdf_list=[]
#5年涨跌幅
year_5_zdf_list=[]
#3年
year_3_zdf_list=[]
#2年
year_2_zdf_list=[]
#1年
year_1_zdf_list=[]
#6个月
moth_6_zdf_list=[]
#3个月
moth_3_zdf_list=[]
#1个月
moth_1_zdf_list=[]
df=pd.DataFrame()
for i in tqdm(range(len(index_stock))):
try:
stock=index_stock[i]
hist=self.data.get_hist_data_em(start_date='20160101',stock=stock,limit=100000000000)
price=hist['close'].tolist()[-1]
price_list.append(price)
zdf=hist['涨跌幅'].tolist()[-1]
zdf_list.append(zdf)
year_5_zdf=hist[-1250:]['close'].pct_change().cumsum().tolist()[-1]
year_5_zdf_list.append(year_5_zdf)
year_3_zdf=hist[-750:]['close'].pct_change().cumsum().tolist()[-1]
year_3_zdf_list.append(year_3_zdf)
year_2_zdf=hist[-500:]['close'].pct_change().cumsum().tolist()[-1]
year_2_zdf_list.append(year_2_zdf)
year_1_zdf=hist[-250:]['close'].pct_change().cumsum().tolist()[-1]
year_1_zdf_list.append(year_1_zdf)
moth_6_zdf=hist[-120:]['close'].pct_change().cumsum().tolist()[-1]
moth_6_zdf_list.append(moth_6_zdf)
moth_3_zdf=hist[-60:]['close'].pct_change().cumsum().tolist()[-1]
moth_3_zdf_list.append(moth_3_zdf)
moth_1_zdf=hist[-20:]['close'].pct_change().cumsum().tolist()[-1]
moth_1_zdf_list.append(moth_1_zdf)
except:
#最新价
print(stock,"失败")
price_list.append(0)
#涨跌幅
zdf_list.append(0)
#5年涨跌幅
year_5_zdf_list.append(0)
#3年
year_3_zdf_list.append(0)
#2年
year_2_zdf_list.append(0)
#1年
year_1_zdf_list.append(0)
#6个月
moth_6_zdf_list.append(0)
#3个月
moth_3_zdf_list.append(0)
#1个月
moth_1_zdf_list.append(0)
df['ETF代码']=index_stock
df['ETF名称']=index_name
df['最新价']=price_list
df['涨跌幅']=zdf_list
df['1个月涨跌幅']=moth_1_zdf_list
df['3个月涨跌幅']=moth_3_zdf_list
df['6个月涨跌幅']=moth_6_zdf_list
df['1年涨跌幅']=year_1_zdf_list
df['2年涨跌幅']=year_2_zdf_list
df['3年涨跌幅']=year_3_zdf_list
df['5年涨跌幅']=year_5_zdf_list
df['涨跌幅']=df['涨跌幅'].apply(lambda x:str(round(x*100,2))+'%')
df['1个月涨跌幅']=df['1个月涨跌幅'].apply(lambda x:str(round(x*100,2))+'%')
df['3个月涨跌幅']=df['3个月涨跌幅'].apply(lambda x:str(round(x*100,2))+'%')
df['6个月涨跌幅']=df['6个月涨跌幅'].apply(lambda x:str(round(x*100,2))+'%')
df['1年涨跌幅']=df['1年涨跌幅'].apply(lambda x:str(round(x*100,2))+'%')
df['2年涨跌幅']=df['2年涨跌幅'].apply(lambda x:str(round(x*100,2))+'%')
df['3年涨跌幅']=df['3年涨跌幅'].apply(lambda x:str(round(x*100,2))+'%')
df['5年涨跌幅']=df['5年涨跌幅'].apply(lambda x:str(round(x*100,2))+'%')
df=df[['ETF代码','ETF名称','1个月涨跌幅','3个月涨跌幅','6个月涨跌幅',
'1年涨跌幅','2年涨跌幅','3年涨跌幅','5年涨跌幅']]
#df.to_excel(r'ETF数据.xlsx')
return df</span></span></div></pre></pre>
自定义交易股票池支持,etf,可转债,股票,自定义交易股票池只需要证券代码
<pre class="public-DraftStyleDefault-pre" data-offset-key="84k47-0-0"><pre class="Editable-styled" data-block="true" data-editor="am7s1" data-offset-key="84k47-0-0"><div data-offset-key="84k47-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="84k47-0-0"><span data-text="true">证券代码 名称
511010 国债ETF
515220 煤炭ETF
513100 纳斯达克
501018 原油
159937 黄金
</span></span></div></pre></pre>
我们对组合进行分析8年的数据,支持自定义ETF

<pre class="public-DraftStyleDefault-pre" data-offset-key="dfcbk-0-0"><pre class="Editable-styled" data-block="true" data-editor="am7s1" data-offset-key="dfcbk-0-0"><div data-offset-key="dfcbk-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="dfcbk-0-0"><span data-text="true"> ETF代码 ETF名称 1个月涨跌幅 3个月涨跌幅 6个月涨跌幅 1年涨跌幅 2年涨跌幅 3年涨跌幅 5年涨跌幅
0 511010 国债ETF 0.04% -0.0% 0.57% 2.4% 5.58% 8.78% 14.88%
1 515220 煤炭ETF 9.99% 9.72% 17.92% 6.51% 43.71% 106.45% 123.28%
2 513100 纳斯达克 3.35% 1.06% 9.45% 31.31% 14.12% 37.21% 97.63%
3 501018 原油 -5.62% -4.66% 11.96% -2.42% 38.8% 101.92% 11.86%
4 159937 黄金 0.07% 2.36% 5.25% 15.88% 21.94% 16.87% 57.34%
</span></span></div></pre></pre>
组合的分析


年华9%差不多,程序还有趋势交易
交易配置选择交易系统,支持同花顺qmt,比他qmt
<pre class="public-DraftStyleDefault-pre" data-offset-key="9miu3-0-0"><pre class="Editable-styled" data-block="true" data-editor="am7s1" data-offset-key="9miu3-0-0"><div data-offset-key="9miu3-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="9miu3-0-0"><span data-text="true">"交易系统设置":"*****",
"交易系统选择":"ths/qmt",
"交易系统":"qmt",
"交易品种":"fund",
"交易品种说明":["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>
选择交易品种比如我们选择基金,fund
<pre class="public-DraftStyleDefault-pre" data-offset-key="8q404-0-0"><pre class="Editable-styled" data-block="true" data-editor="am7s1" data-offset-key="8q404-0-0"><div data-offset-key="8q404-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="8q404-0-0"><span data-text="true">"交易品种":"fund",
"交易品种说明":["stock","fund","bond","全部"],</span></span></div></pre></pre>
选择交易策略比如自定义股票池
<pre class="public-DraftStyleDefault-pre" data-offset-key="9j7re-0-0"><pre class="Editable-styled" data-block="true" data-editor="am7s1" data-offset-key="9j7re-0-0"><div data-offset-key="9j7re-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="9j7re-0-0"><span data-text="true">"自定义交易":"****",
"自定义运行函数设置":"自定义运行函数说明,运行类型有定时和循环,只需要把自定义模块的函数名称放在下面**",
"目前设置说明":"早上交易人气,下午做概念,2个策略的间隔长,干扰小,手动更新数据是最后一个策略的",
"自定义函数运行类型":["定时"],
"自定义函数模块运行时间":["09:45"],
"自定义函数":["run_customize_trading_strategies"],</span></span></div></pre></pre>
框架的策略,我给了自定义策略模块
<pre class="public-DraftStyleDefault-pre" data-offset-key="lh6j-0-0"><pre class="Editable-styled" data-block="true" data-editor="am7s1" data-offset-key="lh6j-0-0"><div data-offset-key="lh6j-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="lh6j-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":"聚宽跟单成交模式",
"run_customize_trading_strategies":"自定义交易股票池"
},</span></span></div></pre></pre>
选择资金分析默认比如我们选择金额,程序回自动计算
<pre class="public-DraftStyleDefault-pre" data-offset-key="62uia-0-0"><pre class="Editable-styled" data-block="true" data-editor="am7s1" data-offset-key="62uia-0-0"><div data-offset-key="62uia-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="62uia-0-0"><span data-text="true">资金管理模块说明":"程序默认管理方式有数量/资金",
"资金分配设置":"交易数量设置数量和金额,利用可转债最低单位位设置条件,股票在基础数据10,etf100,值调整持有限制,持股限制",
"交易模式":"金额",
"固定交易资金":5000,
"持有金额限制":5000,
"固定交易数量":10,
"持有限制":10,
"持股限制":10,</span></span></div></pre></pre>
设置自定义趋势
<pre class="public-DraftStyleDefault-pre" data-offset-key="cgloa-0-0"><pre class="Editable-styled" data-block="true" data-editor="am7s1" data-offset-key="cgloa-0-0"><div data-offset-key="cgloa-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="cgloa-0-0"><span data-text="true">"自定义交易品种交易":"自定义交易类型比如股票,可转债,etf***",
"自定义交易品种跌破N日均线卖出":5,
"自定义交易品种持有分数":50,
"买入前N":5,</span></span></div></pre></pre>
运行user_def_models更新数据
<pre class="public-DraftStyleDefault-pre" data-offset-key="6fbej-0-0"><pre class="Editable-styled" data-block="true" data-editor="am7s1" data-offset-key="6fbej-0-0"><div data-offset-key="6fbej-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="6fbej-0-0"><span data-text="true">持仓数量: 25
Empty DataFrame
Columns: [账号类型, 资金账号, 证券代码, 股票余额, 可用余额, 成本价, 市值, 选择]
Index: []
剔除黑名单**
Empty DataFrame
Columns: [账号类型, 资金账号, 证券代码, 股票余额, 可用余额, 成本价, 市值, 选择, 黑名单]
Index: []
账号类型 资金账户 可用金额 冻结金额 持仓市值 总资产
0 2 55009640 19953010.19 0.0 50569.73 20003577.92
自定义交易股票池****
证券代码 名称
0 511010 国债ETF
1 515220 煤炭ETF
2 513100 纳斯达克
3 501018 原油
4 159937 黄金
证券代码 名称 持股检查 跌破均线 均线得分
1 515220 煤炭ETF 没有持股 不是 75
0 511010 国债ETF 没有持股 不是 50
4 159937 黄金 没有持股 不是 50
买入*****
证券代码 名称 持股检查 跌破均线 均线得分 选择 交易状态
0 515220 煤炭ETF 没有持股 不是 75 持股不足 未买
1 511010 国债ETF 没有持股 不是 50 持股不足 未买
2 159937 黄金 没有持股 不是 50 持股不足 未买
PS C:\Users\Admin\Desktop\综合自定义交易系统v5.4.3加入了自定义交易,检查了数据></span></span></div></pre></pre>

我们可以发行自定义5个交易股票池,但是买入的结构只有3个,符合程序就会买入,不断轮动
运行trader_strategy.py 开启交易

运行的效果

买入 的效果,自动计算分配资金

下单的结果,周末不能交易

源代码+交易模型领取、QMT开通、策略分享、问题答疑,评论区留言或私信。