Отказ от ответственности

Прежде чем я начну эту историю, я хочу вам кое-что сказать. Я не финансовый консультант, и торговый бот, который мы собираемся создать, не предназначен для зарабатывания денег. Алгоритмический трейдинг — это единое целое, и вы не сможете заработать, просто прочитав несколько статей на Medium.

Точно так же торговый бот — это не волшебная вещь. Просто так деньги не заработаешь. Вы должны иметь навыки программирования и торговли, чтобы иметь возможность зарабатывать деньги таким образом.

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

Вы изучаете программирование? Или, может быть, вы просто интересуетесь алгоритмическим трейдингом? В любом случае, создание торгового бота — интересный проект для каждого программиста, желающего получить дополнительные знания.

Я проведу вас через этот проект, чтобы объяснить его вам шаг за шагом. Сначала я стану с введением (этот рассказ). Он будет очень общим, потому что цель состоит только в том, чтобы дать ключевые понятия. Ее могут прочитать все, кто интересуется созданием торгового бота. Затем я поделюсь конкретной реализацией этого на Python. Если вы не питонист, возможно, вам это будет неинтересно.

Выберите свои инструменты

Для создания торгового бота вам понадобятся всего два инструмента:

  • Язык программирования
  • Сервер

Вы можете создать торгового бота на многих языках программирования. В следующей части этой серии мы сделаем это с помощью Python. Другой возможностью мог быть JavaScript, использующий среду Node.JS. И еще одной возможностью был бы MQL (если вы знаете Metatrader, вы понимаете, о чем я говорю).

Но в целом создание торгового бота возможно с любым языком программирования, просто с некоторыми это будет проще или сложнее.

Затем о сервере. Это просто отправка запросов к API. Это то, что позволяет нам взаимодействовать с внешним миром, например, с брокером.

Выбор зависит от того, что вам нужно. Для тестирования вы можете просто запустить код со своего компьютера. Но если вы хотите, чтобы ваш код работал постоянно, это определенно не лучший вариант.

Что касается меня, я запускаю своего торгового бота на Raspberry Pi. Это интересный и классный вариант. Если вы хотите пойти с ним, просто сделайте это. Наличие Pi — это не пустая трата денег, поскольку оно может быть полезно для других проектов.

Другой вариант — запуск кода в облаке, что, возможно, является лучшим вариантом. Для этого есть решения вроде AWS или Azure. Это может быть даже бесплатно, поскольку некоторые облачные провайдеры предлагают бесплатный уровень, который должен соответствовать вашим потребностям.

Принцип абстракции

Вы должны попытаться максимально абстрагировать своего бота. Я имею в виду, что вы не хотите, например, создавать торгового бота Binance (или, возможно, вы хотите, я не знаю). Вы хотите создать торгового бота.

То есть, независимо от биржи, независимо от рынка, независимо от… бот будет работать. Одна большая ошибка, которую я совершил при создании своего первого торгового бота, заключается в том, что я создал его только для Binance. Когда я захотел начать алгоритмическую торговлю на Форексе, мне пришлось создать нового бота с нуля.

Итак, ваш бот должен быть как можно более абстрактным. Это не должно зависеть от обмена. Это не должно зависеть от рынка. Он не должен зависеть от инфраструктуры, в которой он будет работать. Это не должно зависеть от [заполните этот текст чем хотите].

Определите свои потребности

Что должен делать ваш бот? Должен ли он иметь возможность тестирования на истории? Должен ли он иметь возможность размещать стоп-приказы? И т. д…

Благодаря принципу абстракции ваши потребности меняются при программировании торгового бота. Но в качестве общего совета по программированию важно определить свои потребности перед началом проекта.

Это небольшой проект, поэтому вам не нужно делать строгие спецификации, вам просто нужно знать, куда вы хотите направить свой проект.

Пример спецификаций, которые вы можете сделать:

  • Этот бот сможет просто размещать рыночные ордера.
  • Этот бот сможет запускать несколько стратегий одновременно.
  • Этот бот сможет регистрировать данные.
  • Этот бот будет включать в себя пользовательский интерфейс для визуализации графиков и ордеров.
  • Этот бот сможет тестировать стратегии на прошлых данных.
  • И т. д…

Блок-схема действий бота

Затем вы можете сделать блок-схему действий бота. Это полезно, потому что у вас будет обзор того, что вам нужно разработать. Через эту диаграмму вы сможете различить некоторые большие блоки проекта.

Например:

  1. Подключиться к базе данных.
  2. Получить данные базы данных.
  3. Работает ли стратегия?
  4. YES: получить рыночные данные.
  5. Рассчитать показатели.
  6. Встречается ли условие остановки стратегии?
  7. НЕТ: встречается ли условие открытого ордера?
  8. ДА: получить баланс пользователя, чтобы проверить, можно ли открыть ордер.
  9. И т. д…

Благодаря этой блок-схеме (сделайте ее графически, здесь я написал, но лучше иметь наглядное представление) мы можем выделить несколько больших блоков:

  • Абстракция хранения данных: нам нужно что-то для хранения наших данных (здесь это база данных, но это может быть что угодно, помните принцип абстракции).
  • Стратегии: нам нужно что-то для принятия торговых решений.
  • Поставщик данных: нам нужно что-то для получения рыночных данных.
  • Брокер: нам нужно что-то для отправки заказов во внешний мир.

Функции

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

Например, для абстракции хранилища данных потребуются некоторые функции для записи и чтения данных. Но что, если мы хотим куда-то записать данные, а прочитать их где-то еще? Нам нужно сделать Data Writer и Data Reader.

Петля

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

Во-первых, нам нужно инициализировать нашего бота. Это подразумевает подключение к базе данных и чтение некоторых данных настройки, например. Затем мы должны проверять каждые x минут/часов/дней, выполняются ли наши условия и т. д.

Последнее примечание

Это все, что касается основных понятий. Как видите, я старался быть очень общим, чтобы люди, не являющиеся питонистами, тоже могли чему-то научиться.

Если у вас есть предложения о том, что вы хотите узнать в продолжении этой серии, скажите мне. Это могут быть предложения о том, что я должен реализовать в торговом боте. Вы можете определить спецификации для этого проекта, если хотите, чтобы я мог научить вас тому, чему вы хотите научиться. Просто прокомментируйте, что вы хотите.

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

Надеюсь, эта история была полезной, обязательно подписывайтесь на меня, если не хотите пропустить продолжение этой серии!

Чтобы найти другие истории из этой серии и больше о совмещении трейдинга и Python, прочтите эту статью: Улучшите свою торговлю с помощью Python

Чтобы узнать больше о моих рассказах о Python, нажмите здесь!

Если вам понравилась история, не забудьте похлопать и, возможно, подпишитесь на меня, если хотите узнать больше о моем содержании :)

Вы также можете подписаться на меня по электронной почте, чтобы получать уведомления каждый раз, когда я публикую новую историю, просто нажмите здесь!

Если вы еще не подписаны на среду и хотите поддержать меня или получить доступ ко всем моим историям, вы можете использовать мою ссылку:



Сообщение от InsiderFinance

Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь: