python抢茅台_利用python进行股票技术分析--以茅台为例

"""

利用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'].shift(1)

stock_data['y_std']=stock_data['std'].shift(1)

#计算锤子线形态并判断是否为锤子线:实体线变化范围在一定范围内,下影线要是实体线的一定倍数,上影线要小于下影线一定倍数,当天交易的时候只能用上一天的数据:

stock_data['st_body']=abs(stock_data['open']-stock_data['close'])

stock_data['s_head']=stock_data['high']-stock_data[['open','close']].max(axis=1)

stock_data['x_tail']=stock_data[['open','close']].min(axis=1)-stock_data['low']

stock_data['r_body']=np.where(stock_data['st_body']/stock_data['open']

stock_data['r_head']=np.where(stock_data['s_head']==0,False,stock_data['s_head']/stock_data['x_tail']

stock_data['r_tail']=np.where(stock_data['st_body']==0,True,stock_data['x_tail']/stock_data['st_body']>tail_length)

stock_data['chuizi']=stock_data[['r_body','r_head','r_tail']].all(axis=1)

stock_data['y_chuizi']=stock_data['chuizi'].shift(1)

#3、绘图显示股票的价格、均线、RSI

# 对ts获取到的数据转换成candlestick_ohlc()方法可读取的格式

data_list = []

data_ma=[]

for dates,row in stock_data.iterrows():

# 将时间转换为数字

date_time = datetime.datetime.strptime(row['date'],'%Y-%m-%d')

t = date2num(date_time)

open,high,low, close= row[['open','high','low','close']]

datas = (t,open,high,low,close)

data_list.append(datas)

data_ma.append(t)

# 创建子图

fig, ax = plt.subplots(figsize=(20, 10))

fig.subplots_adjust(bottom=0.2)#子图所在区域的边界

ax.xaxis_date()# 设置X轴刻度为日期时间

plt.xticks()

plt.yticks()

plt.title("股价走势K线图")

plt.xlabel("时间")

plt.ylabel("股价(元)")

mpf.candlestick_ohlc(ax,data_list,width=0.5,colorup='r',colordown='green')

plt.plot(data_ma,stock_data['y_ma'],color='b')

plt.legend()

plt.grid()

fig, ax = plt.subplots(figsize=(20, 10))

fig.subplots_adjust(bottom=0.2)#子图所在区域的边界

ax.xaxis_date()# 设置X轴刻度为日期时间

plt.plot(data_ma,stock_data['y_rsi'],color='r')

plt.title('RSI指标')

plt.legend()

plt.grid()

#4、计算交易过程和逻辑编写:只有同时满足均线、RSI和锤子线三者条件才下单,并计算收益和止损

flag=0 #flag表示持仓记录,0代表空仓,1代表持仓

for i in range(2*ma_period,len(stock_data)):

if flag==0:

#满足三个条件才开仓,并计算收益

if stock_data.loc[i-ma_period,'y_ma']>stock_data.loc[i,'y_ma'] and stock_data.loc[i,'y_rsi']

flag=1

long_openprice=stock_data.loc[i,'open']

long_gap=stock_data.loc[i,'y_std']

stock_data.loc[i,'return']=stock_data.loc[i,'close']/stock_data.loc[i,'open']-1

stock_data.loc[i,'mark']=100

if flag==1:

#设置止损价格,达到止损条件平仓

long_stoplose=max(stock_data.loc[i,'y_ma']-stoplose_std*stock_data.loc[i,'y_std'],long_openprice-long_gap)

if stock_data.loc[i,'low']

flag=0

stock_data.loc[i,'return']=min(stock_data.loc[i,'open'],long_stoplose)/stock_data.loc[i-1,'close']-1

stock_data.loc[i,'mark']=-100

else:

#持仓过程中计算收益

stock_data.loc[i,'return']=stock_data.loc[i,'close']/stock_data.loc[i-1,'close']-1

stock_data.loc[i,'mark']=200

#5、计算策略收益率并绘图,通过曲线图直观显示收益情况,从图表中显示最终获得收益为1.63倍。

stock_data['return'].fillna(0,inplace=True)

stock_data['strategy_return']=(stock_data['return']+1).cumprod()

stock_data['stock_return']=(stock_data['perday_change']+1).cumprod()

fig2 = plt.figure(figsize=(20,10))

ax2 = fig2.add_subplot(1,1,1)

ax2.plot(stock_data.stock_return,color='b')

ax2.plot(stock_data.strategy_return,color='r')

plt.title(stock_code)

plt.legend()

plt.grid()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
茅台是指评价茅台酒的品质和口感特点。作为一款优质的白酒,茅台酒被誉为中国的国酒之一,具有丰富的香气和独特的口感,是中国酒文化的重要代表之一。 茅台酒的品质因素主要包括原材料、酿造工艺和陈酿时间。茅台酒采用高粱为主要原料,经过精心挑选和处理,确保原材料的纯正和优质。酿造工艺方面,茅台酒采用传统的窖藏发酵和陈酿技术,历时多年,使得酒质更加独特和醇厚。此外,茅台酒在陈酿过程中,还通过密封存放和适宜的温度等条件来保持酒的优质状态。 而Python是一种流行的编程语言,被广泛应用于软件开发、数据分析和人工智能等领域。与品茅台相比,Python是一种虚拟的、抽象的概念,主要用于实现技术和创造价值。无论是茅台酒还是Python语言,它们都有自己的独特之处和应用场景。 在品茅台和使用Python的过程中,我们需要细心品味和深入了解它们的特点和优势。品茅台时需要用鼻子和口感去感受其香气和口感,而使用Python时需要深入学习其语法和功能,实践应用以实现编程的目标。 综上所述,品茅台和使用Python都是一种体验和学习的过程,无论是品鉴茅台还是编写Python代码,都需要耐心和细致的态度。无论是享受茅台酒的香醇与醇厚,还是掌握Python的功能和应用,都需要通过实践和积累经验来不断提高。只有深入了解和不断学习,才能真正领略到品茅台和使用Python所带来的丰富与乐趣。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值