量化学习——双均线策略

多头:短期均线在长期均线上方
空头:短期均线在长期均线下方
金叉:短期均线向上穿越长期均线
死叉:短期均线向下穿越长期均线
买出信号:金叉 + 一定的条件
卖出出信号:死叉 + 一定的条件
双均线:一句话来讲就是金叉买死叉卖。
布林带:突破压力线(上轨)清仓,跌破支撑线(下轨)持仓。
PEG:根据PE/G调整仓位。
均值回归:跌下去的要涨,涨上来的要跌(废话。
羊驼:随机选股,定期调仓(意外地能赚?)

import akshare as ak
import numpy as np
import pandas as pd
from datetime import datetime
import matplotlib.pyplot as plt
import mplfinance as mpf
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']  # 设置中文字体为微软雅
plt.rcParams['font.sans-serif'] = ['SimHei']        # 字体设置
import matplotlib
matplotlib.rcParams['axes.unicode_minus']=False    # 负号显示问题
end =datetime.now().strftime('%Y%m%d')
#code= str(stock_pool['代码'].values[i])
code = '600309'
df =  ak.stock_zh_a_hist(symbol=code, period="daily", start_date="19900301", end_date=end, adjust="")
df.rename(columns= {'日期':'date','开盘':'open','最高':'high','最低':'low','收盘':'close','成交量':'volume'},inplace=True)
df['code'] = code
data = df

# 查看是否有缺失值
print("缺失值个数;", data["close"].isna().sum())  # 缺失值个数为0, 无需去除空值
print(data.head())
# 定义短期平均和长期时间窗口
SMA_1 = 7
SMA_2 = 14
 
# 计算均线
data['7_day_moving_average'] = data["close"].rolling(SMA_1).mean()  # 7 天均线
data['14_day_moving_average'] = data["close"].rolling(SMA_2).mean()  # 14 天平均 
print(data.tail())
print(data.index)
# 画图
data.plot(figsize=(16, 12))
 
# 标记黄金交叉和死亡交叉位置
data["Position"] = np.where(data["7_day_moving_average"] > data["14_day_moving_average"], 1, -1)
print(data.head())
# 画图
data.plot(secondary_y='Position',figsize=(16, 12))
 
# 二 获取pd数据处理
 
df_ma5 = df['close'].rolling(5).mean() #计算收盘价5日短期移动平均
df_ma60 = df['close'].rolling(60).mean() #计算收盘价60日长期移动平均
# df_ma5o = df_ma5['2020-03':'2020-04'] #取2020年3月和2020年4月的数据
# df_ma60o = df_ma60['2020-03':'2020-04']
# df_org = df['close']['2020-03':'2020-04']
df_ma5o = df_ma5 #取2020年3月和2020年4月的数据
df_ma60o = df_ma60
df_org = df['close']
plt.figure(figsize=(15, 8)) #调整图片大小
plt.plot(df_ma5o.index, df_ma5o, label='5 days moving average')
plt.plot(df_ma60o.index, df_ma60o, label='60 days moving average')
plt.plot(df_org.index, df_org, label='price')
plt.xticks(df_ma60o.index[::10], rotation=45)
plt.gcf().subplots_adjust(bottom=0.20)
plt.legend(loc='upper left') #左上加上图例
plt.show()
 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神出鬼没,指的就是我!

必须花钱,数据超好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值