Python으로 MACD 4C 지표 구현하기

MACD 4C는 트레이딩뷰 오픈 소스로 ‘vkno422‘ 라는 유저가 공개하였습니다.

트레이딩뷰: https://kr.tradingview.com/script/4IYKX938-MACD-4C/

💡 유저 설명 풀이
라임(lime) – MACD 값이 양수이며 상승
녹색(green) – MACD 값이 양수이지만 하락
빨간색(red) – MACD 값이 음수이며 상승
적갈색(maroon) – MACD 값이 음수이면서 하락

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, fast=12, slow=26):
    macd_1 = pp.macd(df=df, fast_length=fast, slow_length=slow)
    macd_2 = macd_1.shift(1)
    df['4c_macd'] = macd_1['MACD']
    df['4c_color'] = np.where(
        (df['4c_macd'] > 0) & (df['4c_macd'] > macd_2['MACD']), 'lime',
        np.where(
            (df['4c_macd'] > 0) & (df['4c_macd'] <= macd_2['MACD']), 'green',
            np.where(
                (df['4c_macd'] < 0) & (df['4c_macd'] < macd_2['MACD']), 'maroon', 'red'
            )
        )
    )
    return df

print(main(df))

트레이딩뷰 차트와 비교