Почему так. Мобильная версия мт4 котировки быстрые, а мт4 брокера отстает намного. Используя это , вручную можно заработать. ;)) - страница 3

 
Maxim Dmitrievsky:
Где быстрее-то? спред разный, цены маленько отличаются
В некоторых моментах, счета Pro-cent. и  Pro-rub отличаются больше. Но редко.
 
Alexander Ivanov:
В некоторых моментах, счета Pro-cent. и  Pro-rub отличаются больше. Но редко.
От пинга до серваков зависит многое, если даже будут запаздывать котировки на секунду там или чуть больше, не факт что вас успеют исполнить за это время и не отреквотят. А вообще надо просто индикатора написать удобного и посмотреть отклонения. Так то это одна из немногих здравых идей заработка на форекесе, но надо брокеров перебирать сидеть
 

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

Кидаем советника на разные счета, можно на разные терминалы разных брокеров. Один выставляем slave - на брокера с более быстрыми котировками, второй master - на брокера с медленными. Сова может торговать, советую использовать на демке, иначе запретить торговлю. Все, сова будет отображать бид и аск с другого счета на текущем счете. Потом доделаю до про версии, с индикатором и отображением на истории, с учетом спреда и комиссии, что бы торговать можно было.

 

//+------------------------------------------------------------------+
//|                                          ArbitrageVisualiser.mq4 |
//|                                Copyright 2016, Dmitrievskiy Max. |
//|                        https://www.mql5.com/ru/users/dmitrievsky |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Dmitrievskiy Max."
#property link      "https://www.mql5.com/ru/users/dmitrievsky"
#property version   "1.00"
#property strict

input bool Trade = false;                // Торговать разницу котировок или нет
input bool IsMaster = true;              // false ставим на счет с быстрыми котировками, true на счет с запаздывающими
input double PointsDifference = 0.0005;  // размер запаздывания котировок для открытия позы
input int Slippage = 0;                  // проскальзывание для 4-х значных котировок
input double LotSizeMultiplier = 0.1;    // множитель лота для ордеров
input int OrderMagic = 453535;

double Lots;
int filehandleBid, filehandleAsk;
datetime dateBid, dateAsk;
double priceBid, priceAsk;

  
void OnTick()
  {
   if(IsMaster == false)
    {
     filehandleBid=FileOpen("BidQuote.csv", FILE_WRITE|FILE_CSV|FILE_COMMON);   // пишем в файл биды с быстрого счета
     FileWrite(filehandleBid, MarketInfo(Symbol(), MODE_BID),TimeCurrent());
     FileClose(filehandleBid);
     
     filehandleAsk=FileOpen("AskQuote.csv", FILE_WRITE|FILE_CSV|FILE_COMMON);   // пишем в файл аски с быстрого счета
     FileWrite(filehandleAsk, MarketInfo(Symbol(), MODE_ASK),TimeCurrent());
     FileClose(filehandleAsk);
    }
   
   if(IsMaster == true)
    {
     filehandleBid=FileOpen("BidQuote.csv", FILE_READ|FILE_CSV|FILE_COMMON);    // читаем из файла биды
     priceBid = FileReadNumber(filehandleBid);
     dateBid = FileReadDatetime(filehandleBid);
     FileClose(filehandleBid);
     
     filehandleAsk=FileOpen("AskQuote.csv", FILE_READ|FILE_CSV|FILE_COMMON);    // читаем из файла аски
     priceAsk = FileReadNumber(filehandleAsk);
     dateAsk = FileReadDatetime(filehandleAsk);
     FileClose(filehandleAsk);
    
     ObjectCreate(0,"LineBid",OBJ_HLINE,0,0,priceBid);                             // рисуем линию бид
     ObjectSetInteger(0,"LineBid",OBJPROP_COLOR, Green);
     ObjectSetInteger(0,"LineBid",OBJPROP_STYLE, 4);
     ObjectMove(0,"LineBid", 0, 0, priceBid);
     
     ObjectCreate(0,"LineAsk",OBJ_HLINE,0,0,priceAsk);                             // рисуем линию аск
     ObjectSetInteger(0,"LineAsk",OBJPROP_COLOR, Red);
     ObjectSetInteger(0,"LineAsk",OBJPROP_STYLE, 4);
     ObjectMove(0,"LineAsk", 0, 0, priceAsk);
    
     if (MarketInfo(Symbol(), MODE_ASK) <= priceAsk - PointsDifference && Trade == true)
      {
       if(CountOrders()==0)
       {
        Lots = LotsOptimized();
        if(OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, Bid-PointsDifference, Bid+PointsDifference, NULL, 0, Green) == false) GetLastError();
       }
       Print("Buy Ok");
      }
    
     if (MarketInfo(Symbol(), MODE_BID) >= priceBid + PointsDifference && Trade == true)
      {
       if(CountOrders()==0)
       {
        Lots = LotsOptimized();
        if(OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, Ask+PointsDifference, Ask-PointsDifference, NULL, 0, Red) == false) GetLastError();
       }
       Print("Sell Ok");
      }
    }   
  }
  
int CountOrders()
{
int result=0;
  for (int k=0; k <OrdersTotal(); k++)
    {                                               
     if (OrderSelect(k,SELECT_BY_POS)==true)
     {
      if (OrderType()==OP_BUY || OrderType()==OP_SELL)
       {result++;} 
       else
      {}
     }
    }
 return(result);   
}

double LotsOptimized()
{
 double lot;
 lot=NormalizeDouble(AccountFreeMargin()*LotSizeMultiplier/1000.0,2);
 if(lot<0.01) lot=0.01;
 if(lot>200) lot=200;
 return(lot);
}
//+------------------------------------------------------------------+
Файлы:
 
Привет!. Хорошо. ) а где робот Славе? И какой Мастер? Вижу один робот . ;) Извините за тугодумность.
 
Или этот робот включаем на разные счетя , поменяв режим True и False?
 
Alexander Ivanov:
Или этот робот включаем на разные счетя , поменяв режим True и False?

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

input bool Trade = false;                // Торговать разницу котировок или нет
input bool IsMaster = true;              // false ставим на счет с быстрыми котировками, true на счет с запаздывающими
input double PointsDifference = 0.0005;  // размер запаздывания котировок для открытия позы
input int Slippage = 0;                  // проскальзывание для 4-х значных котировок
input double LotSizeMultiplier = 0.1;    // множитель лота для ордеров
 
Maxim Dmitrievsky:

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

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

Ускорил работу бота за счет использования таймера. Теперь котировки от слэйва в мастер приходят почти мнгновенно.

Файлы:
 
Maxim Dmitrievsky:

Ускорил работу бота за счет использования таймера. Теперь котировки от слэйва в мастер приходят почти мнгновенно.

Здравствуйте уважаемый автор. Советник понравился. Как раз искал такое. Выручили. Причем реализация идеальная. Без заморочек. Хотелось бы дополнить. Зачем нужен стоплосс и тейкпрофит?

Из-за этого количество убыточных большое.

Ведь мы знаем где будет цена на терминале с быстрыми котировками. К примеру ставим разницу в котировках в 0.0005. То есть 5 пунктов. И вот цена прыгнула на 5 пунктов. А на терминале, котором запаздывание еще нет. Но ведь мы знаем где цена будет, что пройдет минимум 5 пунктов. Следовательно мы можем просто выйти получив профит. Без потерь. А так колебаниями вышибает стоплосс. Или я что-то не догоняю?

Ведь тики двигаются туда обратно. А стоп и тейк маленькие. В итоге прибыльных и убыточных 50 на 50.

 
Mihail Moroz:

Здравствуйте уважаемый автор. Советник понравился. Как раз искал такое. Выручили. Причем реализация идеальная. Без заморочек. Хотелось бы дополнить. Зачем нужен стоплосс и тейкпрофит?

Из-за этого количество убыточных большое.

Ведь мы знаем где будет цена на терминале с быстрыми котировками. К примеру ставим разницу в котировках в 0.0005. То есть 5 пунктов. И вот цена прыгнула на 5 пунктов. А на терминале, котором запаздывание еще нет. Но ведь мы знаем где цена будет, что пройдет минимум 5 пунктов. Следовательно мы можем просто выйти получив профит. Без потерь. А так колебаниями вышибает стоплосс. Или я что-то не догоняю?

Ведь тики двигаются туда обратно. А стоп и тейк маленькие. В итоге прибыльных и убыточных 50 на 50.

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

 Тэйкпрофит и стоплосс тут равны как раз значению задаваемой разницы в котировках, например 05 п.

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

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

Причина обращения: