Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2506

 
grezky #:
События

OnTick(), OnTester(), OnTesterPass()  - пожалуйста объясните простыми словами что использовать:
1. в Тестере в режиме Визуализации
2. в реальной торговле Советника -  OnTick() ?
3. при оптимизации

Почему не оставили так как было в МТ4?
Как на практике со всем этим работать? - один код в тестере, другой в реале, третий в оптимизациях?

У меня в OnStart(); всё хорошо работает. 

 
Maxim121285 #:
У меня в OnStart(); всё хорошо работает. 

Я не написал, но подразумевал их в Советнике.
В Советнике  OnStart() не работает, а  OnTick() или OnTester() - пока разницы не заметил.
Но я пока дебагирую код, пытаюсь переделать из mql4 в mql5, так что он еще в нерабочем состоянии, за исключением нескольких функций.


 
Когда тестирую с Визуализацией, открывается новое окно в котором и производится тестирование. 
В коде есть функция, которая рисует Label. Пытаюсь вручную изменить свойства этого объекта (сдвинуть по горизонтальной/вертикальной осям, привязать к другим углам и т.п.), но ничего не происходит. Вручную сдвинуть его также не получается.
Т.е. Label остается там же где и был изначально создан кодом.

Можно ли в Тестере МТ5, в режиме с Визуализацией, пользоваться графическими объектами?
 
grezky #:
Когда тестирую с Визуализацией, открывается новое окно в котором и производится тестирование. 
В коде есть функция, которая рисует Label. Пытаюсь вручную изменить свойства этого объекта (сдвинуть по горизонтальной/вертикальной осям, привязать к другим углам и т.п.), но ничего не происходит. Вручную сдвинуть его также не получается.
Т.е. Label остается там же где и был изначально создан кодом.

Можно ли в Тестере МТ5, в режиме с Визуализацией, пользоваться графическими объектами?

Вручную нельзя.

 
Добрый день. В тестере стратегий MQL5 отложенные ордера Buy Stop иногда срабатывают на покупку, когда график и близко к ним снизу не подошёл. Понятно, что на графике bid, но всё же смотришь на свечу этой минуты и её данные - даже от максимума до цены ордера почти 40 пунктов! Это при том, что спред я вроде как задал вручную, 1 (один) пункт. Естественно результаты такого тестирования - сверхчастые срабатывания стоп-лоссов, причём потери-то как раз полномасштабные, в соответствии с ценой открытия, хотя оно вроде как преждевременное. Да и вообще на первый взгляд такого быть не должно: на демо-счёте Альфа-форекса, к примеру, ордера открываются не за 40 пунктов, а согласно спреду, либо, при диких скачках, иногда не открывается вообще, но лучше уж не открывать, чем открывать с погрешностью в десятки пунктов.
 На первый взгляд одно из двух - или я как-то хреново задал условия тестирования, или тестер косячит. Но что там можно не так задать? Спред специально задал почти нулевой, а тестер это не выполнил. Причём не единожды, а многократно на протяжении периода тестирования. Возможно, кто подскажет, в чём тут дело? Может, спред где-то ещё задаётся, а не там, где значок бакса на тестере? Или где-то надо какую-нибудь галку поставить, чтобы запретить тестеру самодеятельность, и чтобы он следовал условиям?  Тыкал вроде разные режимы, ничто на это не влияет. То, что на демо-счёте не так, вселяет с одной стороны надежду, что в реальности такого не будет. Но можно ли и тестер вежливо попросить так не делать? Ведь результаты такого тестирования, на первый взгляд, не отражают реальности. Спасибо.
 
Или, возможно, отложенными ордерами вообще пользоваться не очень желательно, а лучше, чтобы советник в нужный момент сам открывал сделку?
 
Вроде становится яснее. Из пояснительной статьи:
"Разница между ценами Bid и Ask называется спредом. При тестировании спред не моделируется, а берется из исторических данных. Если в исторических данных спред меньше или равен нулю, то используется текущий спред на момент запроса информации со стороны тестерного агента.

В тестере спред всегда считается плавающим". (!!)
 
Здравствуйте! Я хотел бы узнать какое количество баров занимает прямоугольник созданный мной(пользователем) через mql5. Делал я это следующим образом:
    datetime time0 = (datetime)ObjectGetInteger(0," Rectangle",OBJPROP_TIME,0);
    datetime time1 = (datetime)ObjectGetInteger(0, Rectangle,OBJPROP_TIME,1);
    double time3 = (double)(time0-time1);
    double tme = PeriodSeconds(PERIOD_CURRENT);
    double time4 = time3 / tme;

time0 и time1 - это время начало и конца прямоугольника. Все работает отлично до момента, когда прямоугольник затрагивает выходные дни. Ошибка возникает в следующим: Код рассчитывает дату следующим образом: 26-23=Временной диапазон. 
А в MetaTrader 25 числа(Выходной) нет и получается, что нужно делать расчет как-то по-другому. Буду очень признателен, если вы подскажите, как это исправить!
 
Sergei Gurov #:
Здравствуйте! Я хотел бы узнать какое количество баров занимает прямоугольник созданный мной(пользователем) через mql5. Делал я это следующим образом:

time0 и time1 - это время начало и конца прямоугольника. Все работает отлично до момента, когда прямоугольник создается в выходные дни. Ошибка возникает в следующим: Код рассчитывает дату следующим образом: 26-23=Временной диапазон. 
А в MetaTrader 25 числа(Выходной) нет и получается, что нужно делать расчет как-то по-другому. Буду очень признателен, если вы подскажите, как это исправить!

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

 
Alexey Viktorov #:

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

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