Возможно ли такое, где ошибка чет я не понял...
ищу хай и лоу в промежутке баров вывожу данные он мне показывает уровень хая выше чем в этом промежутке, где я ошибся???
Неправильно пользуетесь функциями iHigh и iLow
Неправильно пользуетесь функциями iHigh и iLow
в каком смысле не правильно?
в каком смысле не правильно?
В прямом. Посмотрите в документации параметры этих функций и сравните с теми, которые Вы передаете.
PS. Извиняюсь, имел ввиду iHighest() и iLowest()
Возможно ли такое, где ошибка чет я не понял...
ищу хай и лоу в промежутке баров вывожу данные он мне показывает уровень хая выше чем в этом промежутке есть, где я ошибся, или это баг мт???
int b1 = iBarShift(NULL,0, time_);//бар до которого ищем лоу хай int b2 = iBarShift(NULL,0, time1);//бар с которого начинаем поиск лоу хай H=iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,b1,b2));//ищем хай в промежутке b1 - b2
Перечитайте про iHighest:
int iHighest( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)
count | - | Число элементов таймсерии (в направлении от текущего бара в сторону возрастания индекса), среди которых должен быть произведен поиск. |
start | - | Индекс (смещение относительно текущего бара) начального бара, с которого начинается поиск наибольшего значения. Отрицательные значения игнорируются и заменяются нулевым значением. |
А вы в него "запихиваете" стартовый и конечной номера баров
Перечитайте про iHighest:
int iHighest( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)
count | - | Число элементов таймсерии (в направлении от текущего бара в сторону возрастания индекса), среди которых должен быть произведен поиск. |
start | - | Индекс (смещение относительно текущего бара) начального бара, с которого начинается поиск наибольшего значения. Отрицательные значения игнорируются и заменяются нулевым значением. |
А вы в него "запихиваете" стартовый и конечной номера баров
спасибо понял, вопрос снят ;-)
Я имел ввиду iHighest, iLowest
все разобрался ;-) спасибо...
Подзабыл эту функцию, может кому пригодится исправил, теперь все работает как надо...
//+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { double H,L; datetime ny_time = iTime(NULL,PERIOD_D1,0) + (4-Period()/60.0)*3600; datetime time1 = ny_time + Period()*60;//время начала datetime ny_time_ = iTime(NULL,PERIOD_D1,1) + (4-Period()/60.0)*3600; datetime time_ = ny_time_ + Period()*60;//время конец int b1 = iBarShift(NULL,0, time_);//бар до которого ищем лоу хай int b2 = iBarShift(NULL,0, time1);//бар с которого начинаем поиск лоу хай b1 = b1-b2;//число элементов таймсерии H=High[iHighest(NULL,0,MODE_HIGH,b1,b2)];//находим хай в промежутке b1 и b2 L=Low[iLowest(NULL,0,MODE_LOW,b1,b2)];//находим лоу в промежутке b1 и b2 Comment("\n","High: ",DoubleToStr(H,Digits)," Low: ",DoubleToStr(L,Digits)," bar_count: ",b1," bar_start: ",b2); return(0); } //+------------------------------------------------------------------+
Я вот тоже столкнулся с непоняткой - она была и ранеее, но до сих пор так и не исправлена. Иинициализация переменной DayHigh=iHigh(Symbol(),PERIOD_D1,0); приводит к ошибкам. Сегдня советник торгует на М15 и переменная инициализируется нормально. Оставляю советника на ночь и утром обнаруживаю, что из-за неверной инициализации хая/лоу текущего дня он неправильно поставил мне стопы ордеров. Я сунул в код советника принт по этой переменной и оказалось, что после смены суток в переменную возвращается значение хая предыдущего дня. Но если руками шёлкнуть по графику Д1 а затем вернуться снова на М15, то хай текущего дня начинает нормально определяться. И что самое странное, что такая ошибка не всегда есть - бывают дни, когда смена периода не нужна - сутки сменились и хай нового дня нм М15 запрашивается с помошью iHigh() нормально сам собой.
Из-за этого глюка я около года назад сделал цикл перебора свеч для поиска экстремума - пришлось самому выходить из положения. Но глюк этот есть до сих пор. Разработчики, ну реально не удобно вместо элементарного iHigh() использовать цикл. Сделали бы вы что нибудь с этим, а?
Я вот тоже столкнулся с непоняткой - она была и ранеее, но до сих пор так и не исправлена. Иинициализация переменной DayHigh=iHigh(Symbol(),PERIOD_D1,0); приводит к ошибкам. Сегдня советник торгует на М15 и переменная инициализируется нормально. Оставляю советника на ночь и утром обнаруживаю, что из-за неверной инициализации хая/лоу текущего дня он неправильно поставил мне стопы ордеров. Я сунул в код советника принт по этой переменной и оказалось, что после смены суток в переменную всё равно возвращается значение предыдущего дня. Но если руками шёлкнуть по графику Д1 а затем вернуться снова на М15, то хай текущего дня начинает нормально определяться. И что самое странное, что такая ошибка не всегда есть - бывают дни, когда смена периода не нужна - сутки сменились и хай нового дня нм М15 запрашивается с помошью iHigh() нормально сам собой.
Из-за этого глюка я около года назад сделал цикл перебора свеч для поиска экстремума - пришлось самому выходить из положения. Но глюк этот есть до сих пор. Разработчики, ну реально не удобно вместо элементарного iHigh() использовать цикл. Сделали бы вы что нибудь с этим, а?
Может RefreshRates() поможет. Проверь
Может RefreshRates() поможет. Проверь
Ок, полез сейчас в код специально посмотреть. Там логика такая: Пришёл сигнал в шорт. Если есть лонговые позы, то сначала закрываем лонги и только после этого открываем шорт. Закрытие лонга и открытие шорта выполняется разными функциями и между ними рефрешратес вставлен. То же касается и противоположного сигнала. То есть, сначала вызывается обновление данных и только потом запрашивается хай дня с периода Д1. Увы, не помогает рефрешратес. :(
Но хорошо то, что такая тема тут создана - это мне напомнило, что код переделать надо - обойти сие недоразумение :) Так что не всё так плохо :)))))))))))
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Возможно ли такое, где ошибка чет я не понял...
ищу хай и лоу в промежутке баров вывожу данные он мне показывает уровень хая выше чем в этом промежутке есть, где я ошибся???