开启掘金生长之旅!这是我参与「掘金日新计划 2 月更文挑战」的第 21 天,点击检查活动详情
前言
上节文章咱们讲了macd
买卖点,macd
买卖点是咱们最常用的买卖点,而均线买卖点也是咱们股市的常用指标,接下来几节课咱们会多讲几种买卖点,然后把几种买卖点进行组合,得出一种最优的买卖点,好说干就干
均线战略
你在股市是否有这样的疑惑? 究竟什么时候该补仓,究竟什么时候该减仓?为什么每次止损经常抛出地板价?不止损又跌跌不休。
而今日咱们学的均线战略,就是专门处理这类问题的
什么是均线战略
双均线战略,通过建立m
天移动平均线,n
天移动平均线,则两条均线必有交点。若m>n,n天平均线“上穿越”m天均线则为买入点,反之为卖出点。该战略根据不同天数均线的交叉点,捉住股票的强势和弱势时刻,进行买卖
下面是一个双均线战略的比如
双均线函数
def ma_strategy(data, short_window=5, long_window=20):
"""
双均线战略
:param data: dataframe, 出资标的行情数据(有必要包括收盘价)
:param short_window: 短期n日移动平均线,默许5
:param long_window: 长时间n日移动平均线,默许20
:return:
"""
print("==========当时周期参数对:", short_window, long_window)
data = pd.DataFrame(data)
# 核算技术指标:ma短期、ma长时间
data['short_ma'] = data['close'].rolling(window=short_window).mean()
data['long_ma'] = data['close'].rolling(window=long_window).mean()
# 生成信号:金叉买入、死叉卖出
data['buy_signal'] = np.where(data['short_ma'] > data['long_ma'], 1, 0)
data['sell_signal'] = np.where(data['short_ma'] < data['long_ma'], -1, 0)
# 过滤信号:st.compose_signal
data = bs.compose_signal(data)
return data;
整合信号函数修正
def compose_signal(data):
# 整合信号
# buy_signal 为买入信号,设置为1,假如当时买入信号为1并且前一个买入信号也为1,那么设置当时买入信号为零
data.loc[(data['buy_signal'] == 1) & (data['buy_signal'].shift(1) == 1), 'buy_signal'] = 0
# sell_signal 为卖出信号,设置为-1,假如当时卖出信号为-1并且前一个卖出信号也为-1,那么设置当时卖出信号为零
data.loc[(data['sell_signal'] == -1) & (data['sell_signal'].shift(1) == -1), 'sell_signal'] = 0
# signal
data_copy = data.copy();
data_copy.loc[:, 'signal'] = data_copy['buy_signal'] + data_copy['sell_signal']
# 假如第一条数据的sell_signal为-1的话,那么修正sell_signal为0
data_signal = data_copy[data_copy['signal'] != 0];
if data_signal.iloc[0]['signal'] == -1:
data_copy.loc[data_signal.index[0], 'sell_signal'] = 0;
return data_copy
主要是加了假如第一条数据的sell_signal
为-1的话,那么修正sell_signal
为0,防止呈现咱们还没买入呢,就卖出
封装核算收益率函数
def calculate_profit(data, code):
"""
核算收益率
:param data: dataframe, 出资标的行情数据(有必要包括收盘价)
:param code: 股票代码
:return:
"""
# 核算收益率
data = bs.calculate_profit_pct(data);
# 核算累计收益率
data = bs.calculate_cum_prof(data);
data['cum_profit'] = data['cum_profit'] * 100;
print(data);
bs.show_chart(data, code);
均线战略收益率
也就是5日上穿10日均线买入,5日下穿10日均线卖出
def short_strategy(code, start_time, end_time=None):
"""
短线买卖战略
:param data: dataframe, 出资标的行情数据(有必要包括收盘价)
:param short_window: 短期n日移动平均线,默许5
:param long_window: 长时间n日移动平均线,默许20
:return:
"""
data = st.get_csv_price(code, start_time, end_time);
data = ma_strategy(data, 5, 10);
calculate_profit(data, code);
# bs.show_buy_sell_chart(data, code);
此时看一下咱们的收益率
一共买入卖出4次,收益率为38.77%
仍是很可观的
对比一下确实是在这一天形成了死叉
均线战略买卖点是否契合预期
接下来检查一下买卖点,买卖点仍是咱们上一节课已经封装了,这节课就直接拿来用
good
,仍是比较契合预期的
总结
- 现在测验000001均线战略比macd战略收益高,所以仍是要多测验一些股票,看一下是否买卖战略可靠
- 能否把macd战略和均线战略进行融合?
- 怎么落地买卖点,真正用于实战?
上面这些问题,都会在后面的文章进行更新,⛽️