Форекс советник "Валютный арбитраж"


К сожалению, не работает этот код в новом билде, там по наличию #property show_inputs и int start() уже всё понятно, что декомпил под старый билд, в новом используется OnTick(), а #property show_inputs вообще для совы не используется, она свои настройки и так выкидывает. Попробовал поправить, пока не вышло, спать уже хочу. Завтра попробую добить, если есть у кого желание помочь, велком ))
 
newest pro 3.7, нет ни у каво ломаной версии ?

У меня есть не ломанная, но она работает со специальным дата-фидом с CQG и Saxo. К сожалению может ставится только на 2 графика. Но этого достаточно если использовать скажем с индексами DAX и US30 как делают большинство. Если надо пиши на скайп: igorm1000
 
К сожалению, не работает этот код в новом билде, там по наличию #property show_inputs и int start() уже всё понятно, что декомпил под старый билд, в новом используется OnTick(), а #property show_inputs вообще для совы не используется, она свои настройки и так выкидывает. Попробовал поправить, пока не вышло, спать уже хочу. Завтра попробую добить, если есть у кого желание помочь, велком ))
Попробуй этот,вроде работает:
 

Вложения

Последнее редактирование:
К сожалению, не работает этот код в новом билде, там по наличию #property show_inputs и int start() уже всё понятно, что декомпил под старый билд, в новом используется OnTick(), а #property show_inputs вообще для совы не используется, она свои настройки и так выкидывает. Попробовал поправить, пока не вышло, спать уже хочу. Завтра попробую добить, если есть у кого желание помочь, велком ))
Попробуй этот,вроде работает:
Арбитражник, как и копировщик сделок, по сути это связка 2 советников. В новых билдах эти связки делают по другому. Надо искать свежие версии, написанные под новые (600 и выше) билды.
Можно попробовать установить и запускать терминалы как портативные и разрешить DLL. Может старые советники заработают, но не факт.
 
Арбитражник, как и копировщик сделок, по сути это связка 2 советников. В новых билдах эти связки делают по другому. Надо искать свежие версии, написанные под новые (600 и выше) билды.
Можно попробовать установить и запускать терминалы как портативные и разрешить DLL. Может старые советники заработают, но не факт.

Да не, дело не в этом. Скомпилированный работает в новом билде как надо, а если его декомпилировать, получаем код под старый билд, так как декомпилятор старый, нового как известно нет, код просто надо адаптировать под новый билд. Сегодня не смогу, поздно домой попал, может на днях доведу до ума. Главное потом под мт5 и cTrader перегнать.
 
в нем тоже самое и в итоге 2016.11.18 00:26:17.918 'QuoteGrabber' is not expert and cannot be executed

да ладно, допилю тот первый, там кода всего ничего, посидеть надо просто плотно, разобраться.
Как это не работает?! Я его поставил со вчерашнего дня на проверку,всё работает.Не знаю,почему у вас не работает.
 
Привет! Работающий арбитражник.
Код:
//+------------------------------------------------------------------+
//|                                          ArbitrageVisualiser.mq4 |
//|                                                         Copyright 2016, |
//|                                                      https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016"
#property link     
#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);
}
//+------------------------------------------------------------------+
 
ArbitrageVisualiser

Привет! Работающий арбитражник.
Код:
//+------------------------------------------------------------------+
//|                                          ArbitrageVisualiser.mq4 |
//|                                                         Copyright 2016, |
//|                                                      https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016"
#property link     
#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);
}
//+------------------------------------------------------------------+
Ловите:
 

Вложения

напишите как правильно пользоваться этой штукой!!! спасибо буду очень признателен!

вот автор пишет :

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

Да спасибо!

а вот
1...........input bool Trade = false; // Торговать разницу котировок или нет
2...........input bool IsMaster = true; // false ставим на счет с быстрыми котировками, true на счет с запаздывающими

то есть на мастер я ставлю 1 - false и 2 - false
а на слейв 1 - true и 2 - true,
или я не так понял? торговать разницу включаем только на слайве ведь так?
 
Да спасибо!

а вот
1...........input bool Trade = false; // Торговать разницу котировок или нет
2...........input bool IsMaster = true; // false ставим на счет с быстрыми котировками, true на счет с запаздывающими

то есть на мастер я ставлю 1 - false и 2 - false
а на слейв 1 - true и 2 - true,
или я не так понял? торговать разницу включаем только на слайве ведь так?

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