На данный момент у нас уже есть механизм для получения данных в реальном времени об акциях, которыми мы хотим торговать, но… как, черт возьми, я узнаю, когда покупать или продавать? Правильно, индикаторы! Давай посмотрим поближе, ладно?

В зависимости от их природы можно найти разные группы технических индикаторов: тренд, импульс, возврат к среднему, объем… Но все они используются для подачи сигналов на вход или выход из позиции (покупка / продажа).

В этой статье мы собираемся изучить, как можно рассчитать экспоненциальную скользящую среднюю (EMA) с помощью Python. EMA - это трендовый индикатор, поэтому он должен подсказать нам, находятся ли цены на акции в восходящем или нисходящем тренде.
Таким образом, мы можем начать определять торговую стратегию для нашего бота.

Пошаговый процесс

Здесь, в Trading Bot Bootcamp, мы большие поклонники повторного использования того, что доступно. Можно поспорить, даже забавно, вычислить EMA с нуля с помощью Python, но мы собираемся использовать замечательную библиотеку под названием Tulip. Он имеет более 100 различных индикаторов и собственную реализацию Python (tulipy).

Вспоминая код из нашей предыдущей статьи и включая тюльпан EMA:

import alpaca_trade_api as tradeapi
import tulipy as ti
# My credentials
API_KEY = <your-API_KEY> 
API_SECRET_KEY = <your-API_SECRET_KEY>
ALPACA_API_URL = 'https://paper-api.alpaca.markets'
# Connect to my Alpaca account
api = tradeapi.REST(API_KEY, API_SECRET_KEY, ALPACA_API_URL, api_version='v2')
# Pull data 
barset = api.get_barset('AAPL', '15Min', limit=200)
# Extract 'close' values and convert them to numpy array
close_vals = barset['close'].to_numpy()
# Calculate EMA21
ema = ti.ema(close_vals, 21)
print(ema)

В приведенном выше фрагменте кода мы импортируем пакет tulipy и используем его для расчета индикатора EMA. Число 21 соответствует размеру окна, также известному как коэффициент сглаживания, что по сути означает, что для расчета EMA будет учитываться 21 выборка. Почему?, Который мы выбрали 21, выходит за рамки этой статьи, но ... Не паникуйте! Более подробно мы объясним это в курсе.

БОНУС! Загляните на наш YouTube канал, если вы предпочитаете визуальный контент.

Результат должен быть примерно таким:

Теперь типичным сценарием использования является объединение EMA разных размеров окна. Допустим, мы хотим иметь короткую, среднюю и длинную EMA, поэтому размеры окна могут составлять 9, 55 и 150 соответственно.

Покажите мне, пожалуйста, код:

# Calculate multiple EMAs
ema_short = ti.ema(close_vals, 9)[-1]
ema_medium = ti.ema(close_vals, 55)[-1]
ema_long = ti.ema(close_vals, 150)[-1]
print(ema_short, ema_medium, ema_long)

Обратите внимание на «[-1]» в конце, который позволяет нам получить последнее значение.

Резюме и следующие шаги

Подведем итоги: теперь мы можем:
- преобразовывать данные в массив из numpy
- рассчитывать технический индикатор с помощью библиотеки Tulip
- получать разные «версии» индикатора, изменяя внутренние параметры (размер окна)

В следующем посте мы сравним эти EMA, чтобы решить, открываем ли мы позицию с использованием условной структуры.
Мы переходим к стратегии, так что следите за обновлениями!

Более подробно этот контент объясняется здесь: https://www.tradingbotbootcamp.com

Получите скидку 20% с этим купоном: TRADINGBOT20

Удачной торговли!