Редактировать!
Для тех, кто интересуется этим же, я понял это.В приведенных ниже реализациях нет ничего плохого.Это просто тот факт, что EMA требует более 21 точки данных для подсчета экспоненциальной скользящей средней в 20 точек данных.Причина этого в том, что более ранние точки данных влияют на точки данных, которые вы пытаетесь вычислить.Проще говоря, вы проверили, и вам нужно около 40-50 точек данных, чтобы получить ту же 20-дневную EMA, что и с 100+ точками данных.
Я пытаюсь рассчитать EMA (экспоненциальное скользящее среднее)запас, но что-то не так с моими расчетами.Я экспортировал данные о запасах за последние 22 с лишним дня для AAPL, и когда я пытаюсь рассчитать EMA для этого, каждый раз что-то не так.
Вот данные для моего примера: https://pastebin.com/raw/2MsgCeQx
Вот решения, которые я пытался рассчитать 20-дневной EMA.
#Imported the data as "data".
#With Ta-lib
data["EMA20Talib"] = talib.EMA(data.uClose, timeperiod = 20)
#And with pandas
data["EMA20Pandas"] = data["uClose"].ewm(span=20, adjust = False).mean()
I здесьизображение данных и результатов.https://i.imgur.com/pFtc7x8.png
Как видите, Real20EMA не соответствует TA-lib или пандам 20EMA.Что я делаю не так?
uClose - это столбец, на котором я имитирую EMA, "Real20EMA" берется из торгового обзора (перекрестная ссылка с marketwatch, чтобы убедиться, что он правильный).
Я заметил, что ранее здесь была похожая проблема с той же самой проблемой: EMA Панд не соответствует EMA акции? .Проблема была решена, когда вы отсортировали индекс, и я позаботился о том, чтобы он был правильно отсортирован, но, увы, я все еще получаю ту же проблему.
Я хочу получить те же цифры, что и на других финансовых сайтах, используя какой-либо инструмент.Как ни странно, даже те два метода, которые я попробовал, даже не дают одинакового результата.