머니 플로우 인덱스 지표(MFI)는 매수 및 매도 압력을 측정하기 위한 기술적 분석에 사용되는 도구입니다. 이는 가격과 거래량을 모두 분석하여 이루어집니다. MFI는 계산을 통해 값을 생성한 다음 0-100 범위 내에서 움직이는 선으로 표시하여 오실레이터로 만듭니다. MFI가 상승하면 매수 압력이 증가했음을 나타냅니다. 하락하면 매도 압력이 증가하고 있음을 나타냅니다. 머니 플로우 지수는 과매수 및 과매도 상태, 다이버전스, 실패 스윙 등 여러 가지 신호를 생성할 수 있습니다.
– 출처: 트레이딩뷰
MFI 구현
pip install pandas ccxt numpy
import pandas as pd
import ccxt
import numpy as np
# 예시) 바이낸스 선물 BTCUSDT, 1시간 봉
bnb = ccxt.binance({'options': { 'defaultType': 'future' }})
def MFI(length=14):
ohlcv = bnb.fetch_ohlcv(symbol="BTC/USDT", timeframe="1h", limit=500)
df = pd.DataFrame(ohlcv, columns=['time', 'open', 'high', 'low', 'close', 'volume'])
df['hlc3'] = (df['high'] + df['low'] + df['close']) / 3
delta = df['hlc3'].diff()
upper = (df['volume'] * np.where(delta > 0, df['hlc3'], 0)).rolling(window=length).sum()
lower = (df['volume'] * np.where(delta < 0, df['hlc3'], 0)).rolling(window=length).sum()
df['MFI'] = 100.0 - (100.0 / (1.0 + (upper / lower)))
df['MFI'] = df['MFI'].round(2)
return df
print(MFI(length=14)) # 트레이딩뷰 디폴트 값
Check
트레이딩뷰 차트와 비교

