我计算MACD指标值是否错误?

问题描述 投票:0回答:1

我尝试通过 ccxt 数据计算 MACD 指标值(MACD 线 - MACD 信号)。 我在下面写了代码。问题是我的结果与交易视图 MACD 指标不一样。我的错误在哪里? 如果有人可以的话请帮忙。谢谢

import ccxt
import pandas as pd

def calculate_ema(data, window):
    return data.ewm(span=window, adjust=False).mean()

# Calculating MACD line & MACD Signal
def calculate_macd(df, short_window=12, long_window=26, signal_window=9):
    # Calculating EMA 12 & EMA 26`enter code here`
    short_ema = calculate_ema(df['close'], short_window)
    long_ema = calculate_ema(df['close'], long_window)

    # Calculating MACD line
    macd_line = short_ema - long_ema

    # calculating MACD signal line
    signal_line = calculate_ema(macd_line, signal_window)

    return macd_line, signal_line


# connect to exchane
exchange = ccxt.binance()
symbol = 'BTC/USDT'
timeframe = '15m'
limit = 26

# Fetch_ohlcv
ohlcv = exchange.fetch_ohlcv(symbol, timeframe, limit=limit)
df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')
print(df)
print()


macd_line, signal_line = calculate_macd(df)

# printing result
print("MACD Line:")
print(macd_line.tail())

print("\nSignal Line:")
print(signal_line.tail())
python pandas bots ccxt
1个回答
0
投票

指数移动平均线需要一些运行时间。我通常使用至少最长平滑长度的运行周期的经验法则。

对于 MACD,长期平均值为 26,信号计算为 9,因此结果应在 35 个周期后收敛于普遍接受的值。它有助于用合理的东西(例如第一期的最后价格)来设定初始值。

维基文章讨论了找到最短运行时间的正确数学方法。

https://en.wikipedia.org/wiki/Exponential_smoothing

© www.soinside.com 2019 - 2024. All rights reserved.