Добрый день!
Подскажите новичку такой вопрос: необходимо определить, что график индикатора пересекается с баром.
Значение индикатора я получаю через iCustom. Затем проверяю факт пересечения следующей функцией:
bool crossBar(double v)
{
if ((v >= Low[0]) && (v <= High[0])) {
return (true);
}
return (false);
}
Запускаю тест в режиме "по ценам открытия" и ни одного пересечения. Хотя я вижу на графике что индикатор несколько раз пересекал бары. Честно говоря не понимаю как такое может быть. High и Low - это и есть линия бара, нулевой индекс - текущее значение... Может это связано с типом тестирования или периодом советника? У меня он M30. Хотя непонятно как это может влиять: ведь графически я вижу пересечение. Стандартной функции не нашел, поэтому писал свою. Может подскажете, если есть стандартная функция. Есть подозрение что я упускаю какой-то нюанс (опыта разработки на MQL4 практически нет).
Полагаю минимальной и максимальной цене соответственно для данного бара
Вот-вот, а на первом тике Low[0]=High[0]=Close[0]=Open[0]
Понял. В доках нашел функцию iLowest, я правильно понимаю, что для моей задачи нужно получать значение так:
double L = Low[iLowest(Symbol(), 0, PRICE_LOW, 1, 1)];
double H = High[iHighest(Symbol(), 0, PRICE_HIGH, 1, 1)];
Понял. В доках нашел функцию iLowest, я правильно понимаю, что для моей задачи нужно получать значение так:
double L = Low[iLowest(Symbol(), 0, PRICE_LOW, 1, 1)]; просто: double L = Low[1];
double H = High[iHighest(Symbol(), 0, PRICE_HIGH, 1, 1)]; double H = High[1];
Вы невнимательны, потому не понимаете:
Это номер бара(shift) наименьшего значения. В вашей формуле проверяeтся 1 бар из одного! Сначала разберитесь, для чего служат эти функции. Функцию (Low) тоже разберите! Программирование требует предельной внимательности! |
bool crossBar(double v) { if ((v >= Low[1]) && (v <= High[1])) { return (true); } return (false); }Так интереснее если по ценам открытия тестировать.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день!
Подскажите новичку такой вопрос: необходимо определить, что график индикатора пересекается с баром.
Значение индикатора я получаю через iCustom. Затем проверяю факт пересечения следующей функцией:
bool crossBar(double v)
{
if ((v >= Low[0]) && (v <= High[0])) {
return (true);
}
return (false);
}
Запускаю тест в режиме "по ценам открытия" и ни одного пересечения. Хотя я вижу на графике что индикатор несколько раз пересекал бары. Честно говоря не понимаю как такое может быть. High и Low - это и есть линия бара, нулевой индекс - текущее значение... Может это связано с типом тестирования или периодом советника? У меня он M30. Хотя непонятно как это может влиять: ведь графически я вижу пересечение. Стандартной функции не нашел, поэтому писал свою. Может подскажете, если есть стандартная функция. Есть подозрение что я упускаю какой-то нюанс (опыта разработки на MQL4 практически нет).