- Проблема с определением момента закрытия последнего бара
- Трал для всех открытых позиций
- Советник, торгующий по времени
Закрытие бара равнозначно открытию следующего?
Тогда вот:
datetime Time[]
Массив-таймсерия, содержащий время открытия каждого бара текущего графика. Данные типа datetime представляют собой время в секундах, прошедшее с 00:00 1 января 1970 года.
Индексация элементов таймсерий производится задом наперед, от последнего к первому. Текущий бар, самый последний в массиве, имеет индекс 0.
Доброго всем дня! При написании советника столкнулся с проблемой определения момента закрытия текущего бара. По закрытию бара нужно двигать стоп-лосс. Двигать по каждому тику-дело не мудреное, но накладное (для сесрвера:)) В хелпе ничего об этом не нашел. На форуме по ключевым словам находится все, но не то, что нужно. Прошу оказать посильную помощь, если есть идеи на этот счет. :))
Посмотрите задачу 27 здесь https://book.mql4.com/ru/variables/arrays
Спасибо большое, примеры и ссылки великолепные. С проблемой справился - bool isNewBarCreated() - отлично работает!
Доброго всем дня! При написании советника столкнулся с проблемой определения момента закрытия текущего бара. По закрытию бара нужно двигать стоп-лосс. Двигать по каждому тику-дело не мудреное, но накладное (для сесрвера:)) В хелпе ничего об этом не нашел. На форуме по ключевым словам находится все, но не то, что нужно. Прошу оказать посильную помощь, если есть идеи на этот счет. :))
Посмотрите задачу 27 здесь https://book.mql4.com/ru/variables/arrays
Сергей ! день добрый
подскажи по 26-му примеру
-------------- начало примера
Задача 26.Найти минимальное и максимальное значения цены среди последних n баров.
//-------------------------------------------------------------------- // extremumprice.mq4 // Предназначен для использования в качестве примера в учебнике MQL4. //-------------------------------------------------------------------- extern int Quant_Bars=30; // Количество баров //-------------------------------------------------------------------- int start() // Спец. функция start { int i; // Номер бара double Minimum=Bid, // Минимальная цена Maximum=Bid; // Максимальная цена for(i=0;i<=Quant_Bars-1;i++) // От нуля (!) до.. { // ..Quant_Bars-1 (!) if (Low[i]< Minimum) // Если < известного Minimum=Low[i]; // то оно и будет мин if (High[i]> Maximum) // Если > известного Maximum=High[i]; // то оно и будет макс } Alert("За последние ",Quant_Bars, // Вывод на экран " баров Min= ",Minimum," Max= ",Maximum); return; // Выход из start() } //--------------------------------------------------------------------
--------------------- конец примера
---- альтернатива
есть функция, привел пример как есть с документации MQL
double val; // расчет максимального значения цены на 20 последовательных барах // с индекса 4 по индекс 23 включительно на текущем графике val=High[iHighest(NULL,0,MODE_HIGH,20,4)];
вроде как намного изящней! никаких циклов...
если для твоего примера переработать то получиться вот такой кусочек! вместо блока с циклом и проверками, полагаю и скорость выше
получить LOW и HIGH последних 30 баров, т. е. по счету баров 29 - 0
Maximum=High[iHighest(NULL,0,MODE_HIGH,29,0)]; Minimum=Low[iLowest(NULL,0,MODE_LOW,29,0)];
хотя в качестве учебного примера может быть непонятно новичку!
но в рабочей программе я вставлю именно такой кусок!
хотя в качестве учебного примера может быть непонятно новичку!
но в рабочей программе я вставлю именно такой кусок!
Всё правильно. Но в данном случае - это пример из Учебника. На этом этапе обучения происходит первое касание понятия "массив". В этом параграфе не ставилась цель показать изящный быстрый код. Здесь нужно было дать читателю "почувствовать" массивы - какие они, из чего состоят, как взять значение элемента массива, как его можно обрабатывать, какая из всего этого может быть польза и т.д.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования