在股票、期货等金融市场,技术指标是投资者分析市场趋势、制定交易策略的重要工具。指南针技术指标因其精准和实用性,深受广大投资者的喜爱。本文将揭秘10个经典指南针技术指标源码,帮助您轻松捕捉市场脉搏。
1. 移动平均线(MA)
移动平均线是衡量市场趋势的重要指标。以下是计算5日、10日、20日移动平均线的源码示例:
def moving_average(data, window):
return [sum(data[i:i+window]) / window for i in range(len(data) - window + 1)]
data = [10, 12, 11, 13, 14, 15, 16, 17, 18, 19, 20]
ma_5 = moving_average(data, 5)
ma_10 = moving_average(data, 10)
ma_20 = moving_average(data, 20)
2. 相对强弱指数(RSI)
相对强弱指数用于衡量股票或其他资产的超买和超卖情况。以下是计算RSI的源码示例:
def rsi(data, window):
gains = [max(data[i+1] - data[i], 0) for i in range(len(data) - window)]
losses = [max(data[i] - data[i+1], 0) for i in range(len(data) - window)]
avg_gain = sum(gains) / len(gains)
avg_loss = sum(losses) / len(losses)
rs = avg_gain / avg_loss
return 100 - (100 / (1 + rs))
data = [10, 12, 11, 13, 14, 15, 16, 17, 18, 19, 20]
rsi = rsi(data, 14)
3. 平均方向性指数(ADX)
平均方向性指数用于衡量市场趋势的强度。以下是计算ADX的源码示例:
def adx(data, window):
plus_di = [max(data[i+1] - data[i], 0) for i in range(len(data) - window)]
minus_di = [max(data[i] - data[i+1], 0) for i in range(len(data) - window)]
plus_dm = [max(plus_di[i+1] - plus_di[i], 0) for i in range(len(plus_di) - window)]
minus_dm = [max(minus_di[i+1] - minus_di[i], 0) for i in range(len(minus_di) - window)]
plus_di_sum = sum(plus_dm) / len(plus_dm)
minus_di_sum = sum(minus_dm) / len(minus_dm)
adx = 100 * (abs(plus_di_sum - minus_di_sum) / (plus_di_sum + minus_di_sum))
return adx
data = [10, 12, 11, 13, 14, 15, 16, 17, 18, 19, 20]
adx = adx(data, 14)
4. 布林带(Bollinger Bands)
布林带是一种跟踪市场波动性的指标。以下是计算布林带的源码示例:
def bollinger_bands(data, window, std_dev):
ma = moving_average(data, window)
std_devs = [sum((x - ma[i])**2 for i, x in enumerate(data[i:i+window])) / window for i in range(len(data) - window + 1)]
upper_band = [ma[i] + std_dev * std_devs[i] for i in range(len(ma))]
lower_band = [ma[i] - std_dev * std_devs[i] for i in range(len(ma))]
return upper_band, lower_band
data = [10, 12, 11, 13, 14, 15, 16, 17, 18, 19, 20]
upper_band, lower_band = bollinger_bands(data, 14, 2)
5. 随机振荡器(Stochastic Oscillator)
随机振荡器用于衡量市场超买和超卖情况。以下是计算随机振荡器的源码示例:
def stochastic_oscillator(data, window):
k = [sum(data[i:i+window]) / window for i in range(len(data) - window + 1)]
d = [sum(k[i:i+window]) / window for i in range(len(k) - window + 1)]
return [100 * (k[i] - min(k[i:i+window])) / (max(k[i:i+window]) - min(k[i:i+window])) for i in range(len(k))], [100 * (d[i] - min(d[i:i+window])) / (max(d[i:i+window]) - min(d[i:i+window])) for i in range(len(d))]
data = [10, 12, 11, 13, 14, 15, 16, 17, 18, 19, 20]
k, d = stochastic_oscillator(data, 14)
6. 平均成交量(AVG)
平均成交量用于衡量市场活跃度。以下是计算平均成交量的源码示例:
def average_volume(data, window):
return [sum(data[i:i+window]) / window for i in range(len(data) - window + 1)]
data = [100, 120, 110, 130, 140, 150, 160, 170, 180, 190, 200]
avg_volume = average_volume(data, 14)
7. 威廉指标(William’s %R)
威廉指标用于衡量市场超买和超卖情况。以下是计算威廉指标的源码示例:
def williams_r(data, window):
rsv = [100 * (max(data[i+1:i+window+1]) - data[i]) / (max(data[i+1:i+window+1]) - min(data[i+1:i+window+1])) for i in range(len(data) - window)]
return [100 - rsv[i] for i in range(len(rsv))]
data = [10, 12, 11, 13, 14, 15, 16, 17, 18, 19, 20]
williams_r = williams_r(data, 14)
8. 乖离率(BIAS)
乖离率用于衡量市场偏离长期趋势的程度。以下是计算乖离率的源码示例:
def bias(data, window):
ma = moving_average(data, window)
return [(data[i] - ma[i]) / ma[i] * 100 for i in range(len(data) - window + 1)]
data = [10, 12, 11, 13, 14, 15, 16, 17, 18, 19, 20]
bias = bias(data, 14)
9. 成交量比率(VR)
成交量比率用于衡量市场多空力量对比。以下是计算成交量比率的源码示例:
def volume_ratio(data, window):
plus_volume = [sum(data[i:i+window]) for i in range(len(data) - window + 1)]
minus_volume = [sum(data[i:i+window]) for i in range(len(data) - window + 1)]
return [sum(plus_volume[i:i+window]) / sum(minus_volume[i:i+window]) for i in range(len(plus_volume) - window + 1)]
data = [100, 120, 110, 130, 140, 150, 160, 170, 180, 190, 200]
vr = volume_ratio(data, 14)
10. 震荡量指标(Vortex Indicator)
震荡量指标用于衡量市场波动性。以下是计算震荡量指标的源码示例:
def vortex_indicator(data, window):
a = [data[i] - data[i-1] for i in range(1, len(data))]
b = [sum(a[i:i+window]) for i in range(len(a) - window + 1)]
return [sum(b[i:i+window]) for i in range(len(b) - window + 1)]
data = [10, 12, 11, 13, 14, 15, 16, 17, 18, 19, 20]
vortex = vortex_indicator(data, 14)
通过学习以上10个经典指南针技术指标源码,您将能够更好地捕捉市场脉搏,为您的投资决策提供有力支持。在实际应用中,请根据市场情况和自身风险承受能力,灵活运用这些指标。祝您投资顺利!
