Конструктор Binary Bot — создаем роботов без знания программирования

Приветствую вас, дорогие друзья!

Торговать при помощи роботов — довольно заманчивая перспектива. Лежишь себе на диване, а депозит ежедневно растет. Но, к сожалению, это мечта, недоступная для торговли у большинства брокеров Бинарных Опционов. Лишь немногие брокеры БО предоставляют возможность торговли опционами при помощи терминала МetaТrader 4. Большинство же остальных предлагают воспользоваться веб терминалом, который может быть использован только для ручной торговли.

Тем не менее у брокера Binary.com есть один инструмент — Binary Bot, который дает возможность не только торговать советниками на своих счетах, но и конструировать их из готовых блоков, как конструктор Лего. Давайте разберемся с новым сервисом и выясним, как же написать торгового робота на платформе Binary Bot.

Конструктор Binary Bot доступен по ссылке — https://bot.binary.com/?l=ru

Сборка робота напоминает конструктор Лего – вы собираете своего бота из готовых кубиков на инструментальной панели слева (1), перетаскивая их в рабочую область (2) справа. Большинство так называемых блоков – аналоги функций языка mql. Поэтому имеющим представление об устройстве советников разобраться будет совсем легко. Остальным же придется потратить на изучение что-нибудь около пары-тройки свободных вечеров. Итак, приступим.

Раздел переменные

В этом разделе создаются пользовательские переменные. Чтобы создать переменную, нажмите create variable, затем в появившемся окне введите название переменной и нажмите ок:

Переменная может быть текстовой или числовой.

Блок set

Присваивает значение переменной. В нашем примере переменной trololo присвоено текстовое значение Hello. Далее блок

будет равняться этому текстовому значению.

Блок change

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

Логические выражения

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

Блок условного оператора if-else

Вот простой пример использования одного из операторов:

В данном случае если (if) наша переменная х оказалась больше 1000, мы выводим на экран сообщение «х больше 1000» (do). В противном случае, выведем «х меньше 1000» (else, иначе). Выражение в строке после if, как вы заметили, может быть только либо правдой, либо ложью. Если оно оказывается правдой, оператор направляет нас к выражению после do. Иначе, если выражение оказалось ложью, то мы переместимся к else. Кстати, переменные могут также иметь значения true/false, либо равняться целым или дробным числам, либо вообще содержать текст.

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

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

Если  х больше 1000, сообщаем, что х больше 1000. Следующая конструкция посложнее:

Если х больше 1000, сообщаем, что х больше 1000, иначе сообщаем, что х меньше 1000. Вот еще сложнее:

Если х больше 1000, сообщаем, что х больше 1000, иначе если х больше 5000, сообщаем, что х больше 5000. Еще сложнее:

Если х больше 1000, сообщаем, что х больше 1000, иначе если х больше 5000, сообщаем, что х больше 5000, иначе сообщаем, что х меньше 1000. Как видите, модифицируя этот блок, можно получить любые комбинации.

Блок value

Этот блок просто имеет значение true или false и служит для проверки истинности выражений или булевых переменных. Например, у вас есть переменная, проверяющая, была ли предыдущая сделка убыточной, тогда вы напишете: if лось_по_предыдущей_сделке = true. Для таких проверок и нужен этот блок.

Блок сравнения

Этот блок мы уже применяли в самом первом примере. Он нужен для сравнения числовых величин между собой. Как вы понимаете, два слота между знаком = как раз для подстановки этих выражений и предназначены. Варианты сравнения просты: равны, не равны, больше, меньше и так далее.

Блок логических выражений

Этот блок представляет собой обыкновенные логические выражения И и ИЛИ. Применяется очень просто, например:

Тут в блок логического выражения я вставил два блока сравнения. При вставке в блок если дословно получится следующее: Если х меньше 1000 И (and) х равен НЕ (not) нулю (null), то делаем то-то.

Также вы можете использовать логическое ИЛИ.

Блок not

Этот блок конвертирует булево значение в противоположное. То есть из выражения, которое равно true, делает false. Как в примере выше, х равно нулю/х равно НЕ нулю. То есть not можно воспринимать, как приставку НЕ.

Блок test

Этот блок возвращает определенное значение в зависимости от истинности выражения в строке test. Вот пример:

Если х меньше 1000, у становится равным 100, если х больше 1000, у = 200.

Математические выражения

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

Блок number

Это обычное число, которое может быть использовано, например, для сравнения с какой-либо переменной или для приравнивания ее к этому числу. Например, х = 100.

Арифметические действия

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

Более сложные операции

Этот блок позволяет получить, например, логарифмы или квадратные корни из чисел.

Геометрия

С помощью этого блока вы сможете вычислить, например, синус, косинус, тангенс углов.

Блок констант

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

Дополнительная информация

Данный блок поможет вам узнать, является ли ваша переменная, например, четным (even) или нечетным (odd) числом, а также простым (prime), целым (whole), положительным (positive), отрицательным (negative). А еще делиться ли ваша переменная на какое либо число без остатка (divisible by).

Блок изменения переменной

Изменить х на единицу.

Округление

Округлить переменную или число, округлить вверх или вниз.

Операции с массивами

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

Остаток от деления

Блок возвращает остаток от деления двух чисел.

Сравнение

Этот блок проверяет, находится ли число или переменная в указанном диапазоне и возвращает true или false.

Генератор случайных чисел

Блок возвращает случайное число из заданного диапазона.

Случайная фракция

Блок возвращает случайную фракцию от 0.0 до 1.0.

Раздел работы с текстом

Этот раздел позволяет работать с текстовыми переменными.

Блок строка

Блок с обычной строкой, используется для построения более сложных конструкций.

Проверка на заполнение

Проверяет строку на заполнение. Возвращает false, если строка пустая и true, если что-то содержит.

Присоединение строки к переменной

Присоединяет строку к переменной.

Создание текста из частей

Создает текст из нескольких кусков.

Длина строки

Возвращает длину строки в символах.

Поиск вхождения

Ищет определенные символы (abc) в переменной (text) и возвращает номер первого или последнего найденного в строке символа.

Символ по номеру позиции

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

Substring

Аналог функции substring языка mql.

Перевод регистра

Блок предназначен для перевода текста в нижний и верхний регистр или для перевода первого символа в верхний регистр.

Убрать пробелы

Блок убирает пробел с левой части, правой или обоих частей строкового выражения.

Print

Блок производит вывод на экран строкового выражения или переменной.

Раздел работы с массивами

Блок create empty list

Создает пустой массив. Опционально можно сразу заполнить массив нужными переменными, добавляя поля item.

Блок create list with

Создает массив и сразу же присваивает значения всем переменным массива. Пример:

Создали текстовый массив trololo из трех элементов. Аналогично заполняются и массивы других типов.

Блок create repeated list

Создает массив из указанной переменной, повторяющейся определенное количество раз. Например:

Создали массив из 5 элементов, каждый из которых равен значению переменной trololo («Hello», как вы помните).

Блок длина массива

Возвращает количество элементов в массиве.

Блок is empty

Проверяет, пустой ли массив и возвращает true/false.

Блок поиска по массиву

Ищет в массиве переменную или значение и возвращает индекс элемента.

Блок получения значения из массива

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

Блок вставки в массив

Вставляет в массив определенные элементы.

Выборка из массива

Возвращает из определенного массива значения в указанном диапазоне индексов.

Блок получения массива из текста

Формирует массив из текста с указанными разделителями. Также может формировать текст из массива.

Сортировка массива

Блок сортирует числовой или текстовый массив по возрастанию/убыванию или по алфавиту в прямом и обратном порядке.

Раздел функций

Служит для создания функций.

Блок функции

Обычная функция без возвращаемых значений. Аналог void в mql. Можно задавать параметры на вход. В поле после to можно вписать название функции, чтобы удобно было к ней обращаться. При нажатии на знак вопроса можно поместить свой комментарий к функции. Для вызова функции используется блок:

Блок функции с возвращаемым значением

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

Блок условия для функции

Блок условия для использования в функциях. Пример:

Если переменная trololo равна единице, функция вернет true, если не равна – false.

Для вызова функции используется блок:

Или, если функция принимает аргументы:

Блок будет таким:

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

Раздел циклы

Простые циклы

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

Установим переменную trololo = 10. Пока trololo > j, печатаем значение trololo (=10), а затем увеличиваем j на единицу.

Блок count with

Аналог конструкции for.

Блок for each

Аналог конструкции foreach.

Блок управления циклом

Прерывает цикл или продолжает его (аналог break и continue).

Блок торговли

В этом разделе всего один блок:

Первая строка определяет выбор рынка, группы инструментов и соответственно сам инструмент. Следующая строка – выбор типа торговли. Далее – направление торговли и период работы. Строка Run once at start позволяет инициализировать переменные. Строка Define Trade Options позволяет задать дополнительные настройки.

Раздел Before Purchase

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

Блоки Ask Price и Payout

Возвращают true/false при повышении/понижении цены или выплаты.

Блок Purchase

Собственно, покупает опцион.

Блок Watch and purchase your contract

Позволяет отслеживать ситуацию по инструменту и совершать торговлю. Пример:

В данном примере если последний тик выше простой скользящей средней, построенной по последним 7 ценам открытия на периоде М1, то мы покупаем опцион call. Если ниже, покупаем put опцион.

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

Раздел During Purchase

Содержит всего 4 блока. Как и в предыдущем разделе, тут можно подключать функции и прочую логику. Например, досрочную продажу опциона.

Блок Watch and sell your purchased contract

Собственно, основной блок, который позволяет следить за открытыми сделками.

Блок sell is available

Возвращает true, если досрочная продажа разрешена.

Блок Sell profit/loss

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

Блок Sell at market

Продает опцион.

Пример использования:

Если разрешено досрочное открытие и прибыль от продажи выше 0, продаем опцион.

Раздел After Purchase

Этот раздел отвечает за действия после того, как срок экспирации контракта истек. То есть, простыми словами, после закрытия сделки.

Основной блок

Блок Result is

Проверяет результат последней сделки на прибыль/убыток и возвращает true/false.

Блок Contract Detail

Получает и возвращает выбранную информацию по закрытому ордеру.

Блок Trade again

Перезапускает торговый цикл.

Раздел Tick analysis и вкладка advanced

Каждый тик

Этот блок вызывается с приходом каждого нового тика.

Блок Last Tick

Возвращает значение последнего тика.

Блок Last Digits

Возвращает количество знаков после запятой для последнего тика.

Блок Last Digit List

Возвращает массив количества знаков после запятой для последних тиков.

Блок Direction Is

Возвращает true/false, если последний тик выше/ниже предыдущего или равен предыдущему тику.

Блок Read candles list

Возвращает выбранную цену из массива цен определенного таймфрейма по номеру свечи. Аналог функций iClose, iHigh и подобных из mql.

Блок Candles List

Возвращает массив цен свечей определенного периода.

Блок Make a list

Создает массив цен (Открытия, например) определенного периода.

Раздел индикаторы

В этом разделе содержатся основные индикаторы – простая и экспоненциальная скользящая средняя, Bollinger Bands и RSI. Из вкладки advanced также доступен индикатор MACD:

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

Раздел Tools

В этом разделе три подраздела. Первый из них – Time, время.

Содержит два блока.

Этот блок возвращает время, прошедшее с момента запуска.

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

Раздел Candle содержит три блока:

Возвращает true, если последняя свеча черная.

Создает массив цен из указанного массива.

Возвращает определенную цену указанной свечи.

Подраздел Misc

Содержит блоки дополнительной информации.

Возвращает величину баланса.

Возвращает общую прибыль по счету.

Возвращает количество итераций с момента запуска.

Выводит уведомление определенного цвета с определенным звуковым эффектом определенного содержания слева внизу.

Загружает дополнительные блоки из сети.

Внутри этого блока все блоки игнорируются.

Меню справа

Теперь разберем меню справа.

Первая кнопка позволяет загружать сохраненных ранее роботов. Вторая – сохранять роботов.

Кнопки 3 – 6 отвечают на навигацию по рабочей области.

Кнопка 7 упорядочивает блоки робота.

Кнопка 8 выводит список совершенных роботом сделок, конечный баланс и минимальную статистику:

Кнопка 9 сбрасывает все блоки в состояние по умолчанию. Внимание! Это уничтожит вашего робота, если вы уже что-то создали.

Кнопка 10 позволяет запустить/остановить торговлю роботом.

Кнопка 11 выводит лог работы советника. Это как журнал в терминале MetaTrader:

Кнопка 12 выводит на экран окно с графиком:

В нем вы можете отобразить индикаторы, используемые роботом и увидеть свои сделки.

И последняя кнопка под номером 13 выводит окошко TradingView, где вы можете собрать свою стратегию из различных индикаторов и оценить ее на истории:

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

Пример советника

И напоследок пример простейшего советника:

Если цена Close выше скользящей средней, покупаем опцион call на повышение, иначе покупаем put. Торговля ведется фиксированной ставкой 1 USD. Время экспирации составляет 5 тиков, торговля ведется на индексе волатильности Volatility 100 Index, который, кстати, работает на выходных. Как видите, даже такая простая стратегия может приносить небольшой профит:

При этом частота сделок тут составляет примерно 5-10 сделок в минуту, перевес прибыльных довольно мал – около 52-53%, но вознаграждение на данном инструменте составляет 94%, что в совокупности выводит советника в небольшой плюс.

Плюсы и минусы конструктора Binary Bot

Большинство алгоритмов простых торговых систем можно представить в виде предложенных инструментом блок схем. Причем делается это за считанные минуты при должном навыке. Порог освоения конструктора — пара свободных вечеров, что делает Binary Bot довольно привлекательным для новичков. Широкий выбор инструментов и сроков экспирации, довольно высокие выплаты по ставкам, круглосуточная работа (и даже работа на выходных по некоторым инструментам) — все это выглядит очень привлекательно. Но на каждую бочку меда, по традиции, водится и ложка дегтя:

  • невозможность тестирования на исторических данных;
  • работа через браузер, который начинает тормозить, когда открываешь с десяток страничек с загруженными ботами;
  • не каждую стратегию можно воплотить в жизнь ввиду жесткого набора блоков;
  • мало стандартных индикаторов, а чтобы добавить свои (вроде Канала Кельтнера или того же WPR), приходится собирать из этих самых блоков целый замок;
  • нет четкой спецификации инструментов, работать приходится наугад: вознаграждение за сделку постоянно меняется, все время узнаешь что-то новое (например, на инструментах Forex, оказывается, с 21:00 срок экспирации контракта минимум 4 часа, и подобных нюансов, наверняка, еще много).

Заключение

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

Тема на форуме

С уважением, Дмитрий аkа Silentspec
Options.TradeLikeaPro.ru

В помощь трейдеру , , , ,
  • ForexLike

    Хорошая статья Дмитрий. Так держать!