尽管今年大部分股票走势不行,但高股息股息涨势喜人,连创新高。今天就跟大家分享一个非常简单的高股息策略。
主要逻辑如下:
1、每22个交易日换仓一次。
2、每次选择滚动股息率最高的10支股票作为目标持仓。
3、将原持仓中、不在第2条的10支股票中的股票清仓。
4、将不在原持仓中、在第2条的10支股票中的股票买入。
# coding:gbkimport datetime#因为首次写这个策略,没有在QMT中找到股息数据,因此用的tushare数据import ****_tushare as tsts.set_token('********************')pro = ts.pro_api()pro = ts.pro_api(env='qa')pro = ts.pro_api(server='************')#初始化函数def init(C):#这个C.days是记录策略运行的次数,也就是天数 C.days = 0 #账户 C.accountID = '666' #账户类型 C.strAccountType = 'STOCK' #每日运行一次def handlebar(C):#获取策略中的“当天” date = timetag_to_datetime(C.get_bar_timetag(C.barpos),'%Y%m%d') #22个交易日运行一次 if C.days%22 == 0: #在tushare中获取股息数据 df = pro.daily_basic_ts(trade_date=date, fields="ts_code,dv_ttm") #按股息降序排列并取前10支 df = df.sort_values(by='dv_ttm', ascending=False).head(10) #代码转成列表 high_dv_list = df['ts_code'].tolist() #获取持仓情况 pos = get_trade_detail_data(C.accountID, C.strAccountType, 'POSITION', '高股息') #持股代码和数量的字典 hold = {} #填充字典 for p in pos: hold[p.m_strInstrumentID+'.'+p.m_strExchangeID]=p.m_nVolume #卖出(逻辑前面说过) for j,k in hold.items(): if j not in high_dv_list: passorder(24, 1101, C.accountID, j, 5, 0,k, 2, C) print(f'已清仓{j}!-{date}') #买入(逻辑前面说过) for i in high_dv_list: if i not in hold.keys(): passorder(23, 1102, C.accountID, i, 5, 0,100000, 2, C) print(f'已买入{i},金额10万元!-{date}') #每运行一日,记录的天数增加1 C.days += 1
收益情况:


代码中的需要说明的地方我已经在代码区注释了,此策略是简化版,不建议用来模拟或实盘。
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/80972
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!