Добро пожаловать в третью часть моих руководств по использованию 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. Есть много возможностей для улучшения, и если у вас возникнут какие-либо проблемы, свяжитесь со мной, я буду рад помочь! Удачного тестирования!