Изучаем и пишем вместе на MQL5 - страница 21

 

потому что вы берете каждый раз новое время тика, и оно конечно не равно предыдущему.

а в прошлой функции вы брали время начала бара. поэтому и тут берите время бара, а не тика.

Объясните непонятливому, какой параметр в коде на какой изменить.

 Как описать время бара, а не тика? 

 
Khomtchenko:

Объясните непонятливому, какой параметр в коде на какой изменить.

 Как описать время бара, а не тика? 

например так https://www.mql5.com/ru/docs/series/copytime
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTime
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTime
  • www.mql5.com
Доступ к таймсериям и индикаторам / CopyTime - Документация по MQL5
 
Khomtchenko:

Объясните непонятливому, какой параметр в коде на какой изменить.

 Как описать время бара, а не тика? 

Вот тут все популярно описано Обработчик события "новый бар"

В общем не ленимся иногда заглядывать в статьи и коде бейз прежде чем задавать вопрос

 

Вот тут все популярно описано Обработчик события "новый бар"

В общем не ленимся иногда заглядывать в статьи и коде бейз прежде чем задавать вопрос

Да я там смотрел. Начали за здравие, а закончили кучей каких-то файлов, которые делают что-то определенное, а мне нужна просто функция и все. Не могли привести код конечного продукта. Намутили...
 

Вот на mql4 в пять строк можно было выяснить, новый бар или нет. А теперь целая куча каких-то файлов написали, непонятно куда их помещать, что внутри программы писать... 

 

Короче, если есть специалисты, то приведите мне пример кода, чтоб я не мучился, а в библиотеку я и сам кого угодно послать могу, хоть в электронную, хоть в настоящую.

Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
 
Khomtchenko:
Я не сомневаюсь, но для галочки спрашиваю, кто-нибудь создавал одного и того же советника на mql4 и mql5 и сравнивал результаты тестирования? Должно же быть идеально-похоже, если код правильно трансформирован? Или я ошибаюсь..?

Если тестирование там и там побарное и в mql5 логика разположена в onTick, то выйдет похоже.

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

Если тестирование "каждый тик", то похоже будет еще меньше, т.к. алгоритмы генерации тиков в версиях разные.

 
Khomtchenko:

Вот на mql4 в пять строк можно было выяснить, новый бар или нет. А теперь целая куча каких-то файлов написали, непонятно куда их помещать, что внутри программы писать... 

 

Короче, если есть специалисты, то приведите мне пример кода, чтоб я не мучился, а в библиотеку я и сам кого угодно послать могу, хоть в электронную, хоть в настоящую.

 

Держи, переменную lastbar объяви как статическую или на глобальном уровне, массив iTime на глобальном уровне

bool NewBar()
  {

   if(CopyTime(_Symbol,_Period,0,1,iTime)<1)return(false);

   if(lastbar!=iTime[0])
     {
      lastbar=iTime[0]];
      return(true);
     }
   else
     {
      return(false);
     }
  }
 

На странице есть пример с функцией isNewBar

https://www.mql5.com/ru/forum/2804/38752#comment_38752

Что меняет режим тестера "только цены открытия"?
Что меняет режим тестера "только цены открытия"?
  • www.mql5.com
Собственно, для советника работающего по onTick, в режиме "Только цены открытия" при тестировании все вычисления индикаторов и вызов функции OnTick() в экспертах происходит только один раз на бар.
 

1. Я не зря спрашивал про результаты тестирования одних и тех же стратегий на mql4 и mql5. 

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

На mql4 я использовал вот эту процедуру для входа на новом баре:

void Fun_New_Bar() // Ф-ия обнаружения ..

{ // .. нового бара

 static datetime New_Time=0; // Время текущего бара

 New_Bar=false; // Нового бара нет

 if(New_Time!=Time[0]) // Сравниваем время

  {

   New_Time=Time[0]; // Теперь время такое

   New_Bar=true; // Поймался новый бар

  }

Вот как выглядит результат тестирования робота на mql4 по моей стратегии:

 Результаты тестирования mql4 советника

Спасибо за присланные процедуры для определения нового бара. Они работают. Я делал скрипт, который пишет Alert на новом баре и проверил на M1, чтоб долго не ждать.

Но та же стратегия дает совсем другие результаты (причем одинаковые) на обоих процедурах в mql5 советнике:

 Результаты тестирования mql5 советника

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

 

Вот как примерно выглядит функция onStart на mql4:

int start()

  {

  GetIns();

 Fun_New_Bar(); 

 if (New_Bar==false) return(0); 

  if (Total()>0)

 {

 CloseSellEnd();

 CloseBuyEnd();

 }

 if (Total()<1) 

 {

    OpenBuy();

    OpenSell(); 

 }   

   return(0);

  } 

И примерно также на mlq5:

 void OnTick()

  {

   GetIns();

   if (NewBar()) 

   {

   if (Total()>0) TryToClose();

   if (Total()<1)

    { 

    OpenBuy(Lots,10,"EUR/USD (Buy)",102406);

    OpenSell(Lots,10,"EUR/USD (Sell)",102406);

    }

   } 

  }

GetIns для обработки параметров индикаторов, а Total() - дает число позиций с нужным мэджиком ддля mql4 или с нужным символом для mql5.

 

Помогите. 

 

Мне кажется я нашел причину расхождений. Вы не поверите. На MT4  и MT5 разная история катировок. Вроде немного отличается, а стратегия тестируется с огромной разницей!!!!

Вот один участок на разных терминалах:

 

 

Вы по присмотритесь, есть разница. Небольшая? А какая разница между результатами тестирования стратегии, тоже небольшая???

Буду обращаться к разработчикам! Что за бета-версия!!!