“”"
利用python进行股票技术分析–以茅台为例
通过下述策略对利用python进行股票技术分析,可以举一反三,并且能够实现复杂的技术分析策略,同时可以同python的宏观数据、公司基本面数据、舆情等分析结合起来。
策略原理:在股票下跌过程中,当出现上涨锤子线,显示行情先继续下跌后出现大幅反弹,行情可能由此反转;
利用均线识别下跌趋势,以下跌趋势中出现锤子线,同时以RSI出现超卖,三种信号出现作为开仓信号;
采用移动止损方式进行止损,止损条件:当天最低价 < max(均价-观察期内一定倍数的标准差,开仓价-开仓时标准差)
“”"
1、设置参数变量
stock_code='600519' #股票代码
start_time='2018-01-01' #开始时间
end_time='2020-02-15' #截止时间
body_range=0.05 #实体线波动范围
head_length=0.5 #上影线长度
tail_length=2 #下影线长度
ma_period=9 #均线周期
rsi_period=5 #rsi周期
rsi_oversell=30 #超卖
stoplose_std=2 #止损标准差倍数
2、抓取股票日线数据并加工处理
stock_data=ts.get_k_data(stock_code,start=start_time,end=end_time)
stock_data.sort_index(ascending=True,inplace=True)
stock_data.reset_index(inplace=True)
del stock_data['volume']
del stock_data['code']
stock_data=pd.DataFrame(stock_data)
#计算每天的收益变化
stock_data['perday_change']=stock_data['close'].pct_change()
#计算指标,当天交易的时候只能用上一天的数据:
stock_data['ma']=ta.SMA(np.asarray(stock_data['close']),timeperiod=ma_period)
stock_data['rsi']=ta.RSI(np.asarray(stock_data['close']),timeperiod=rsi_period)
stock_data['std']=stock_data['close'].rolling(ma_period).std()
stock_data['y_ma']=stock_data['ma'].shift(1)
stock_data['y_rsi']=stock_data['rsi'].sh