Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 970

 
Nauris Zukas:

Вкратце, как пример, если у вас TP buy позиций поставлена 1.16000, то "все тики" примерно по этой цене закроет. OHLC закроет по той цене что было выше 1.16000 это и может быть довольно большая разница, так всегда OHLC будет показывать лучше результаты. Та же самая история с "По ценам открытия".

Nauris, спасибо. Я понимаю (догадываюсь) почему результаты у разных методов отличаются. Но я хочу понять вот что:

Уж если тестер, смоделировал как то метод "OHLC М1", то как, этот же метод повторить в советнике программно.

Тестер то его как то воспроизвёл...

 
vladzeit:

Nauris, спасибо. Я понимаю (догадываюсь) почему результаты у разных методов отличаются. Но я хочу понять вот что:

Уж если тестер, смоделировал как то метод "OHLC М1", то как, этот же метод повторить в советнике программно.

Тестер то его как то воспроизвёл...

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

если у тебя не пипсовка в 3-4 пункта то большой разницы нет закрылось двумя пипсами больше или меньше...

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

 
xxz:

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

если у тебя не пипсовка в 3-4 пункта то большой разницы нет закрылось двумя пипсами больше или меньше...

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

Спасибо. Если ни кто не продолжит способа, как реализовать метод "OHLC М1", то я буду просто приговорён воспользоваться Вашим советом)))

 
vladzeit:

Спасибо. Если ни кто не продолжит способа, как реализовать метод "OHLC М1", то я буду просто приговорён воспользоваться Вашим советом)))

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

отсюда и расхождения... 

 
vladzeit:

Спасибо. Если ни кто не продолжит способа, как реализовать метод "OHLC М1", то я буду просто приговорён воспользоваться Вашим советом)))

Метод же говорит сам за себя. Используйте в советнике только цены OHLC всех минутных баров, входящих в текущий бар.
 
vladzeit:

Спасибо. Если ни кто не продолжит способа, как реализовать метод "OHLC М1", то я буду просто приговорён воспользоваться Вашим советом)))

Открытия/закрытия в эксперте не по уровням цены а по Open. Есть сигнал открытия/закрытия, дождитесь следующую 1М свечу и открывайте/закрывайте.

 
Artyom Trishkin:
Метод же говорит сам за себя. Используйте в советнике только цены OHLC всех минутных баров, входящих в текущий бар.

Артём, я попробовал. На все условия, открытия и модификации ордеров поставил условие "по рождению нового бара" через булеву функцию isNewBar()

примерно так:

if (Buys==true )
   {
   int count_buy_stops=0;   int count_pos_buy=0;
   CalOrders_Buy(count_buy_stops);   CalPosition_Buy(count_pos_buy);
   if(count_buy_stops==0 && count_pos_buy==0) && isNewBar())
   {
   BuyStop();
   }
   }

Сама функция isNewBar() из примеров и статей код.базы.

bool isNewBar()
  {
//--- в статической переменной будем помнить время открытия последнего бара
   static datetime last_time=0;
//--- текущее время
   datetime lastbar_time=(datetime)SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);
   if(last_time==0)//--- если это первый вызов функции
   {
   last_time=lastbar_time;    //--- установим время и выйдем 
   return(false);
   }
   if(last_time!=lastbar_time)//--- если время отличается
   {
   last_time=lastbar_time;    //--- запомним время и вернем true
   return(true);
   }
//--- дошли до этого места - значит бар не новый, вернем false
   return(false);
  }

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

между OHLC, на М1, который я применял без isNewBar() и "все тики" с функцией isNewBar(). 

Я ожидал, что применив isNewBar() на "все тики" я получу такой же результат как и OHLC по текущим ценам. 

Вот, я и не понимаю, то-ли я в условиях коде накосячил, то-ли я не правильно понимаю как осуществляется режим OHLC и ожидаю от него невозможного.

и откуда копать пока не соображу. 

Артём, подскажите ещё, если не трудно.

То, что ордер можно установить и модифицироваться по новому бару это понятно, но SL и TP (в тестере) сработают всё-равно внутри старого бара?  

[Удален]  
Мучился мучился и ничего не получилось с попыткой перевести с фиксированного лота на лот в процентах. Может кто подскажет на полном коде?
Файлы:
Experiment.mq5  38 kb
 
Sprut112:
Мучился мучился и ничего не получилось с попыткой перевести с фиксированного лота на лот в процентах. Может кто подскажет на полном коде?

В процентах от чего?

[Удален]  
xxz:

В процентах от чего?

От баланса, стандартно