Здравствуйте! Хочу сравнивать текущий спред с максимальным за последние 24 часа.
Нахожу текущий спред так:
Максимальный спред за 24 часа так:
В итоге понимаю, что какая-то ошибка в нахождении максимального спреда за 24 часа. А именно у меня значение текущего спреда больше, чем максимум за 24 часа.
Примечание - проверяю сейчас, т.е. торговая сессия закрыта - по этому в динамике изменения показателей не вижу.
Подскажите, что у меня не правильно в коде.
Заранее спасибо!
А у вас вообще все это дело компилится ? Вы переменную time_current объявляете ниже чем используете ее.
Так же интересует зачем Вы SymbolInfoInteger (т.е. тип данных который изначально int) переводите в double ? Он от этого все равно более точным не станет так как int обрезает все что после запятой идет.
А у вас вообще все это дело компилится ? Вы переменную time_current объявляете ниже чем используете ее.
Так же интересует зачем Вы SymbolInfoInteger (т.е. тип данных который изначально int) переводите в double ? Он от этого все равно более точным не станет так как int обрезает все что после запятой идет.
По поводу объявления переменной time_current вы правы - она у меня объявляется гораздо раньше, просто я много лишнего из кода, не относящегося к вопросу удалял, а затем не в то место поставил объявление переменной, когда писал пост.
По поводу SymbolInfoInteger - я взял готовый фрагмент кода в выложенном на сайте индикаторе (сам еще только-только начал изучать mql).
int Spread[]; if(CopySpread(Symbol(),Period(),start_time_extr_h24,time_current,Spread)==-1){} int position_max_spread_h24=ArrayMaximum(Spread); int spread_max_h24=Spread[position_max_spread_h24];
Есть подозрение, что CopySpread в моем случае вообще не подойдет, т.к. подставляет в массив только значения на момент открытия бара (сейчас прочитал в описании функции), а это не обязательно максимумы. Т.е. мне надо как-то по тикам получать значения. Если слишком большой объем данных - хотя бы не за 24 часа, а за час.
Или может быть есть более простое решение?
Есть подозрение, что CopySpread в моем случае вообще не подойдет, т.к. подставляет в массив только значения на момент открытия бара (сейчас прочитал в описании функции), а это не обязательно максимумы. Т.е. мне надо как-то по тикам получать значения. Если слишком большой объем данных - хотя бы не за 24 часа, а за час.
Или может быть есть более простое решение?
Используйте CopyTicks - а там внутри каждой из структуры Вы найдёте бид и аск. Далее в цикле пройдитесь и вычислите массив Spread[]. Следующим шагом уже как ранее находите максимальное значение - в итоге получите желаемый результата.
А что бы найти спред на текущий момент - используйте следующий механизм:
double spread = SymbolInfoDouble(_Symbol,SYMBOL_ASK)-SymbolInfoDouble(_Symbol,SYMBOL_BID);
Используйте CopyTicks - а там внутри каждой из структуры Вы найдёте бид и аск. Далее в цикле пройдитесь и вычислите массив Spread[]. Следующим шагом уже как ранее находите максимальное значение - в итоге получите желаемый результата.
А что бы найти спред на текущий момент - используйте следующий механизм:
Андрей, спасибо!
Была ещё тема Как посчитать средний спред за определённый период?
там на второй странице #14 есть интересный код.
Была ещё тема Как посчитать средний спред за определённый период?
там на второй странице #14 есть интересный код.
Владимир, приветствую!
Спасибо, буду изучать
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте! Хочу сравнивать текущий спред с максимальным за последние 24 часа.
Нахожу текущий спред так:
Максимальный спред за 24 часа так:
В итоге понимаю, что какая-то ошибка в нахождении максимального спреда за 24 часа. А именно у меня значение текущего спреда больше, чем максимум за 24 часа.
Примечание - проверяю сейчас, т.е. торговая сессия закрыта - по этому в динамике изменения показателей не вижу.
Подскажите, что у меня не правильно в коде.
Заранее спасибо!