Arnaud Legoux 이동평균(ALMA)은 가우스 함수 가중치를 적용해 최근 가격에 민감하게 반응하도록 만든 이동평균 지표입니다. 기존 이동평균보다 부드럽고 반응성이 뛰어나며, 추세 파악과 신호 신뢰성을 높이는 데 사용됩니다. 핵심 변수는 기간, 오프셋, 시그마 세 가지이며, 설정에 따라 곡선의 민감도가 달라집니다. 가격 흐름에 맞춰 유연하게 조정할 수 있어 추세 분석과 필터링에 자주 활용됩니다.
ALMA 구현
import pandas as pd
import ccxt
import pinetopy as pp
import numpy as np
# Binance Futures, BTCUSDT, 1h
bnb = ccxt.binance({'options': { 'defaultType': 'future' }})
ohlcv = bnb.fetch_ohlcv(symbol="BTC/USDT", timeframe="1h", limit=500)
df = pd.DataFrame(ohlcv, columns=['time', 'open', 'high', 'low', 'close', 'volume'])
df['time'] = pp.kst(df['time'])
# TradingView Default Settings
def main(df, length=9, offset=0.85, sigma=6):
src = df['close'].values
alma = np.full(len(src), np.nan)
for i in range(length - 1, len(src)):
m = offset * (length - 1)
s = length / sigma
norm = 0.0
weighted_sum = 0.0
for j in range(length):
weight = np.exp(-1 * ((j - m) ** 2) / (2 * (s ** 2)))
norm += weight
weighted_sum += src[i - length + j + 1] * weight
alma[i] = weighted_sum / norm
df['alma'] = alma
return df
print(main(df))
Check
트레이딩뷰 차트와 비교

