Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 293

 
oDin48:

Ребят, подскажите, пожалуйста, хороший ДЦ, для торговли советником?


Поделитесь информацией, пожалуйста, а то какой смысл писать сову, не имея нормальных ДЦ с которыми можно работать.
 

https://www.mql5.com/ru/market/product/1144

есть такой советник в маркете на продаже за 1800 usd, протестировал на паре EURUSD делает деньги отлично, на остальных парах по нулям торгует, думаю что это что то подогнаное под историю тикетов, может ли такое быть?

 
oDin48:

Поделитесь информацией, пожалуйста, а то какой смысл писать сову, не имея нормальных ДЦ с которыми можно работать.
Советую погуглить! Тут все официально хорошие!
 
SpikeOne:

https://www.mql5.com/ru/market/product/1144

есть такой советник в маркете на продаже за 1800 usd, протестировал на паре EURUSD делает деньги отлично, на остальных парах по нулям торгует, думаю что это что то подогнаное под историю тикетов, может ли такое быть?

Он же для МТ5! Там и спрашивайте!
 
TarasBY:

... а по правилам какого языка Вы это ваяли?! Например:

:)


вот с этим то и проблема, как раз это и надо "сформулировать" правильно, вроде с логикой всегда норм было, а тут уже месяц сижу не могу сделать ((((((((
 
niformalka:

вот с этим то и проблема, как раз это и надо "сформулировать" правильно, вроде с логикой всегда норм было, а тут уже месяц сижу не могу сделать ((((((((

Помощь снисходит свеху!

Документация Учебник ТА Code Base Статьи

 

"if(iCCI(Symbol,0,14,PRICE_TYPICAL,0)<100&&iCCI(Symbol,0,14,PRICE_TYPICAL,0)<-100 {"

В данном примере по-моему не хватает скобок: 3 открывающие и 2 закрывающие. Советую Автору совы проверить соответствие всех скобок.

Я бы написал так:

if ((iCCI(Symbol,0,14,PRICE_TYPICAL,0)<100)&&(iCCI(Symbol,0,14,PRICE_TYPICAL,0)<-100)) {

 
oDin48:

"if(iCCI(Symbol,0,14,PRICE_TYPICAL,0)<100&&iCCI(Symbol,0,14,PRICE_TYPICAL,0)<-100 {"

В данном примере по-моему не хватает скобок: 3 открывающие и 2 закрывающие. Советую Автору совы проверить соответствие всех скобок.

Я бы написал так:

if ((iCCI(Symbol,0,14,PRICE_TYPICAL,0)<100)&&(iCCI(Symbol,0,14,PRICE_TYPICAL,0)<-100)) {


попробовала, все равно ошибка в конце листинга показывается
 
oDin48:

В данном примере по-моему не хватает скобок: 3 открывающие и 2 закрывающие. Советую Автору совы проверить соответствие всех скобок.

Можно ещё посоветовать Notepad++, в самом нотепаде для mql4-кода выбираете синтаксис С++, в настройках в меню табуляция ставьте на срр 3 (по умолчанию там, кажется, 4). Навскидку, пользы две:

1. подсветка одноименных переменных по всему коду

2. подсветка парной скобки, где бы она в коде не находилась (в том числе подсветка вертикальная, если код выровнен по табуляции). Любых скобок, - круглых, фигурных или квадратных.

Ну и по мелочи - удобные поиск-замена (в том числе в выделенном), маркировка (которая "пометки"), вообщем простая и незатейливая среда разработки. Если комбинировать с метаэдитором, то получается не студия конечно, но умеренно мощный тандем.

 

Всем добра!

Есть скрипт который выставляет ордера в БУ.

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

Например пара GBPCAD спред 10 - больше ордеров селл - так вот ТП должен быть на уровне допустим 1,7010, а стоп лосс на 1,7000 (1,6999 в идеале))

Спасибо


подскажите как поставить в spoiler

//+------------------------------------------------------------------+
//|                                                    ZeroLevel.mq4 |
//|                                                          VadimVP |
//|                                                poluyan@fxmail.ru |
/*
 Скрипт поставит TakeProfit и StopLoss у открытых ордеров на текущем
 инструменте на уровень безубыточности.
 Расчет ведется только для ордеров текущего инструмента.
 Учитывает своп и комиссии. Работает при любых Digits.
 Точность +/- размер спреда.
 Об успешности изменений сообщит в диалоговом окне.
 Проверьте, включена ли опция "разрешить советнику торговать". 
*/
//| 
//+------------------------------------------------------------------+
#property copyright "VadimVP"
#property link      "poluyan@fxmail.ru"
 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
   int kol=0;
   int kolOK=0;
   int i=0;
   double lots=0;
   double sum=0;
   double sum1=0;
   for (i=0; i<OrdersTotal(); i++)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol()!=Symbol()) continue;
      if (OrderType()==OP_BUY)
      {
       lots=lots+OrderLots();
       sum=sum+OrderLots()*OrderOpenPrice();
       sum1=sum1+OrderProfit( )+OrderSwap( )+OrderCommission( )  ; 
       kol=kol+1;
      }
      if (OrderType()==OP_SELL)
      {
       lots=lots-OrderLots();
       sum=sum-OrderLots()*OrderOpenPrice();
       sum1=sum1+OrderProfit( )+OrderSwap( )+OrderCommission( )  ;
       kol=kol+1;
      }
   }
   double zeroprice=0;
   if (lots!=0) zeroprice=sum/lots;
   zeroprice = (MathRound(zeroprice*MathPow(10,Digits)))/MathPow(10,Digits);

   
//-----
 Alert ("!!!  Пожалуйста дождитель окончания работы скрипта!");
 int res = 0;
 for (i=0; i<OrdersTotal(); i++)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol()!=Symbol()) continue;
        
         if (zeroprice>Ask) 
         { if (OrderType()==OP_BUY) {if (zeroprice == OrderTakeProfit()) res=res+1; else { if (OrderModify(OrderTicket(),0,OrderStopLoss(),zeroprice,0,CLR_NONE)) res = res+1;}    }
           if (OrderType()==OP_SELL){if (zeroprice == OrderStopLoss()) res=res+1; else { if (  OrderModify(OrderTicket(),0,zeroprice,OrderTakeProfit(),0,CLR_NONE)) res = res+1;}     } }
         if (zeroprice<Bid) 
         { if (OrderType()==OP_BUY) {if (zeroprice == OrderStopLoss()) res=res+1; else { if (  OrderModify(OrderTicket(),0,zeroprice,OrderTakeProfit(),0,CLR_NONE)) res = res+1;} }
           if (OrderType()==OP_SELL){if (zeroprice == OrderTakeProfit()) res=res+1; else { if (OrderModify(OrderTicket(),0,OrderStopLoss(),zeroprice,0,CLR_NONE)) res = res+1;}    } } 
          
   }
 Alert ("***************************************************");
 Alert ("Цена безубыточности "+DoubleToStr(zeroprice,Digits));
 if (kol==res) Alert ("Все ордера успешно изменены! Точка безубыточности выставлена. ОК!"); else Alert ("!!! Внимание!!! Не удалось изменить - " +(kol-res)+ " ордера из "+kol+" имеющихся");
 Alert ("************ информация от ZeroLevel script ************");
 
//------

   return(0);
  }
Причина обращения: