股票学习网

股票入门基础知识和炒股入门知识 - - 股票学习网!

尾盘选股策略(选股策略 python)

2023-06-30 17:24分类:ARBR 阅读:

(本文由公众号越声投顾(yslcw927))整理,仅供参考,不构成操作建议。如自行操作,注意仓位控制和风险自负。)

短线操作能在短时间获取比较丰厚的利润,也是很多投资者都会选择的操作模式,但机会和风险共生,想要有短时间的利润,就要承担更大的风险。

Unit=(1%∗账户总资金)/N

【qstock开源了】数据篇之行情交易数据

动态止损或清仓条件

并初步得出结论:

01 引言

02 Python计算均线动量

#均线可视化 cols=['close']+[str(i)+'日均线' for i in np.linspace(10, 100, 10)] qs.line(df['2020':][cols])

03 动量回测

策略思路:当短期均线大于长期均线呈现多条均线的多头排列时,买入做多,当均线呈现空头排列时卖出。使用汉明距离可以度量均线的多头与空头排列得分,当出现完美的均线多头时(短期均线依次大于长期均线,如10日MA > 20日MA >… 100日MA),得分为1;当出现完美的空头时,即短期均线依次小于长期均线,如10日MA < 20日MA <… <100日MA)得为0,其他均线排列得分位于0-1之间。可以根据得分设定一个门槛值,如当scores得分大于0.5,给出买入或持有的信号,否则为卖出或做空信号。

#封装成函数方便后面进行回测分析 def ma_momentum(code,benchmark='hs300',start='20100101',end='202201219',ma_list=None,threshold=0.8): df=qs.data_feed(code,index=benchmark,start=start,end=end,fqt=2) ss=np.linspace(10, 100, 10) if ma_list is None else ma_list for i in ss: df[str(i)+'日均线']=df['close'].rolling(window=int(i),center=False).mean() df.dropna(inplace=True) cols=[str(i)+'日均线' for i in ss] for date in df.index: ranking = stats.rankdata(df.loc[date,cols].values) df.loc[date,'scores']= distance.hamming(ranking, range(1,len(ss)+1)) #当日均线多头排列scores=1发出买入信号设置为1 df.loc[df['scores']>threshold, 'signal'] = 1 #当日均线空头排列scores=0发出买入信号设置为0 df.loc[df['scores']<=threshold, 'signal'] = 0 df['position']=df['signal'].shift(1) df['position'].fillna(method='ffill',inplace=True) d=df[df['position']==1].index[0]-timedelta(days=1) df1=df.loc[d:].copy() df1['position'][0]=0 #当仓位为1时,买入持仓,当仓位为0时,空仓,计算资金净值 df1['capital_ret']=df1.rets.values*df1['position'].values #计算策略累计收益率 df1['capital_line']=(df1.capital_ret+1.0).cumprod() return df1

#可以通过ma_list自定义设置ma均线计算周期 #如ma_list=[3, 5, 8, 13, 21, 34, 55, 89, 144, 233] #ma_list=None表示默认使用10-100日均线 data=ma_momentum('中国平安',ma_list=None,threshold=0.8)

fib=[3, 5, 8, 13, 21, 34, 55, 89, 144, 233] data=ma_momentum('贵州茅台',ma_list=fib,threshold=0.5) qs.start_backtest(data)

04 结语

https://www.haobaihe.com

上一篇:铁矿石股票龙头(铁矿石概念股票有哪些)

下一篇:钻石底部很朦胧(钻石底什么意思)

相关推荐

返回顶部