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

Раздел: Советники, эксперты, форекс роботы
Автор темы: ДмитрийС
Создана: 2009-11-14 03:31
Ответов: 963 | Просмотров: 261895
Страница 39 из 49
Источник: https://forexsystemru.com/threads/11369/page-39

---

## yrik735 — 2016-11-17 01:30

Вот

## pulio5g — 2016-11-17 03:27

> Цитата (yrik735):
> Вот

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

## yrik735 — 2016-11-17 16:53

newest pro 3.7, нет ни у каво ломаной версии ?

## Sprinter500 — 2016-11-17 17:12

> Цитата (yrik735):
> newest pro 3.7, нет ни у каво ломаной версии ?

У меня есть не ломанная, но она работает со специальным дата-фидом с CQG и Saxo. К сожалению может ставится только на 2 графика. Но этого достаточно если использовать скажем с индексами DAX и US30 как делают большинство.  Если надо пиши на скайп: igorm1000

## Kent175 — 2016-11-17 17:16

> Цитата (yrik735):
> Вот

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

## Ugar — 2016-11-17 17:27

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

Арбитражник, как и копировщик сделок, по сути это связка 2 советников. В новых билдах эти связки делают по другому. Надо искать свежие версии, написанные под новые (600 и выше) билды.
Можно попробовать установить и запускать терминалы как портативные и разрешить DLL. Может старые советники заработают, но не факт.

## pulio5g — 2016-11-18 00:23

> Цитата (Ugar):
> Арбитражник, как и копировщик сделок, по сути это связка 2 советников. В новых билдах эти связки делают по другому. Надо искать свежие версии, написанные под новые (600 и выше) билды.
> Можно попробовать установить и запускать терминалы как портативные и разрешить DLL. Может старые советники заработают, но не факт.

Да не, дело не в этом. Скомпилированный работает в новом билде как надо, а если его декомпилировать, получаем код под старый билд, так как декомпилятор старый, нового как известно нет, код просто надо адаптировать под новый билд. Сегодня не смогу, поздно домой попал, может на днях доведу до ума. Главное потом под мт5 и cTrader перегнать.

## pulio5g — 2016-11-18 00:28

> Цитата (Kent175):
> Попробуй этот,вроде работает:

в нем тоже самое и в итоге 2016.11.18 00:26:17.918	'QuoteGrabber' is not expert and cannot be executed

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

## Ontario — 2016-11-18 00:32

Вот работающий в ex4

## pulio5g — 2016-11-18 01:53

> Цитата (Ontario):
> Вот работающий в ex4

Да, он и есть, его и пытаюсь портировать на мт5 и cTrader

## Kent175 — 2016-11-18 16:56

> Цитата (pulio5g):
> в нем тоже самое и в итоге 2016.11.18 00:26:17.918    'QuoteGrabber' is not expert and cannot be executed
>
> да ладно, допилю тот первый, там кода всего ничего, посидеть надо просто плотно, разобраться.

Как это не работает?! Я его поставил со вчерашнего дня на проверку,всё работает.Не знаю,почему у вас не работает.

## Omukchaan — 2016-11-18 19:41

Привет! Работающий арбитражник.
 
```
//+------------------------------------------------------------------+
//|                                          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);
}
//+------------------------------------------------------------------+
```

## Kent175 — 2016-11-18 22:20

**ArbitrageVisualiser**

> Цитата (Omukchaan):
> Привет! Работающий арбитражник.
>  
```
//+------------------------------------------------------------------+
> //|                                          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);
> }
> //+------------------------------------------------------------------+
```

  Ловите:

## Omukchaan — 2016-11-19 03:44

> Цитата (Kent175):
> Ловите:

у автора есть более лучшая версия. Имя автора в коде есть.

## M220 — 2016-11-20 01:15

> Цитата (Kent175):
> Ловите:

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

## Omukchaan — 2016-11-20 01:36

> Цитата (M220):
> напишите как правильно пользоваться этой штукой!!! спасибо буду очень признателен!

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

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

## M220 — 2016-11-20 01:41

> Цитата (Omukchaan):
> вот автор пишет :

Да спасибо!

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

## Omukchaan — 2016-11-20 01:55

> Цитата (M220):
> Да спасибо!
>
> а вот
> 1...........input bool Trade = false;                // Торговать разницу котировок или нет
> 2...........input bool IsMaster = true;              // false ставим на счет с быстрыми котировками, true на счет с запаздывающими
>
> то есть на мастер я ставлю 1 - false и 2 - false
> а на слейв 1 - true и 2 - true,
> или я не так понял? торговать разницу включаем только на слайве ведь так?

в коде есть ссылка на  личку автора. У него есть продукт выставлен - и демо итд. Там есть полное описание.

## Ontario — 2016-11-20 02:04

такую торговлю режут на корню с блокировкой счета,так что не обольщайтесь

## Omukchaan — 2016-11-20 02:07

> Цитата (Ontario):
> такую торговлю режут на корню с блокировкой счета,так что не обольщайтесь

верно. Там ведь ловля прибыли за пару секунд. Можно только на центовике баловаться)

---

Следующая страница: https://forexsystemru.com/threads/11369/page-40
