假设你想实现一个简单的红绿带多空指标,基于 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 杭州


1对1私行级陪伴









1分钟入驻>
期货 现手 红 绿
您好,在期货交易里,多空指标是辅助判断市场多空力量的工具,不过目前并没有公开能免费获取3个高胜率版本源码的渠道。而且,源码的质量和胜率也不能一概而论,“高胜率”也没有绝对标准。下面给您...
您好,告别无用指标!免费期货多空指标源码,3个特色款精准提示!我们精选三款独家源码,彻底解决您的选择困难!第一款是“趋势狙击手”,以变色K线明确多空方向,简单粗暴;第二款是“波段起爆点... 

公网安备:11010802032515号 ICP备案:京ICP备18019099号-3