Здравствуйте.
По условию требуется определить, что образовалось раньше - High или Low бара. Для этого
1) делаем цикл по барам текущего таймрейма (напр., D1).
2) Для каждого бара делаем вложенный цикл по барам младшего таймфрейма в его пределах и получаем индексы максимума и минимума с помощью iHighest и iLowest.
3) Значения полученных iHighest и iLowest записываем во временный массив или переменные int.
4) Сравниваем эти значения с помощью ArrayMaximum(), если сохраняли в массив, или с помощью > или <, если использовали переменные int.
5) Фиксируем результат сравнения в итоговом массиве. Если iHighest>iLowest, записываем 0, иначе - записываем 1. Аналогично при использовании массива и ArrayMaximum().
Проблема. По результатам сравнения в итоговый массив заносятся некорректные данные. А именно, если в условии iHighest>iLowest (или ArrayMaximum(array)==0), то будет заносится 0 независимо от реальных значений индексов iHighest и iLowest. И наоборот: iHighest<iLowest (или ArrayMaximum(array)==0), то в итоговый массив занесется 1.
Помогите, пожалуйста, устранить некорректную запись значений по результатам сравнения индексов.
Судя по коду у Вас индикатор. В индикаторах лучше не использовать лишние циклы - это же лишние тормоза, у Вас и так расчет на каждом баре, вот и определяйте за этот бар ситуацию, а потом на следующем баре считываете её и вносите правки в случае необходимости. И, не совсем ясна задача, так как максимум и минимум формируются сразу на открытии нового бара и у них не может быть понятия раньше или позже, если отсутствует критерий максимума или минимума - к примеру отклонение от цены открытия на сколько то пунктов.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте.
По условию требуется определить, что образовалось раньше - High или Low бара. Для этого
1) делаем цикл по барам текущего таймрейма (напр., D1).
2) Для каждого бара делаем вложенный цикл по барам младшего таймфрейма в его пределах и получаем индексы максимума и минимума с помощью iHighest и iLowest.
3) Значения полученных iHighest и iLowest записываем во временный массив или переменные int.
4) Сравниваем эти значения с помощью ArrayMaximum(), если сохраняли в массив, или с помощью > или <, если использовали переменные int.
5) Фиксируем результат сравнения в итоговом массиве. Если iHighest>iLowest, записываем 0, иначе - записываем 1. Аналогично при использовании массива и ArrayMaximum().
Проблема. По результатам сравнения в итоговый массив заносятся некорректные данные. А именно, если в условии iHighest>iLowest (или ArrayMaximum(array)==0), то будет заносится 0 независимо от реальных значений индексов iHighest и iLowest. И наоборот: iHighest<iLowest (или ArrayMaximum(array)==0), то в итоговый массив занесется 1.
Помогите, пожалуйста, устранить некорректную запись значений по результатам сравнения индексов.