Будем делать заказы или что? Действительно!
В этой статье мы рассмотрим процесс отправки заказа в Alpaca с помощью его API и как проверить, правильно ли он размещен.
Ордера на покупку/продажу, лимитные/рыночные ордера, длинные/короткие позиции… Торговые концепции иногда могут быть ошеломляющими, я вам это скажу. Вот почему мы собираемся покрыть только ордер на ПОКУПКУ (так же, как и длинная позиция), чтобы упростить его. Если вы хотите изучить другие интересные способы размещения ордеров, посетите учебный курс для торговых ботов.
Пошаговый процесс
В предыдущем посте мы рассчитали несколько 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=100) # Extract 'close' values and convert them to numpy array close_vals = barset['close'].to_numpy() # 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)
Теперь нам нужно придумать стратегию, которая их использует. Эта стратегия состоит в покупке при выполнении следующего условия:
EMA короткая › EMA средняя › EMA длинная
Который в коде будет примерно таким:
if (ema_short > ema_medium) and (ema_medium > ema_long): # Place order else: print('You'd better not enter for now...')
БОНУС! Загляните на наш YouTube канал, если предпочитаете визуальный контент.
Теперь реализуем функционал для оформления заказа через Alpaca API. Не забудьте дважды проверить, используете ли вы бумажный торговый счет, чтобы убедиться, что вы не используете настоящие деньги. Из документов Alpaca API мы видим синтаксис для размещения заказа:
Здесь вы видите функцию submit_order, она имеет несколько параметров:
- символ: акции, с которыми вы хотите работать
- количество: количество акций, которые вы хотите купить/продать
- сторона: 'купить' или 'продать'
- тип: 'рынок' означает покупку или продажу по лучшей рыночной цене в данный момент. Или «лимит», означающий покупку или продажу по указанной цене.
- time_in_force: «gtc» действует до отмены.
В коде эта функция будет находиться внутри if оператора, чтобы разместить заказ при выполнении условия.
Полный код:
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=100) # Extract 'close' values and convert them to numpy array close_vals = barset['close'].to_numpy() # 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] # Trading strategy if (ema_short > ema_medium) and (ema_medium > ema_long): print('Entering position...!') api.submit_order( symbol=''AAPL', qty=1, side='buy', type='market', time_in_force='gtc' ) else: print("You'd better not enter for now...")
Как мы узнаем, что заказ был отправлен? Мы можем проверить это в Альпаке. Перейдите на панель инструментов и проверьте обзор заказов, вы должны увидеть заказ:
Резюме и следующие шаги
Краткий обзор, к настоящему моменту мы можем:
- Построить базовую торговую стратегию
- Выполнить ордер, как только будет выполнено определенное условие (стратегия).
- Убедитесь, что заказ был отправлен
В следующем посте мы создадим цикл, необходимый для работы бота в фоновом режиме.
Этот контент объясняется более подробно здесь: https://www.tradingbotbootcamp.com
Получите скидку 20% на курс с этим купоном: TRADINGBOT20
Удачной торговли!