红绿带期货多空指标源码
还有疑问,立即追问>

期货入门宝典 期货多空指标

红绿带期货多空指标源码

叩富问财 浏览:1501 人 分享分享


该回答已获得17个赞同

假设你想实现一个简单的红绿带多空指标,基于 SMA (简单移动平均线) 或 EMA (指数移动平均线) 来定义红绿带的范围。我们可以使用绿色表示上升趋势,红色表示下降趋势。以下是一个基于 SMA 计算的红绿带多空指标的源码示例。


import pandas as pd
import numpy as np
import talib as ta
import matplotlib.pyplot as plt

def generate_red_green_bands(data, window=20):
"""
生成红绿带多空分析信号
:param data: 包含OHLCV数据的DataFrame,必须有 'Close' 列
:param window: 均线窗口大小,默认为20
:return: 生成信号的 DataFrame
"""
# 计算简单移动平均
data['SMA'] = ta.SMA(data['Close'], timeperiod=window)

# 生成红绿带信号
data['Color'] = np.where(data['Close'] > data['SMA'], 'Green', 'Red')

# 根据信号生成多空信号
data['Signal'] = 0 # 默认无信号
data.loc[data['Color'] == 'Green', 'Signal'] = 1 # 价格高于均线 -> 多头信号
data.loc[data['Color'] == 'Red', 'Signal'] = -1 # 价格低于均线 -> 空头信号

return data

# 示例数据
data = pd.DataFrame({
'Close': [100, 102, 104, 103, 107, 108, 110, 112, 113, 115, 116, 117, 119, 120]
})

# 生成红绿带信号
signal_data = generate_red_green_bands(data)

# 打印输出
print(signal_data[['Close', 'SMA', 'Color', 'Signal']])

# 可视化红绿带
plt.figure(figsize=(10, 6))
plt.plot(signal_data['Close'], label='Close Price', color='black')
plt.plot(signal_data['SMA'], label=f'{window}-period SMA', color='blue')

# 绘制红绿带
for i in range(1, len(signal_data)):
if signal_data['Color'].iloc[i] == 'Green':
plt.axvspan(i-1, i, color='green', alpha=0.3) # 多头区域
else:
plt.axvspan(i-1, i, color='red', alpha=0.3) # 空头区域

plt.title("Red-Green Bands (SMA-based)")
plt.legend()
plt.show()

发布于2025-1-3 21:04 杭州
当前我在线 直接联系我
17 关注 分享 追问
踩
举报
同城推荐
  • 咨询

    从业认证| 入驻1年

  • 咨询

    从业认证| 从业2年

  • 咨询

    从业认证| 入驻1年

相关文章
回到顶部