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

 

Artyom Trishkin:

...Получили-то верно, но не с того бара. Это нужно знать и учитывать.

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

Спасибо, за пояснения.

Получается, что если вызвать индикатор в советнике вот так

ozy_verh=NormalizeDouble(iCustom(NULL, 240, "Ozy", Amplitude, 3, 1), Digits);

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

Какие тогда получаю показания индикатора, и как правильно сделать, чтобы получить корректные показания со старшего т.ф?

int TimeFrame = 240;

ozy_verh=NormalizeDouble(iCustom(NULL, TimeFrame, "Ozy", Amplitude,3,iBarShift(Symbol(),TimeFrame,iTime(Symbol(),TimeFrame,1)) ), Digits);


Так, будут верные значения индикатора с Н4?



 
mila.com:

Спасибо, за пояснения.

Получается, что если вызвать индикатор в советнике вот так

ozy_verh=NormalizeDouble(iCustom(NULL, 240, "Ozy", Amplitude, 3, 1), Digits);

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

Какие тогда получаю показания индикатора, и как правильно сделать, чтобы получить корректные показания со старшего т.ф?

int TimeFrame = 240;

ozy_verh=NormalizeDouble(iCustom(NULL, TimeFrame, "Ozy", Amplitude,3,iBarShift(Symbol(),TimeFrame,iTime(Symbol(),TimeFrame,1)) ), Digits);


Так, будут верные значения индикатора с Н4?



Если вызвать индикатор так, как написали вы:

ozy_verh=NormalizeDouble(iCustom(NULL, 240, "Ozy", Amplitude, 3, 1), Digits);

то данные индикатора будут получены с текущего символа, с периода PERIOD_H4, с четвёртого буфера, и с первого бара на таймфрейме H4.

Вы наверное не совсем верно поняли то, о чём я вам говорил.

А говорил я вот о чём: если советник запущен на М5, и вы получаете в него данные с бара 1 на М5, то если захотите поглядеть что там происходит на старшем тф, например с Н1, то, получая значение со старшего тф Н1 тоже с бара 1, вы получите не текущие значения, которые на тф Н1 сейчас, а те, которые были на прошлом часе. Потому, что бар 1 на М5 находится внутри бара 0 на Н1.

Вот это вы и должны учитывать, и вот об этом я как раз говорил.

 
Vitaly Muzichenko:

Я о журнале в тестере

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

Вот. Я понимаю про проверки но не понимаю откуда он берется. 

Файлы:
count.mq4  17 kb
 
Artyom Trishkin:

Вот это вы и должны учитывать, и вот об этом я как раз говорил.

Если ставлю советник на М 5 а хочу получить значение индикатора с Н1, с первого бара то следующая запись верна?

ozy_verh=NormalizeDouble(iCustom(NULL, 60, "Ozy", Amplitude, 3, 1), Digits);
 
mila.com:

Если ставлю советник на М 5 а хочу получить значение индикатора с Н1, с первого бара то следующая запись верна?

ozy_verh=NormalizeDouble(iCustom(NULL, 60, "Ozy", Amplitude, 3, 1), Digits);

Нет. Вместо 1:

datetime _time1 = iTime(Symbol(), PERIOD_H1, 1);
int      _n     = iBarShift(Symbol(), PERIOD_CURRENT, _time1);
// ваша формула
ozy_verh=NormalizeDouble(iCustom(NULL, 60, "Ozy", Amplitude, 3, _n), Digits);
Только, если будете использовать советник на сервере или у себя, но у вас не будет открыт еще и график H1, то надо делать еще доп. проверку.
 

Oksana Berenko:

...но у вас не будет открыт еще и график H1, то надо делать еще доп. проверку.

Спасибо.

Открыт один график М5, на нём установлен советник вызывающий индикатор с Н1 , так как вы написали.

Какие ещё нужны проверки?

 
mila.com:

Если ставлю советник на М 5 а хочу получить значение индикатора с Н1, с первого бара то следующая запись верна?

ozy_verh=NormalizeDouble(iCustom(NULL, 60, "Ozy", Amplitude, 3, 1), Digits);

Верна. Смотря с первого бара какого тф вам нужны данные...

Похоже, вы так и не поняли о чём я говорил...

 
Здравствуйте подскажите пожалуйста в чем основные отличия мт4 от мт5. ?не вижу существенных различий. 
 

Добрый день ..

if (OrderType()==OP_SELL) CloseOpBuySell("BUY");

   if (OrderType()==OP_BUY) CloseOpBuySell("SELL");    

 

вот условие  мне нужно чтобы при открытии покупки закрывалась продажа и наоборот при таком написании будет срабатывать?

меня интересует просто левая часть OrderType()==OP_SELL

правая работает когда туда подставляешь какой либо сигнал 

Вопрос:"Будет ли срабатывать такое закрытие?" 

 
elektrik777:
Здравствуйте подскажите пожалуйста в чем основные отличия мт4 от мт5. ?не вижу существенных различий. 
Отличия в языке программирования для советников скриптов и индикаторов, остальное все одно и тоже, за исключением с МТ5 можно торговать на фондовых биржах, на МТ4 нельзя.
Причина обращения: