Робот для игры на бирже – Роботы для биржевой торговли — Премьер БКС

Содержание

Биржевые роботы для трейдеров на фондовом рынке: отзывы

Биржевые роботы представляют собой автоматизированное программное обеспечение, основной функцией которого является осуществление торговых операций на бирже. Кроме того, такие инструменты именуют торговыми советниками, экспертами или лаконично — роботами. Ещё эти программы называют механическими торговыми системами, или сокращённо МТС. На сегодняшний день на большинстве финансовых рынков типа «Форекса», РТС или фондовой биржи работают такие инструменты. С каждым годом часть автоматизированных торговых операций в общем объёме сделок увеличивается. Например, на РТС от 35 до 60% ежедневных торговых действий осуществляют биржевые роботы. В странах западного мира эти показатели могут достигать 90%.

Что лучше?

Следует подчеркнуть, что в данном случае речь не идёт о том, что автоматизированные системы умнее или эффективнее человека. Этот вопрос достаточно спорный и ещё целиком не изучен. Дело в том, что механические торговые системы обладают рядом преимуществ, которых нет у трейдера, занимающегося торговлей в ручном режиме. Среди известных и хорошо зарекомендовавших себя площадок, допускающих автоматическую торговлю, можно назвать Forex4you и Alpari. Далее будут рассмотрены классификация этих механических систем, их преимущества и недостатки.

Классификация биржевых роботов

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

Роботы-Мартингейлы

Кроме того, биржевые роботы подразделяются на те, которые используют концепцию Мартингейла, и те, которые её не применяют. Первые представляют собой достаточно агрессивные системы, которые при проигрыше увеличивают ставку и способны с лёгкостью проиграть депозит инвестора. Судя по отзывам, торговые роботы, не использующие концепцию Мартингейла, но при этом показывающие хорошие результаты относительно прибыльности, являются эффективными советниками. Они применяют в своей деятельности некоторые рыночные закономерности, что делает их менее рискованными. Такие роботы отлично подойдут для стабильной торговой деятельности, рассчитанной на долгосрочную перспективу.

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

Сильные стороны биржевых роботов

Среди достоинств механических торговых систем можно выделить несколько самых важных. Например, чёткое следование заданному трейдером алгоритму совершения торговых операций. Биржевые роботы не будут отступать от установок. Кроме того, они последовательно совершают те действия, на которые запрограммированы. Как работает биржевой робот? Система всё делает основательно и методично. Чего не скажешь о трейдере, который может метаться, изменять на ходу торговый план и совершать другие эмоциональные действия.

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

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

Недостатки биржевых роботов

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

Другим минусом использования таких систем является необходимость оплачивать работу выделенного сервера ВПС. С одной стороны, сегодня арендовать хороший сервер стоит незначительные 5-10 долларов США в месяц, но с другой — это всё же финансовые затраты. Их обязательно необходимо учитывать при осуществлении торговли. Таким образом, прибыль от механизированного трейдинга должна перекрывать затраты на приобретение робота и аренду сервера.

Стоимость платных биржевых роботов

Среди других минусов использования автоматических советников отзывы называют иногда слишком высокую цену такого удовольствия, как биржевой робот. Сколько стоит хорошая механическая система? Стоимость некоторых биржевых роботов достигает 500-1 тыс. долларов США, а зачастую и превышает эти цифры. Их приобретение не всегда целесообразно, так как несмотря на гарантии продавца или разработчика программы по возврату вложенных средств, запросто можно купить кота в мешке. Стоит, кстати, отметить, что в интернете много достаточно хороших автоматических советников, которые распространяются на бесплатной основе, и в то же время способны принести трейдеру постоянную прибыль.

Выбор биржевого робота

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

Наряду с вышесказанным, есть ещё несколько аспектов, следование которым поможет выбрать хорошего биржевого робота. Так, необходимо протестировать систему в работе, оценить ее надёжность. Советник должен функционировать строго в соответствии с выбранным трейдером планом. Кроме того, работа с программой должна быть лёгкой и понятной. Это касается интерфейса, настроек и других параметров системы. Будет кстати сказать, что обилие окон и разных кнопок лишь усложняет задачу управления программой. Другим важным моментом при выборе биржевого робота является лёгкость установки программного обеспечения на ПК и изменений в приложении торгового счёта. Простота этих операций позволит использовать советника на любом компьютере, а также быстро менять брокерский счёт.

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

Послесловие

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

fb.ru

11 инструментов разработки / ITI Capital corporate blog / Habr

В нашем блоге мы много внимания уделяем вопросам алгоритмической и автоматизированной торговли на бирже, рассматривая, как теоретические аспекты, вроде выбора языка программирования, так и практические — например, реализацию системы событийно-ориентированного бэктестинга на Python.

Сегодня мы представляем вашему вниманию подборку сред программирования и инструментов для создания торговых роботов.

TradeScript (SMARTx)

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

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

Язык TradeScript был изначально создан американской компанией Modulus FE специально для написания на нем торговых роботов. Он довольно прост в изучении, а многие алгоритмы схожи по написанию с Metastock, что облегчает работу пользователям, знакомым с этим программным пакетом.

Плюсом TradeScript по сравнению с Wealth-Lab и тем же Metastock является отсутствие необходимости создания сложных конструкций и использования различных коннекторов для передачи приказов в торговый терминал. Конструктор роботов встроен в SmartX, что позволяет добиваться значительно более высокой надежности и быстродействия.

Ниже представлен код торговой стратегии на TradeScript:

Buy Signals 

# Покупаем, если момент и инерция имеют однонаправленный тренд 

TREND(EMA(CLOSE, 20), 15) = UP AND 

TREND(MACD(13, 26, 9, SIMPLE), 5) = UP 

Sell Signals 

# Продаем, если момент и инерция имеют однонаправленный тренд 

TREND(EMA(CLOSE, 20), 15) = DOWN AND 

TREND(MACD(13, 26, 9, SIMPLE), 5) = DOWN 

Exit Long Signal 

# Выходим, если тренд инерции и момента имеет противоположное направления 

TREND(EMA(CLOSE, 20), 15) = DOWN OR 

TREND(MACD(13, 26, 9, SIMPLE), 5) = DOWN 

Exit Short Signal 

# Выходим, если тренд инерции и момента имеет противоположное направления 

TREND(EMA(CLOSE, 20), 15) = UP OR 

TREND(MACD(13, 26, 9, SIMPLE), 5) = UP

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

Более подробно вопрос написания торговых роботов на TradeScript мы рассматривали в наших предыдущих материалах (первый, второй).

CQG Integrated Client

Это популярная у трейдеров во всем мире профессиональная многофункциональная платформа технического анализа, предоставляющая котировки в реальном времени с множества торговых площадок. Также в программе предусмотрены возможности по автоматизации торговых операций.
Wealth-Lab

Созданная компанией Fidelity International мощнейшая система технического анализа, разработки и тестирования торговых стратегий. Создавать торговых роботов можно с помощью встроенного языка программирования WealthScript. В последних версиях системы также используются C# и другие .NET-языки.

TSLab

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

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

LiveTrade (CoFiTe)

Программный комплекс LiveTrade создан разработчиками петербуржской компании CoFiTe. Помимо прочего он включает в себя программное решение для создания торговых роботов — Robotlab. Этот инструмент, как и TSLab, позволяет трейдерам создавать автоматизированные торговые системы с помощью блок-схем в визуальном конструкторе:

После того, как торговая логика приложения реализована с помощью блок-схемы, ее можно запустить в терминале.

TradeMatic

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

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

SmartCOM

Открытый интерфейс торговой системы ITinvest также позволяет трейдерам создавать торговых роботов разной степени сложности и подключать внешние среды разработки и уже созданные в них торговые системы. Использование компонентной объектной модели позволяет подключать к торговым серверам брокера механические торговые системы, написанные на самых разных языках программирования. Например, C++, любой из.NET языков (C#, VB.NET и другие), Visual Basic, Visual Basic for Application (в частности из Microsoft Excel) и многих других.

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

MetaStock

Также популярный зарубежный продукт. Система MetaStock содержит обширную библиотеку индикаторов и средств для создания собственных формул. Также предусмотрен простой язык программирования, с помощью дополнительных модулей можно генерировать приказы на покупку и продажу.

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

StockSharp

Бесплатная в базовой версии платформа StockSharp с открытым исходным кодом. На ее основе разработаны продукты для создания торговых роботов.

Как пишут сами разработчики в своей статье на Хабре, проект StockSharp построен по классической модели развития сложного программного обеспечения. В начале создается некая основа (S#.API), и уже с помощью нее создаются надстройки высокого уровня.

В настоящий момент команда S# реализовала полный комплекс программных средств для алготрейдеров — систему сбора и хранения исторических данных (может раздавать данные в режиме сервера), система тестирования на истории, ряд графических компнонентов.

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

Quik

Название системы — сокращение от Quickly Updatable Information Kit (Быст-обновляемая информационная панель). Изначально Quik являлся информационной системой, «фишкой» которой была высокая скорость доставки данных, однако впоследствии продукт эволюционировал. До версии 6.4 в Quik предоставлялся встроенный скриптовый язык Qpile. Он обладал небольшим набором возможностей по сравнению с языками высокого уровня (C# или C++) и использовался главным образом для автоматизации простых торговых стратегий.

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

Версии Quik старше 6.4.0 поддерживают скрипты на Lua. Этот язык также встроен в терминал, довольно прост и обладает большей функциональностью, чем Qpile. Поскольку Lua – это интерпретируемый язык, то для работы с его кодом используется специальная библиотека QLua.

Изображение: RusAlgo.com

TRANSAQ

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

Создавать роботов можно как с помощью подключения к TRANSAQ внешних сред разработки вроде Metastock, Omega, Wealth-Lab, так и при помощи встроенного языка программирования ATF (Advanced Trading Facility). По этому языку есть довольно подробная документация, в которой, помимо прочего, представлены и примеры кода готовых роботов.

Другие материалы по теме финансов и фондового рынка от ITI Capital:


habr.com

Роботы для Форекс, FORTS, ММВБ — бесплатно

В этом разделе я буду выкладывать совершенно бесплатно все торговые роботы (СОВЕТНИКИ) и скрипты для терминалов QUIK, ТРАНЗАК (TRANSAQ), WEALTH-LAB, MetaStock, Metatrader 4 (MT4), Metatrader 5 (MT5) для торговли на Московской бирже и для торговли на рынке «FOREX». 

Поэтому, уважаемые трейдеры, скачиваем, тестируем, наслаждаемся торговлей!



Все для терминала QUIK (Квик)


Читаем и скачиваем всю информацию в разделе QUIK (Квик)

Скрипты, Торговые роботы, Индикаторы, Утилиты


Примеры стратегий для MetaStock


Читаем и скачиваем всю информацию в разделе MetaStock

Скрипты, Торговые роботы, Индикаторы, Утилиты


Все для терминала Транзак (Transaq)


Читаем и скачиваем всю информацию в разделе Транзак (Transaq)

Скрипты, Советники, Индикаторы


Роботы и стратегий для Wealth-Lab


Читаем и скачиваем всю информацию в разделе Wealth-Lab

Скрипты, Торговые роботы, Индикаторы, Утилиты


Все для терминала METATRADER 4 (MT4)


Читаем и скачиваем всю информацию в разделе METATRADER 4

Скрипты, Советники, Индикаторы


Все для терминала METATRADER 5 (MT5)


Читаем и скачиваем всю информацию в разделе METATRADER 5

Скрипты, Советники, Индикаторы


Пример простого робота на TradeScript:

Buy Signals
# Покупаем, если волатильность снижается, а объем и цена имеют восходящий тренд
 
HistoricalVolatility(CLOSE, 15, 252, 2)

ВСЕ МАТЕРИАЛЫ предоставлены для ознакомления, скачивание материала с целью дальнейшей продажи или распространения запрещено.
ВСЕ МАТЕРИАЛЫ НА ДАННОЙ СТРАНИЦЕ САЙТА БЫЛИ НАЙДЕНЫ НА ПРОСТОРАХ ИНТЕРНЕТА И НАХОДИЛИСЬ В СВОБОДНОМ ДОСТУПЕ.


* Предупреждение о рисках: работа на финансовых рынках и использование кредитного плеча сопряжена с высоким уровнем риска и может привести к частичной или полной потере депозита. Начиная работу на финансовом рынке, убедитесь, что вы имеете достаточный уровень знаний и подготовки и полностью осознаете возможные риски. Любые рекомендации предоставлены в качестве рыночных комментариев, и не являются советом по инвестициям. Компания DayTradingSchool.ru не несет ответственности за любые потери или убытки, которые могут возникнуть прямо или косвенно от использования предоставленной информации и программ.
 

Если возникнут сложности, обращайтесь в скайп Школы DayTrader1982 или e-mail — [email protected]

© Наш сайт www.daytradingschool.ru

daytradingschool.ru

Что такое биржевые роботы? Роботы для биржевой торговли на фондовом рынке

 

Общие положения

Плюсы торговых роботов

Минусы торговых роботов

Материалы по теме

 

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

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

Общие положения

Прежде всего, стоит сказать, что трейдер должен торговать не бессистемно, а в соответствии с определенной стратегией. Причем рынок постоянно меняется, и торговая система должна корректироваться вслед за ним. Эти изменения могут быть как глобальными (корреляции активов, реакции на определенную статистику и так далее), так и минимальными (подстройка к волатильности, реакция на уровни, характер пробоя/отбоя и так далее). Причем микроизменения могут накапливаться, вследствие чего торговая система, работавшая ранее, может перестать приносить былую прибыль. Так что и торговой системе, и торговому роботу нужно постоянно «подкручивать гайки».

Рис. 1. Изменения макропараметра рынка на примере различных корреляций индексов ММВБ и РТС

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

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

Плюсы торговых роботов

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

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

Рис. 2. Тиковый график фьючерса на индекс РТС

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

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

Минусы торговых роботов

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

Некорректная работа при микроизменениях рынка. Если ваш робот хорошо торгует, скажем, в трендовом рынке или во время высокой волатильности, то при вступлении в фазу боковика (например, летом 2016) может давать просадку. Во избежание подобных ситуаций требуется всё время подстраивать робота к постоянно меняющимся условиям. Причем роботу необходимы элементы не только принятия торговых решений, но и риск-, и мани-менеджмента. Если робот начинает совершать серию убыточных сделок либо достигает определенной просадки, нужно воспользоваться механизмом автовыключения (предпочтительно выбирать роботов с этой функцией). Так у трейдера появится время на анализ изменившихся рыночных условий.

Рис. 3. Пример снижения волатильности на фьючерсе на индекс РТС летом 2016 года

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

Неясные алгоритмы. Гипертрофированный вариант предыдущего минуса. Биржевые роботы для частных инвесторов часто предлагаются в форме «черных ящиков» — программ с непонятными алгоритмами. Многие начинающие трейдеры, мечтая получить готового робота, покупают подобные «денежные машины». Эти программы могут работать, но после изменений рыночных условий (которые в любом случае произойдут) перестают приносить прибыль. И это вполне логично. Но пока трейдер осознает, что произошло, он успеет вернуть рынку заработанное, причем сторицей.

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

Вывод

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

 

Материалы по теме:

Бесплатный вебинар «Как создать свою торговую систему на бирже»

Подробный видеокурс «Академия успешного трейдинга 2.0»

 

 

22.02.2017

www.opentrainer.ru

Бесплатные программы для трейдеров

Название Описание / Опции Файл Автор
Файлы, предназначенные для Quik
Файл настроек для Quik info_standart.wnd – стандарт-внедрение для Quik (поддерживают версии 17 и выше), предназначено для профи, работающих в рамках ММВБ/FORTS. Предоставляет контент, необходимый в учете счетов и для совершения торговых операций. Активы/акции разделены по экономическим секторам, вследствие чего в конкретной отрасли заметны лидеры/аутсайдеры. СКАЧАТЬ! ИТТ
Аналитичекские файлы Эксель
Трейдерский журнал Нацелен на учет сделок. Позволяет отслеживать эффективность (результативность) торговых операций, на основании чего делаются выводы. СКАЧАТЬ! ИТТ 
Дневник трейдинга Помощник в ведении сделок, здесь фиксируются идеи, важные моменты и ошибки. Способствует выявлению-упреждению систематических недочетов, что повышает уровень торговли биржевика. СКАЧАТЬ! ИТТ
XpressAnalizator v1.3 (т. н. Экспресс-Анализатор) Аналитичес. помощник в результативной сфере торговли (учтены десятки показателей, в т. ч. кривая счета, максимал. просадка, доходность…). СКАЧАТЬ! К. Копыркин
 
3D1 v.8, он же 3D Analizator Нацелен на оптимизацию/анализ торговых систем, нюансы: трехмерная графика всех данных. СКАЧАТЬ! Crazilla&Konkop
 
Counter 3.20 Софт в виде электронных таблиц учета, отражающих подробнейшую статистику по текущим сделкам для любых фондовых рынков. СКАЧАТЬ! Nolos
 
Сеть нейронов в Эксель на платформе VBA Назначение нейронной сети – прогнозирование котировок, опробована в рамках LUCKOIL, ММВБ ROSNEFT. СКАЧАТЬ! apsheronsk.bozo.ru
 
Софт для торговли: советники, машины (боты)   

PIAdviser

Функционал советника-аналитика, полное название системаы PersonalInvestmentAdviser, создана как инструмент анализа данных биржи, прогнозирует динамику цен, генерирует торговые сигналы (ММВБ, COMMODITIES, NYSE, FORTS, NASDAQ, ETF, FOREX), способствует обучению трейдинг-технологиям, учит создавать собственную торговую систему.
Подробнее

 

СКАЧАТЬ!
 

ИТТ

SuperADX

Биржевой бот — робот, торговые тактики которого торгуют по техническим индикаторам и осцилляторам, всего 19 тактик.
Подробнее


СКАЧАТЬ!

ИТТ

«Рыболов»/QuikFisher
Функционирующий совместно с Quik торговый бот на базе двух видов анализа: графического, уровеневого, берущий во внимание специфику рынка РФ, насчитывает 6 типов тактик для торговли.
Подробнее

СКАЧАТЬ!

ИТТ

«Охотник»/QuikHunter
Создан для слежения и поимки импульсов движений цены, целевая аудитория продукта – скальперы, активно торгующие биржевики.
Подробнее
СКАЧАТЬ! ИТТ

Analytic-Spy.ru
Улучшающий качество торговли вручную и на автомате внутри дня онлайновый торговый советник, т. н. «Аналитический шпион». Выводит на один экран показатели анализа/статистики, расчет осуществлен с минимал. задержкой в 60 сек.
Подробнее
СКАЧАТЬ! ИТТ
т. н. QCenter Нацелен на создание МТС или ряда ботов-моделей для Quik, базирующихся в MetaStock.
СКАЧАТЬ!


С. Косинский

QuikOrdersDOM Цель представленного бота-«скальпера»: проведение/отправка заявок в Quik быстро, по одному клику.
СКАЧАТЬ!

http://ttools.ru/

 


Мультиплатформенный стакан скальперский
Благодаря ему заявка ставится в две стороны (покупка/продажа) в один клик на разную глубину стакана плюс на автомате фиксируются стоп-лосс, тейк-профит, тейк-профит скользящий (в указанной последовательности). Обслуживает ряд платформ – Alor- и Smart-Trade, Quik, AlfaDirect. Функционал охватывает рынки ММВБ, FORTS, фьючерсную секцию украинской биржи.  
сайт А. Крамина
Аналитич. программы
ПО для теханализа Neuroshell, индикаторы Билла Уильямса для MT4, MetaStockPro 11, Amibroker, TradeStation, OmegaResearch, MetaStock 10 pro.   веб-сайт
RTT News Практичная, хотя и небольшая утилита, в реальном времени отправляет пользователю сигнал о публикации свежих новостей политики, финансов, экономической направленности, а также комментариев на фондовом рынке и событий, с ним связанных. Учитываются актуальные новости из-за рубежа, на английском языке.
СКАЧАТЬ!


www.harami.ru

Программа, генерирующая цифровые методы Функции генератора – внедрение методики цифровой фильтрации в различные программы теханализа рынков биржи и валют Forex. Программные компоненты помогают расчитывать фильтры с последующим использованием результата для создания личных методик теханализа. СКАЧАТЬ! http://fx.qrz.ru/
FxCompasNewsInjector Программа с простым интерфейсом, выводящая на монитор в кратком виде свежий экономический новостной контент. Новостная информация поступает с серверов Форекс-клуба. Важный нюанс: новостное время представлено на русском языке в часовом поясе GMT.
СКАЧАТЬ!

www.harami.ru

Опционный калькулятор от Открытия Помогает незамедлительно вычислить цену опциона в заданных трейдером условиях рынка, определяет волатильность (внутреннюю) опциона согласно конкретной суммы премии. Трейдер визуально оценивает связь доходов-потерь приобретателя опциона со стоимостью базового актива, выявляя зависимость на встроенном графике. Основываясь на софте, игрок повышает точность принятых инвестиционных решений и собственную скорость реагирования на биржевые события. Установка JavaRuntimeEnvironment (JRE) – обязательное условие функционирования опционного калькулятора.       

 


сайт Открытие

Калькулятор оционов «FORTS» (на базе Октан) Данный механизм посвящен расчету теоретических премий опционных стратегий/опционов (по формуле Блэка – Шоулза), графическому построению доходов/убытков для конкретной опционной стратегии (сюда относится и использование базовых активов).
СКАЧАТЬ!

веб-сайт
ПО TradisonAnalytics Анализатор результатов биржевой торговли, для платформ NetInvestor и Quik.
СКАЧАТЬ!

веб-сайт

TrAn (TradeAnalyzer) Утилита, позволяющая просматривать/анализировать торги, хорошо тестирует торговые стратегии.
СКАЧАТЬ!

веб-сайт

Скальперский QuickQUIK Посвящен анализу стакана на платформе Quik, где расположены заявки с многочисленными контрактами, алгоритм выставления заявок нацелен на извлечение максимальной прибыли.
СКАЧАТЬ!

www.freeman.li

Утилита итога по сделкам Создана для Quik, ее задача – показать оборот, группируя для этого результат сделок по конкретным инструментам без учета комиссии.
СКАЧАТЬ!

www.freeman.li

Калькулятор позиционных уровней Утилита ведет расчет уровней допустимой просадки-максимума и цели относительно длинной/короткой позиции, соответственно открытой по текущей цене ask/bid. Рассчитываются два значения объема вхождения в позицию, допустимый объем позиции при выставлении стопа в 1 шаге от цены открытия (Stop AT Open), когда позиция открыта в сторону роста бара. Уровни, вычисленные программой, отображает окно биржевого терминала, они фиксируются на заданном ценовом графике.
СКАЧАТЬ!

Н. Морошкин
Привод для торговли QScalp Анализирует и на высокой скорости совершает операции при краткосрочной, а также высокочастотной торговле на бирже. Инструмент наглядно отражает сложившуюся рыночную ситуацию и в одно касание может выполнять совокупность торговых операций. СКАЧАТЬ! Н. Морошкин

www.i-tt.ru

Где взять роботов для Московской Биржи?

«По данным Московской биржи уже два года назад торговые роботы выставляли более 95% объема заявок на рынке акций, а в объеме торгов их доля составляла 40%. На срочном рынке FORTS доля роботов и вовсе была более 60%. И из года в год влияние роботов на мировых финансовых рынках только растет. Торговые решения принимаются такими автоматическими системами за доли секунды — в режиме ручного трейдинга подобная реакция на колебания котировок невозможна.

Особенно актуальным такой высокочастотный трейдинг (HFT) становится в моменты сильных колебаний котировок — скорость реакции и минимальная задержка в исполнении сделок выходят на первый план. Вспомним хотя бы сверхволатильный конец 2014 года — »черный понедельник» 14 декабря и еще более «черный вторник» 15 декабря с последующим отскоком рубля. Расчетливые алготрейдеры наверняка существенно увеличили свой торговый счет в эти дни.

Как раз за несколько недель до этого на валютном рынке Московской биржи стала доступна торговая платформа MetaTrader 5, поддерживающая HFT-трейдинг и торговых роботов. Трейдеры, использующие MOEX в качестве основной рабочей площадки, получили в распоряжение не просто популярное торговое решение, а универсальный аппарат «все-в-одном». Эта высокоскоростная платформа позволяет не только торговать на рублевых парах, зарабатывая на колебаниях курсов. Благодаря встроенным сервисам можно прямо в MetaTrader 5 покупать готовых роботов или заказывать у фрилансеров эксклюзивные советники, которые будут торговать по заданной стратегии.

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

Самое главное — благодаря широкому распространению платформ MetaTrader такие роботы становятся доступны все большему количеству трейдеров. Это раньше нужно было быть опытным программистом, чтобы самостоятельно написать советника для автоматической торговли. Теперь же любого робота можно скачать во встроенном в MetaTrader 5 Маркете, работающем по принципу Apple App Store или Google Play. Помимо 1 100 советников и индикаторов там можно найти журналы и книги финансовой тематики. Словом, все необходимое для совершенствования своих навыков и знаний. В магазине представлены и бесплатные продукты — качайте и используйте их в торговле совершенно свободно!

Созданный два года назад Маркет точно угадал текущие запросы трейдеров и стал «ходовым местом» — к лету 2014 года в магазине было продано 6 300 продуктов общей стоимостью более 522 000 $, а услугами сервиса воспользовались 520 продавцов и 24 500 покупателей. Таким образом Маркет обрел статус главного места покупки торговых роботов в интернете: «Говорим — рынок советников, подразумеваем — MetaTrader Market».

Готовы использовать роботов для автоматизации своей торговли, но боитесь подступить к новому для себя делу? Тогда зайдите в Маркет и бесплатно скачайте какой-нибудь советник для MetaTrader 5. Запустите его в торговлю и оцените результаты. Возможно, это в итоге подтолкнет вас на дальнейшее знакомство с алготрейдингом и даст преимущество в виде HFT на Московской Бирже».

Источник: investfunds.ru, «Где найти роботов для Московской биржи»

smart-lab.ru

Пишем торгового робота для биржи Exmo

Теперь, когда мы разобрались, что такое биржа биткоинов, отложенные ордера и API, пришло время написать своего собственного бота.

Тем, кто попал сюда впервые, и не знает о чем идет речь, советую прочитать предыдущие статьи цикла – вы сможете найти перечень внизу этой статьи.

Итак, что это за бот и как он будет работать

Бот будет выполнять рутинную работу за вас – он будет мониторить состояние биржи, отслеживать текущий курс, создавать ордера на покупку по выгодному курсу, и, после их выполнения, продавать купленную валюту.

Бот будет работать на вашем компьютере, подключаться к бирже под вашей учетной записью, все, что вам потребуется – стабильный интернет, наличие некоторой суммы на балансе биржи, ну и установленный интерпретатор Python (о том, как его установить, я писал в этой статье).

Если сделка на покупку не реализуется в течении какого-то времени (у меня это три минуты) бот отменяет ордер и создает новый, с новым курсом.

Если сделка на покупку прошла, то бот создает ордер на продажу, и держит этот ордер до тех пор, пока он не будет целиком исполнен.

Бот берет среднюю цену по рынку за некоторый период (из-за ограничений exmo, за последние 100 сделок, на других биржах я действовал по другому), и создает ордера на покупку с указанной наценкой – т.е. ниже текущей цены рынка, после чего создает ордера на покупку – опять же с указанной наценкой – получается выше цены рынка. В сумму продаж/покупок закладывается комиссия биржи и, таким образом, нивелируется. Совершая сделки, бот отдает бирже требуемый ею кусок, но прибыль для владельца бота остается неизменной.

Бот отслеживает частичное исполнение ордера – он не будет создавать новых ордеров, пока предыдущий не был полностью исполнен или отменен. Если предыдущий ордер был исполнен частично, бот будет ждать завершения всех сделок по этому ордеру.

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

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

Сколько зарабатывает:

В рамках подготовки этой статьи (и отладки алгоритма), я играл на сумму 1 доллар 49 центов – и вот какие он сделки совершал (читать снизу вверх):

Если проанализировать доход/расход, то бот принес 3.5 цента за день – при том, что я играл на полтора доллара – это 2.4% со вклада в день.

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

Недостатки бота:

Так как бот учебный, некоторые вещи упрощены и убраны из кода – нет стоп-лоссов и тейк-профитов, курс берется по последним 100 сделкам, которые возвращает эта биржа, и есть вероятность, что бот купит на пике, и потом долго не сможет продать (тут придется либо ждать, либо продать по курсу рынка, выбор за человеком).

Так же в примере используется торговля по одной валютной паре, хотя вполне возможно изменить алгоритм для торговли несколькими парами параллельно.

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


Реклама



Алгоритм работы:

Для наглядности составлена блок-схема алгоритма работы – полностью транслировать её в текст я смысла не вижу, поясню основные принципы.

Бот играет на сумму которую вы указали – в данном случае для примера выбрана сумма 10 долларов США. На эту сумму бот старается купить биткойнов по курсу, чуть ниже текущего курса рынка. Если в течении некоторого времени (три минуты в примере) купить не получается, этот ордер на покупку отменяется, и создается новый, чуть ниже текущей цены уже на этот момент времени.

Если же ордер на покупку исполняется, то бот создает отложенный ордер на продажу этой валюты – он старается продать купленную валюту, и получить за это условные 10 долларов + желаемую наценку.

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

Все, что бот зарабатывает, не тратится – бот играет на указанную сумму, а полученный излишек просто копится на балансе.

Вот блок-схема работы:


Реклама



Как начать пользоваться:

1. Регистрируйтесь на бирже (если еще этого не сделали):

2. Перейдите в Account-settings-API, нажмите “Generate and save”, и получите ключ и подпись: 

3. Установите интерпретатор Python 3.4 и выше (описано в этой статье)

4. Создайте файл с названием exmo.py и скопируйте туда код, указанный ниже

5. В коде, в строках 11 и 13, укажите ключи API, полученные в шаге 2

6. В строке  24 укажите сумму, на которую будет играть бот — CAN_SPEND = 1.45 – сейчас указано 1.45 доллара.

7. На балансе не должно быть currency_1 — например, если играете на паре BTC_USD, то BTC заранее переведите в доллары или в другую валюту, а то продаст в минус.

8. Сохраните и запускайте (F5) – бот начнет работать.

Вы можете его запустить, даже если на бирже сейчас нет денег – бот вас предупредит, и просто ничего не купит. Но, конечно, для успешной работы нужно, что бы деньги были 🙂 На 11.04.2017 минимальная сумма на балансе должна составлять примерно 1.5 доллара – это примерно равно минимальной сумме сделки на бирже, 0.001 Btc.


Реклама



Сам код бота:

import urllib, http.client
import time
import json
# эти модули нужны для генерации подписи API
import hmac, hashlib

# ключи API, которые предоставила exmo
API_KEY = 'YOUR API KEY'
# обратите внимание, что добавлена 'b' перед строкой
API_SECRET = b'YOUR API SECRET'

# Тонкая настройка
CURRENCY_1 = 'BTC' 
CURRENCY_2 = 'USD'

CURRENCY_1_MIN_QUANTITY = 0.001 # минимальная сумма ставки - берется из https://api.exmo.com/v1/pair_settings/

ORDER_LIFE_TIME = 3 # через сколько минут отменять неисполненный ордер на покупку CURRENCY_1
STOCK_FEE = 0.002 # Комиссия, которую берет биржа (0.002 = 0.2%)
AVG_PRICE_PERIOD = 15 # За какой период брать среднюю цену (мин)
CAN_SPEND = 5 # Сколько тратить CURRENCY_2 каждый раз при покупке CURRENCY_1
PROFIT_MARKUP = 0.001 # Какой навар нужен с каждой сделки? (0.001 = 0.1%)
DEBUG = True # True - выводить отладочную информацию, False - писать как можно меньше

STOCK_TIME_OFFSET = 0 # Если расходится время биржи с текущим 

# базовые настройки
API_URL = 'api.exmo.com'
API_VERSION = 'v1'

# Свой класс исключений
class ScriptError(Exception):
    pass
class ScriptQuitCondition(Exception):
    pass

CURRENT_PAIR = CURRENCY_1 + '_' + CURRENCY_2

# все обращения к API проходят через эту функцию
def call_api(api_method, http_method="POST", **kwargs):
    # Составляем словарь {ключ:значение} для отправки на биржу
    # пока что в нём {'nonce':123172368123}
    payload = {'nonce': int(round(time.time()*1000))}

    # Если в ф-цию переданы параметры в формате ключ:значение
    if kwargs:
        # добавляем каждый параметр в словарь payload
        # Получится {'nonce':123172368123, 'param1':'val1', 'param2':'val2'}
        payload.update(kwargs)

    # Переводим словарь payload в строку, в формат для отправки через GET/POST и т.п.
    payload =  urllib.parse.urlencode(payload)

    # Из строки payload получаем "подпись", хешируем с помощью секретного ключа API
    # sing - получаемый ключ, который будет отправлен на биржу для проверки
    H = hmac.new(key=API_SECRET, digestmod=hashlib.sha512)
    H.update(payload.encode('utf-8'))
    sign = H.hexdigest()
    
    # Формируем заголовки request для отправки запроса на биржу. 
    # Передается публичный ключ API и подпись, полученная с помощью hmac
    headers = {"Content-type": "application/x-www-form-urlencoded",
           "Key":API_KEY,
           "Sign":sign}

    # Создаем подключение к бирже, если в течении 60 сек не удалось подключиться, обрыв соединения
    conn = http.client.HTTPSConnection(API_URL, timeout=60)
    # После установления связи, запрашиваем переданный адрес
    # В заголовке запроса уходят headers, в теле - payload
    conn.request(http_method, "/"+API_VERSION + "/" + api_method, payload, headers)
    # Получаем ответ с биржи и читаем его в переменную response
    response = conn.getresponse().read()
    # Закрываем подключение
    conn.close()

    try:
        # Полученный ответ переводим в строку UTF, и пытаемся преобразовать из текста в объект Python
        obj = json.loads(response.decode('utf-8'))

        # Смотрим, есть ли в полученном объекте ключ "error"
        if 'error' in obj and obj['error']:
            # Если есть, выдать ошибку, код дальше выполняться не будет
            raise ScriptError(obj['error'])
        # Вернуть полученный объект как результат работы ф-ции
        return obj
    except ValueError:
        # Если не удалось перевести полученный ответ (вернулся не JSON)
        raise ScriptError('Ошибка анализа возвращаемых данных, получена строка', response)

# Реализация алгоритма
def main_flow():
    
    try:
        # Получаем список активных ордеров
        try:
            opened_orders = call_api('user_open_orders')[CURRENCY_1 + '_' + CURRENCY_2]
        except KeyError:
            if DEBUG:
                print('Открытых ордеров нет')
            opened_orders = []
            
        sell_orders = []
        # Есть ли неисполненные ордера на продажу CURRENCY_1?
        for order in opened_orders:
            if order['type'] == 'sell':
                # Есть неисполненные ордера на продажу CURRENCY_1, выход
                raise ScriptQuitCondition('Выход, ждем пока не исполнятся/закроются все ордера на продажу (один ордер может быть разбит биржей на несколько и исполняться частями)')
            else:
                # Запоминаем ордера на покупку CURRENCY_1
                sell_orders.append(order)
                
        # Проверяем, есть ли открытые ордера на покупку CURRENCY_1
        if sell_orders: # открытые ордера есть
            for order in sell_orders:
                # Проверяем, есть ли частично исполненные
                if DEBUG:
                    print('Проверяем, что происходит с отложенным ордером', order['order_id'])
                try:
                    order_history = call_api('order_trades', order_id=order['order_id'])
                    # по ордеру уже есть частичное выполнение, выход
                    raise ScriptQuitCondition('Выход, продолжаем надеяться докупить валюту по тому курсу, по которому уже купили часть')
                except ScriptError as e:
                    if 'Error 50304' in str(e):
                        if DEBUG:
                            print('Частично исполненных ордеров нет')
                    
                        time_passed = time.time() + STOCK_TIME_OFFSET*60*60 - int(order['created'])

                        if time_passed > ORDER_LIFE_TIME * 60:
                            # Ордер уже давно висит, никому не нужен, отменяем
                            call_api('order_cancel', order_id=order['order_id'])
                            raise ScriptQuitCondition('Отменяем ордер -за ' + str(ORDER_LIFE_TIME) + ' минут не удалось купить '+ str(CURRENCY_1))
                        else:
                            raise ScriptQuitCondition('Выход, продолжаем надеяться купить валюту по указанному ранее курсу, со времени создания ордера прошло %s секунд' % str(time_passed))
                    else:
                        raise ScriptQuitCondition(str(e))

        else: # Открытых ордеров нет
            balances = call_api('user_info')['balances']
            if float(balances[CURRENCY_1]) >= CURRENCY_1_MIN_QUANTITY: # Есть ли в наличии CURRENCY_1, которую можно продать?
                """
                    Высчитываем курс для продажи.
                    Нам надо продать всю валюту, которую купили, на сумму, за которую купили + немного навара и минус комиссия биржи
                    При этом важный момент, что валюты у нас меньше, чем купили - бирже ушла комиссия
                    0.00134345 1.5045
                """
                wanna_get = CAN_SPEND + CAN_SPEND * (STOCK_FEE+PROFIT_MARKUP)  # сколько хотим получить за наше кол-во
                print('sell', balances[CURRENCY_1], wanna_get, (wanna_get/float(balances[CURRENCY_1])))
                new_order = call_api(
                    'order_create',
                    pair=CURRENT_PAIR,
                    quantity = balances[CURRENCY_1],
                    price=wanna_get/float(balances[CURRENCY_1]),
                    type='sell'
                )
                print(new_order)
                if DEBUG:
                    print('Создан ордер на продажу', CURRENCY_1, new_order['order_id'])
            else:
                # CURRENCY_1 нет, надо докупить
                # Достаточно ли денег на балансе в валюте CURRENCY_2 (Баланс >= CAN_SPEND)
                if float(balances[CURRENCY_2]) >= CAN_SPEND:
                    # Узнать среднюю цену за AVG_PRICE_PERIOD, по которой продают CURRENCY_1
                    """
                     Exmo не предоставляет такого метода в API, но предоставляет другие, к которым можно попробовать привязаться.
                     У них есть метод required_total, который позволяет подсчитать курс, но,
                         во-первых, похоже он берет текущую рыночную цену (а мне нужна в динамике), а
                         во-вторых алгоритм расчета скрыт и может измениться в любой момент.
                     Сейчас я вижу два пути - либо смотреть текущие открытые ордера, либо последние совершенные сделки.
                     Оба варианта мне не слишком нравятся, но завершенные сделки покажут реальные цены по которым продавали/покупали,
                     а открытые ордера покажут цены, по которым только собираются продать/купить - т.е. завышенные и заниженные.
                     Так что берем информацию из завершенных сделок.
                    """
                    deals = call_api('trades', pair=CURRENT_PAIR)
                    prices = []
                    for deal in deals[CURRENT_PAIR]:
                        time_passed = time.time() + STOCK_TIME_OFFSET*60*60 - int(deal['date'])
                        if time_passed < AVG_PRICE_PERIOD*60:
                            prices.append(float(deal['price']))
                    try:        
                        avg_price = sum(prices)/len(prices)
                        """
                            Посчитать, сколько валюты CURRENCY_1 можно купить.
                            На сумму CAN_SPEND за минусом STOCK_FEE, и с учетом PROFIT_MARKUP
                            ( = ниже средней цены рынка, с учетом комиссии и желаемого профита)
                        """
                        # купить больше, потому что биржа потом заберет кусок
                        my_need_price = avg_price - avg_price * (STOCK_FEE+PROFIT_MARKUP) 
                        my_amount = CAN_SPEND/my_need_price
                        
                        print('buy', my_amount, my_need_price)
                        
                        # Допускается ли покупка такого кол-ва валюты (т.е. не нарушается минимальная сумма сделки)
                        if my_amount >= CURRENCY_1_MIN_QUANTITY:
                            new_order = call_api(
                                'order_create',
                                pair=CURRENT_PAIR,
                                quantity = my_amount,
                                price=my_need_price,
                                type='buy'
                            )
                            print(new_order)
                            if DEBUG:
                                print('Создан ордер на покупку', new_order['order_id'])
                            
                        else: # мы можем купить слишком мало на нашу сумму
                            raise ScriptQuitCondition('Выход, не хватает денег на создание ордера')
                    except ZeroDivisionError:
                        print('Не удается вычислить среднюю цену', prices)
                else:
                    raise ScriptQuitCondition('Выход, не хватает денег')
        
    except ScriptError as e:
        print(e)
    except ScriptQuitCondition as e:
        if DEBUG:
            print(e)
        pass
    except Exception as e:
        print("!!!!",e)

while(True):
    main_flow()
    time.sleep(1)

Примечания по коду:

Строки 16 и 17  обозначают валютную пару. В данном примере это BTC_USD, но вы можете поменять на любую другую.

Строка 19  — CURRENCY_1_MIN_QUANTITY = 0.001. Это минимальная ставка, которая допускается на бирже. Для разных валют она разная, и, вообще, стоило бы получать её автоматически через API запрос. Но это усложнит код, поэтому я указал её как константу. Тем не менее, если вы планируете торговать другой валютой, вам следует поменять это значение, иначе торговля может затрудниться.

Строка 21 — ORDER_LIFE_TIME = 3. Если ордер на покупку не сыграл, то через сколько минут отменить его и создать новый, с новой ценой, более приближенной к текущим реалиям.

Строка 22 — STOCK_FEE = 0.002. Комиссия биржи за совершенную сделку. Непохоже, что бы она когда-то менялась, но, тем не менее, вы, при необходимости, сможете поменять её здесь если понадобится.

Строка 23 — AVG_PRICE_PERIOD = 90. Бот, в идеале, смотрит сделки за последние 90 минут, что бы узнать среднюю цену, в данной реализации он получает список совершенных сделок, и берет те из них, кто моложе 90 минут. Другой вопрос, что биржа не возвращает больше 100 записей, так что в данном случае число 90 сильно завышено.

Строка 24 — CAN_SPEND = 1.45. Важный параметр – сумма денег, которую вы доверяете боту для игры. В данном случае – 1 доллар 45 центов. Это удобно в том случае, когда бот играет на одну валютную пару, а вы – на другую, ну и еще гарантирует, что бот не проиграет всё, что нажито. В общем, чем больше эта сумма, тем больше денег он может заработать.

Строка 25  — PROFIT_MARKUP = 0.001. Это сумма наценки, которую вы хотите получить. В данном случае – это 0.1% от ставки. Чем больше это число, тем больше вы заработаете, но и курс будет раздуваться больше – т.е. вам придется дольше ждать исполнения сделки. Допускается дальнейшее дробление – например, число 0.00111 подходит. Если указать ноль, то бот будет работать вхолостую, обогащая биржу. Вы при этом, терять и зарабатывать не будете.

В строке 26 указано DEBUG = True. С этим параметром будет очень «разговорчивым», он будет комментировать каждое свое действие. Когда вам это надоест, советую вместо True написать False – тогда бот будет писать только по делу.

Так же не помешало бы в код добавить обработку некоторых исключительных ситуаций, перевести на ООП и так далее – но я не вижу смысла усложнять учебный код. Тот, кто заинтересуется, сможет сделать всё это и сам. Ну, или не делать, а просто пользоваться ботом как он есть 🙂


Реклама



Заключение

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

Желаю вам стабильных, хороших заработков!

bablofil.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *