一、能量潮指标OBV简介

-
OBV指标的交易信号
-
买入信号:当OBV线上升并突破其移动平均线时,可能表示买盘动能增强,为买入信号。 -
卖出信号:当OBV线下降并跌破其移动平均线时,可能表示卖盘动能增强,为卖出信号。
二、构建基于OBV的交易策略
-
计算OBV值及其移动平均线。 -
设定交易信号的生成规则,如OBV与移动平均线的交叉。 -
根据OBV指标生成买入和卖出信号。
三、OBV能量潮指标策略量化实战

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 假设df是包含股票价格和成交量的DataFrame,其中'Close'是收盘价,'Volume'是成交量
def calculate_obv(df):
df['OBV'] = np.where(df['Close'] > df['Close'].shift(1), df['Volume'], 0) - \
np.where(df['Close'] < df['Close'].shift(1), df['Volume'], 0)
df['OBV_MA'] = df['OBV'].ewm(span=20, adjust=False).mean() # 20日指数移动平均
return df['OBV'], df['OBV_MA']
# 计算OBV指标
obv, obv_ma = calculate_obv(df)
# 生成交易信号
df['Signal'] = 0
df['Signal'][obv > obv_ma] = 1 # 买入信号
df['Signal'][obv < obv_ma] = -1 # 卖出信号
# 绘制OBV指标和交易信号
plt.figure(figsize=(14, 7))
plt.plot(df['Close'], label='Close Price', alpha=0.5)
plt.plot(obv, label='OBV', color='orange')
plt.plot(obv_ma, label='OBV MA', linestyle='--', color='green')
plt.plot(df[df['Signal'] == 1].index, df['Close'][df['Signal'] == 1], '^', markersize=10, color='green', label='Buy Signal')
plt.plot(df[df['Signal'] == -1].index, df['Close'][df['Signal'] == -1], 'v', markersize=10, color='red', label='Sell Signal')
plt.legend()
plt.show()
-
策略回测
四、结语
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/106024
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!