No Image

Торговый бот на python

СОДЕРЖАНИЕ
6 просмотров
11 марта 2020
  • спецраздел:
  • торговые роботы
  • Ключевые слова:
  • Питон,
  • торговый робот

Михаил, смотря что Вы называете «таблицами». Я под «таблицей» понимаю тип данных «таблица» в Lua, возможности, которые он предоставляет и скорость обработки данных, особенно на больших объемах. Python здесь проигрывает. Плюс Lua очень удобно встраивается в проекты c++ / c# etc, Python проигрывает и здесь

Все, что Вы можете сделать в Lua, Вы можете сделать и на Python. В принципе, «торгового робота» и «работу с таблицами» вы можете организовать и на VB+Excel, вопрос только в степени Вашей порочности :). Если Вы являетесь апологетом Python — извините, я не хотел задеть Ваших религиозных чувств

Михаил, если для решения Ваших задач Вам требуется функциональность DataFrame и именно DataFrame — не вижу ни одной причины, по которой Вам не следует использовать DataFrame.

Я бы не стал утверждать, что тип table в Lua — это «аналог dict из питона». Сходу вспоминается table.__index и связанные с этим возможности, особенно вкупе с объявлением функций элементами таблицы. Плюс, повторюсь, скорость обработки. Плюс, повторюсь, интеграция с проектом c++/c#/еtc, хоть с квиком, хоть с Вашим личным, хоть еще с чем. Все вместе это даст Вам возможности, которых с помощью python будет добиться, скажем так, сложнее. Все эти вопросы достаточно хорошо описаны и документированы.

Вообще, диалог сваливается в достаточно узкоспециализированную область 🙂

Для начала хотелось бы понять для какого рынка робот.

Россия или запад ?

Какие входящие данные нужны роботу ?

Котировки, стакан и пр.

На сколько сложным должен быть арбитраж.

На каждой ноге по 1му инструменту или более ?

Replikant_mih, это безотносительно выбора языка программирования, ну может на ассемблере чуть посложнее )

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.

Пишем простого бота для поиска арбитражных ситуаций

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

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

Читайте также:  Njrat green edition by im523

Попробую описать необходимые для нас термины.

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

Для заключение сделки продажи или покупки необходимо открыть биржевую заявку — ордер.

Ордер может быть описан следующими параметрами: пара, стоймость, объем, тип операции. Например:

Из данной таблицы видно, что вы можете купить 0.5 ETH за 1 BTC.

Пара читается справа налево при совершении операции. Например:

Если вы откроете страницу торгов на бирже Poloniex, то увидите ордера на продажу — SELL ORDERS и ордера на покупку — BUY ORDERS, которые выставляют трейдеры. Данные таблицы называются биржевым стаканом и отображают информацию о том сколько и за какую цену хотят купить / продать валюту.

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

Арбитражная ситуация — это ситуация, при которой за счет разницы в оценке актива (в данном случае валюты) трейдер может получить прибыль.

Например на бирже Poloniex есть три пары валют: BTC, BCH, ETH. И представим, что в биржевом стакане были созданы следующие ордера:

Данная таблица демонстрирует арбитражную ситуацию внутри биржы. Если вы выполните ордера, выставленные трейдерами (совершите с ними сделку) :

то останетесь в прибыли на 0.6 BTC, так как изначально имели 1 BTC.

На Poloniex доступна документация API. В рамках нашей задачи нас интересует раздел Public API Methods, метод returnOrderBook .

Order Book — является описанным выше биржевым стаканом, который возвращается в JSON формате, а не на web-интерфейс.

Попробуйте перейти по ссылке Poloniex API. В результате вы должны получить ответ для BTC_ETH, похожий на этот:

  • asks – ордера на продажу;
  • bids – ордера на покупку;

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

Замечание: существует пара BTC_ETH , но обратной ETH_BTC нет. Поэтому если вы хотите выполнить покупку ETH_BTC , вам необходимо сделать продажу в BTC_ETH .

В итоге нам необходимо решить следующие задачи:

  • Выполнить парсинг API криптовалютной биржи Poloniex, а именно метода returnOrderBook и реализация алгоритма поиска арбитражных ситуации;
  • Реализовать архитектуру, при которой один поток парсит API и создает отдельные потоки, которые ищут арбитражные ситуации для разных валют;
  • Решить проблему с отсутствием обратной пары. Например: существует пара BTC_ETH, но обратной ETH_BTC нет;
  • Выводить результат поиска в консоль или в Telegram Bot.
Читайте также:  Ввел неправильно пароль на айфоне

В следующей части мы рассмотрим реализацию данного бота на языке программирования Python.

Тема онлайн торгов (будь то форекс, акции, полезные ископаемые) обычно вызывает интерес. Но вместе с тем многие люди думают: «я в этом не разбираюсь, мне спец. терминология неизвестна. Да и непонятно, как начать». Вот над этим мы и поработаем! К концу статьи у вас будет достаточно знаний и примеров, чтобы начать играть на финансовых рынках.

Покроем следующие моменты:

  • Суть биржевой игры;
  • Брокеры;
  • API для торговли/Пример робота;
  • Деплоймент онлайн;
  • Заключительные мысли.

Суть биржевой игры

Есть много теорий и объяснений. Но мы подойдем к вопросу с точки зрения софтверщика и понятия об уровнях абстракции. Очень просто (но вместе с тем правдиво) суть игры в следующем: есть график некоей (псевдо?) случайной величины (цены). Известна её история за довольно большой период. Стоит задача предсказания движения (вверх или вниз). Всё. Реально. То, что делают трейдеры — предсказывают, пойдет цена вверх или вниз и делают на это ставки (оpen trades): покупают (buy/long) какое-то количество «продукта» (instrument) в надежде на поход вверх, или продают (sell/short) в надежде, что пойдет вниз.
После какого-то времени (если цена изменилась значительно) open trades закрывают и получают в результате прибыть (угадали с движением) или убыток (не угадали).

Сделку можно закрыть руками, а можно автоматичеки (order): можно заранее задекларировать — если цена достигнет такого-то уровня, то закрыть trade.

Доступ к рынку для совершения сделок предоставляет брокер. И за это он взимают плату за каждую сделку.

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

Всё верно, так всё и есть. Игра началась.

Брокеры

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

Я не буду давать сравнительный анализ. Сразу дам лучшего — Oanda. Почему Oanda:

  • Репутация;
  • Возможность открыть сделку в 1 доллар и нет требований к размеру trade (некоторые брокеры обязывают делать его кратным большим величинам);
  • Низкая цена за сделки (узкий spread);
  • Огромное количество инструментов: валюты, драг металлы и нефть, индексы;
  • Возможность торговать через API;
  • Ввод вывод денег возможен через PayPal.
Читайте также:  Программа для взлома активации виндовс

Для того, чтобы торговать, надо создать учетную запись на Oanda. Для начала — тренировочную (fxtrade practice). В меню «Manage API Access» нужно указать, что на вашем счету возможна торговля через API. После этого вам сгенерят секретный токен для использования в RESTful вызовах.

API для торговли

Я буду использовать Python 2.7 и библиотеку requests.

Для того, чтобы торговать, нам нужно:

Получать информацию о цене. Робот должен знать, что происходит

Эта функция позволит соединиться к потоку цен на EUR/USD и AUD/JPY.

Теперь мы можем их считывать:

Теперь нам нужен мозг. Принятие решений

Как видно, в функцию стратегии передается информация о названии инструмента, цена и время.
Мы можем решать в функции strategy: а что нам делать с этой новой инфой? Проигнорировать? Или, может, открыть новую сделку?

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

Допустим, робот подумал и сказал: точно цена пойдет вверх! Чувствую своей shiny metal ass!

Тогда нам нужна возможность заключить сделку

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

Деплоймент онлайн

Открыл для себя наличие vps по бросовым ценам. Например, ftpit.com. Взял тот, что за 2 доллара в месяц.
Этот хостиг без проблем держит на себе 3-х моих роботов, которые день и ночь пытаются одолеть толстосумов с Wall Street. Плюс к этому есть свой SMTP server и небольшой сайт.

Заключительные мысли

Торговля на финансовых рынках может стать замечательным хобби, которое не только дает возможность программировать, но и приобщиться к огромной онлайн игре, в которой каждый день много новостей, мнений, событий, страха, жадности и надежды!

Если у вас есть вопросы — отвечу с радостью и в меру сил.

Комментировать
6 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector