В настоящее время набирает обороты торговля бинарными опционами. И когда на нашем портале стала активно обсуждаться эта тема, я призадумался как можно реализовать данный советник. Оказалось все довольно просто. Для начала нам нужно найти брокера, который поддерживает торговлю бинариками на MetaTrader 4. Забиваем в Google
запрос: брокеры бинарные опционы mt4. Вам можно даже не утруждаться, достаточно кликнуть по ссылке «запрос»

. Открыв первую попавшуюся ссылку на первой странице, я сразу же увидел список из 7 брокеров:
Бинарные опционы на МТ4 платформе предоставляют следующие брокеры:
wforex.ru
grаndcapital.ru
mrcmarkets.ru
mikiforex.com
clmforex.com
lionstone.ru
lisfx.com
Кому данное количество покажется недостаточным, могут продолжить поиски самостоятельно.
На вопросе особенностей торговли бинарными опционами я останавливаться не буду, все это освящено в данном разделе:
am2.opentraders.ru/26773.html
Открытие демо счета и установка терминала, я думаю также не вызовет у вас затруднений.
Переделать советник под бинарные опционы по данной инструкции сможет даже тот, кто никогда в глаза не видел MQL.
Для наших экспериментов возьмем советник, торгующий свечные паттерны:
//+------------------------------------------------------------------+
//| Option.mq4 |
//| Copyright 2015, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, AM2"
#property link "http://www.forexsystems.biz"
#property description "Simple expert advisor"
//--- Inputs
extern double Lot = 5; // лот
extern int StopLoss = 400; // лось
extern int TakeProfit = 800; // язь
extern int Slip = 30; // проскальзывание
extern int Magic = 111; // магик
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
Comment("");
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
//+------------------------------------------------------------------+
//| Check for open order conditions |
//+------------------------------------------------------------------+
void OpenPos()
{
int res;
double bid=MarketInfo(OrderSymbol(),MODE_BID);
double ask=MarketInfo(OrderSymbol(),MODE_ASK);
//--- sell
if(High[1]<High[2] && High[3]<High[2])
{
res=OrderSend(Symbol(),OP_SELL,Lot,
NormalizeDouble(bid,Digits),Slip,
NormalizeDouble(bid+StopLoss*Point,Digits),
NormalizeDouble(bid-TakeProfit*Point,Digits),
"",Magic,0,Red);
return;
}
//--- buy
if(Low[1]>Low[2] && Low[3]>Low[2])
{
res=OrderSend(Symbol(),OP_BUY,Lot,
NormalizeDouble(ask,Digits),Slip,
NormalizeDouble(ask-StopLoss*Point,Digits),
NormalizeDouble(ask+TakeProfit*Point,Digits),
"",Magic,0,Blue);
return;
}
//---
}
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| OnTick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(CountTrades()<1) OpenPos();
}
//+------------------------------------------------------------------+
Начнем переделывать советник с настроек.
//--- Inputs
extern double Lot = 5; // лот
extern int StopLoss = 400; // лось
extern int TakeProfit = 800; // язь
extern int Slip = 30; // проскальзывание
extern int Magic = 111; // магик
Три строчки в середине нам не понадобятся вообще, убираем их, остается такой код:
//--- Inputs
extern double Lot = 5; // лот
extern int Magic = 111; // магик
Переменную
Lot я предпочел назвать
Stavka и в комментарии подписать «ставка в валюте».
Далее добавим в настройки время истечения ставки:
extern string Expiration = "5"; // время истечения в минутах
Для брокера "
Grand Capital" есть возможность указания точного времени экспирации. Например:
11H45m — опцион будет принят на 11 часов 45 минут;
1hour 10 Min 33 sec – опцион будет принят на 1 час, 10 минут и 33 секунды;
23:11:45 — экспирация опциона произойдет в 23:11:45;
14Hour :11m – экспирация произойдет в 14 часов 11 минут.
Сейчас наши настройки будут выглядеть следующим образом:
//--- Inputs
extern double Stavka = 5; // ставка в валюте
extern string Expiration = "5"; // время истечения в минутах
extern int Magic = 111; // магик
Теперь Займемся модификацией торговой функции:
//--- sell
if(High[1]<High[2] && High[3]<High[2])
{
res=OrderSend(Symbol(),OP_SELL,Lot,
NormalizeDouble(bid,Digits),Slip,
NormalizeDouble(bid+StopLoss*Point,Digits),
NormalizeDouble(bid-TakeProfit*Point,Digits),
"",Magic,0,Red);
return;
}
//--- buy
if(Low[1]>Low[2] && Low[3]>Low[2])
{
res=OrderSend(Symbol(),OP_BUY,Lot,
NormalizeDouble(ask,Digits),Slip,
NormalizeDouble(ask-StopLoss*Point,Digits),
NormalizeDouble(ask+TakeProfit*Point,Digits),
"",Magic,0,Blue);
return;
}
//---
Вместо проскальзывания и стопов поставим нолики, а переменную
Lot назовем
Stavka, в поле для комментов
"" вставим время экспирации из настроек
Expiration. И вот наша торговая функция приняла такой компактный вид:
//--- sell
if(High[1]<High[2] && High[3]<High[2])
{
res=OrderSend(Symbol(),OP_SELL,Stavka,bid,0,0,0,Expiration,Magic,0,Red);
return;
}
//--- buy
if(Low[1]>Low[2] && Low[3]>Low[2])
{
res=OrderSend(Symbol(),OP_BUY,Stavka,ask,0,0,0,Expiration,Magic,0,Blue);
return;
}
//---
Больше ничего менять не нужно и можно скомпилировать наш код в
MetaEditor и ставить на график опционов "
Выше Ниже".
//+------------------------------------------------------------------+
//| Option.mq4 |
//| Copyright 2015, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, AM2"
#property link "http://www.forexsystems.biz"
#property description "Simple expert advisor"
//--- Inputs
extern double Stavka = 5; // ставка в валюте
extern string Expiration = "5"; // время истечения в минутах
extern int Magic = 111; // магик
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
Comment("");
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
//+------------------------------------------------------------------+
//| Check for open order conditions |
//+------------------------------------------------------------------+
void OpenPos()
{
int res;
double bid=MarketInfo(OrderSymbol(),MODE_BID);
double ask=MarketInfo(OrderSymbol(),MODE_ASK);
//--- sell
if(High[1]<High[2] && High[3]<High[2])
{
res=OrderSend(Symbol(),OP_SELL,Stavka,bid,0,0,0,Expiration,Magic,0,Red);
return;
}
//--- buy
if(Low[1]>Low[2] && Low[3]>Low[2])
{
res=OrderSend(Symbol(),OP_BUY,Stavka,ask,0,0,0,Expiration,Magic,0,Blue);
return;
}
//---
}
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| OnTick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(CountTrades()<1) OpenPos();
}
//+------------------------------------------------------------------+
П.С. Если у вас не получается переделать советник или вы больше доверяете это дело специалистам, добро пожаловать в
Стол Заказов.
Комментарии (20)
Попробую-ка теперь по колдовать. Может удастся зачаровать пару сов.
10 session Сообщений: 165
extern string Expiration = «5»; // время истечения в минутах
А что и где еще нужно прописать что бы заработало?
Редактирован: 16 сентября 2015, 15:10
10 session Сообщений: 165
35 AM2 Автор Сообщений: 16503 - Андрей
10 session Сообщений: 165
35 AM2 Автор Сообщений: 16503 - Андрей
Так выдает ошибку.
Если бы был в советнике комент то его и так можно бы было использовать для экспирации. Редактирован: 16 сентября 2015, 15:17
10 session Сообщений: 165
35 AM2 Автор Сообщений: 16503 - Андрей
Отличная тема для нас — люмпинов.
10 session Сообщений: 165
Можете подсказать, как добавить мартингейл в советник?
14 beton2011 Сообщений: 895
По этому поводу тоже есть статья: mql.opentraders.ru/1663.html
35 AM2 Автор Сообщений: 16503 - Андрей
Я переделал советник под бинары, ордера открываются но не работает мартингейл встроенный в советнике.
14 beton2011 Сообщений: 895
35 AM2 Автор Сообщений: 16503 - Андрей
0 OLEG2017 Сообщений: 4
0 bear001 Сообщений: 2
35 AM2 Автор Сообщений: 16503 - Андрей
0 bear001 Сообщений: 2
0 OLEG2017 Сообщений: 4
14 Syte Сообщений: 399
14 Syte Сообщений: 399
0 OLEG2017 Сообщений: 4
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий