На данный момент у нас уже есть механизм для получения данных в реальном времени об акциях, которыми мы хотим торговать, но… как, черт возьми, я узнаю, когда покупать или продавать? Правильно, индикаторы! Давай посмотрим поближе, ладно?
В зависимости от их природы можно найти разные группы технических индикаторов: тренд, импульс, возврат к среднему, объем… Но все они используются для подачи сигналов на вход или выход из позиции (покупка / продажа).
В этой статье мы собираемся изучить, как можно рассчитать экспоненциальную скользящую среднюю (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
Удачной торговли!