Добро пожаловать в третью часть моих руководств по использованию JavaScript и Node.js с Alpaca для алгоритмической торговли. Если вы еще не читали часть первую или часть вторую, обязательно ознакомьтесь с ними. К концу этого вы сможете протестировать свой торговый алгоритм Альпаки на исторических данных, используя мой новый пакет для тестирования на истории. Полный код этой части руководства можно найти в этой ветке в моем репозитории GitHub. В этом руководстве предполагается, что у вас уже есть какой-то алгоритм с использованием Node.js и Alpaca, который вы хотите протестировать на исторических данных. Если вы предпочитаете видеоверсию учебника, вы также можете посмотреть ее на YouTube здесь.

История бэктестинга

Если вы не знакомы с бэктестингом, то в Investopedia есть еще одна отличная статья о том, что это такое. На высоком уровне бэктестинг - это запуск торгового алгоритма с использованием данных из прошлого. Это позволяет вам увидеть, как ваш алгоритм работал бы в прошлом, и если мы в целом считаем, что рынок будет вести себя аналогичным образом в будущем, мы можем сделать некоторые прогнозы относительно того, как торговый алгоритм будет работать в будущем.

Установить пакет бэктестинга

Я создал новый пакет, который позволит вам протестировать алгоритм, использующий Node.js и Alpaca. Здесь вы можете увидеть исходный код на GitHub, а также пакет npm. Чтобы установить его, вам просто нужно запустить эту команду в каталоге кода вашего пакета:

npm install — save @kendelchopp/alpaca-js-backtesting

После того, как вы установили этот пакет, пора вернуться к коду.

Создайте объект Backtest

Далее мы создадим экземпляр класса Backtest. Для этого все, что требуется, - это объект Альпака и даты начала и окончания. Вот пример:

const alpaca = new Alpaca({
  keyId: ‘someKey’,
  …
});
const backtest = new Backtest({
  alpaca,
  startDate: new Date(2020, 1, 1, 0, 0),
  endDate: new Date(2020, 10, 11, 0, 0)
});

Подключитесь к Backtest Websocket

Далее, вместо использования веб-узла Alpaca, мы будем использовать макет, созданный для тестирования на истории. Например:

// const client = alpaca.data_ws;
const client = backtest.data_ws;

Распечатайте статистику после отключения

Наконец, когда мы отключаемся от макета веб-сокета Backtest, мы можем распечатать статистику:

client.onDisconnect(() => {
  console.log(backtest.getStats());
});

Запустите свой алгоритм

Теперь вы запускаете свой алгоритм, как обычно, заменяя любые вызовы alpaca вызовами backtest. Сюда входят такие вещи, как создание заказов:

// alpaca.createOrder({ /* Some Order Info */ });
backtest.createOrder({ /* Some Order Info */ });

Внесите свой вклад в модуль

Если вы заинтересованы в участии в модуле Backtesting Node JS Alpaca, загляните в репозиторий GitHub. Есть много возможностей для улучшения, и если у вас возникнут какие-либо проблемы, свяжитесь со мной, я буду рад помочь! Удачного тестирования!