在交易市场中,技术分析是一个非常重要的工具,它可以帮助投资者识别市场趋势、制定交易策略。技术逻辑指标是技术分析的核心,它们通过数学计算,从价格和成交量中提取出有用的信息。以下是精选的十大技术逻辑指标源码,这些指标在实战中广泛应用,帮助你掌握交易的核心秘籍。
1. 移动平均线(MA)
移动平均线是衡量市场趋势最常用的指标之一。以下是简单移动平均线(SMA)的源码:
def moving_average(prices, window_size):
return [sum(prices[i:i+window_size]) / window_size for i in range(len(prices) - window_size + 1)]
2. 相对强弱指数(RSI)
RSI用于衡量股票或其他资产的超买或超卖状态。以下是RSI的源码:
def rsi(prices, time_period):
delta = [prices[i] - prices[i - 1] for i in range(1, len(prices))]
gain = [0 if x < 0 else x for x in delta]
loss = [0 if x > 0 else -x for x in delta]
avg_gain = sum(gain) / len(gain)
avg_loss = sum(loss) / len(loss)
rs = avg_gain / avg_loss
rsi = 100 - (100 / (1 + rs))
return rsi
3. 平均真实范围(ATR)
ATR用于衡量市场价格的波动性。以下是ATR的源码:
def atr(prices, time_period):
true_ranges = [abs(prices[i] - prices[i - 1]) for i in range(1, len(prices))]
atr_value = sum(true_ranges) / time_period
return atr_value
4. 布林带(Bollinger Bands)
布林带是一种跟踪资产价格的标准偏差的指标。以下是布林带的源码:
def bollinger_bands(prices, window_size, num_of_std):
ma = moving_average(prices, window_size)
std_dev = [sum((price - ma[i])**2 for i in range(len(ma))) / (window_size - 1) for price in ma]
bollinger_upper = [ma[i] + (std_dev[i] * num_of_std) for i in range(len(ma))]
bollinger_lower = [ma[i] - (std_dev[i] * num_of_std) for i in range(len(ma))]
return bollinger_upper, bollinger_lower
5. 成交量加权移动平均线(VWAP)
VWAP是一种衡量市场流动性的指标。以下是VWAP的源码:
def vwap(prices, volumes):
return sum(price * volume for price, volume in zip(prices, volumes)) / sum(volumes)
6. 平均方向性指数(ADX)
ADX用于衡量趋势的强度。以下是ADX的源码:
def adx(prices, time_period):
plus_di = [0] * len(prices)
minus_di = [0] * len(prices)
plus_dm = [0] * len(prices)
minus_dm = [0] * len(prices)
adx_value = [0] * len(prices)
for i in range(1, len(prices)):
plus_di[i] = max(0, prices[i] - prices[i - 1])
minus_di[i] = max(0, prices[i - 1] - prices[i])
plus_dm[i] = max(0, plus_di[i] - plus_di[i - 1])
minus_dm[i] = max(0, minus_di[i] - minus_di[i - 1])
di_plus = sum(plus_dm[i - time_period + 1:i + 1]) / time_period
di_minus = sum(minus_dm[i - time_period + 1:i + 1]) / time_period
di = di_plus - di_minus
plus_di[i] = di_plus / (di_plus + di_minus) * 100
minus_di[i] = di_minus / (di_plus + di_minus) * 100
adx_value[i] = 100 - 100 / (1 + abs(di))
return adx_value[-1]
7. 随机振荡器(Stochastic Oscillator)
随机振荡器用于衡量当前价格相对于一定时间内的价格范围的位置。以下是随机振荡器的源码:
def stochastic_oscillator(prices, time_period):
%K = [100 * (close - min(close, time_period)) / (max(close, time_period) - min(close, time_period)) for close in close]
%D = [sum(K[i-time_period+1:i+1]) / time_period for i in range(time_period, len(K))]
return %K, %D
8. 平均收敛发散(MACD)
MACD是一种衡量价格动量的指标。以下是MACD的源码:
def macd(prices, fast_period, slow_period, signal_period):
ema_fast = moving_average(prices, fast_period)
ema_slow = moving_average(prices, slow_period)
macd_line = [ema_fast[i] - ema_slow[i] for i in range(len(ema_fast))]
signal_line = moving_average(macd_line, signal_period)
histogram = [macd_line[i] - signal_line[i] for i in range(len(macd_line))]
return macd_line, signal_line, histogram
9. 通道宽度(Channel Width)
通道宽度用于衡量价格波动性的变化。以下是通道宽度的源码:
def channel_width(prices, time_period):
ma = moving_average(prices, time_period)
std_dev = [sum((price - ma[i])**2 for i in range(len(ma))) / (time_period - 1) for price in ma]
channel_width = [std_dev[i] / ma[i] * 100 for i in range(len(ma))]
return channel_width
10. 量价趋势(Volume Price Trend)
量价趋势是一种结合成交量与价格趋势的指标。以下是量价趋势的源码:
def volume_price_trend(prices, volumes):
vpt = [0] * len(prices)
for i in range(1, len(prices)):
vpt[i] = (prices[i] - prices[i - 1]) * volumes[i]
return vpt
通过学习和应用这些技术逻辑指标,你可以更好地理解市场动态,制定更有效的交易策略。记住,这些指标只是工具,它们不能保证交易的成功,但它们可以帮助你做出更明智的决策。
