Форум » Алгоритмы » Разные результаты вычислений » Ответить

Разные результаты вычислений

Игорь: Здравствуйте! У меня в ходе отладки программного кода возникла одна вычислительная проблема, связанная с получение разных результатов при вычислении значения разными способами. В чем здесь подвох не могу разобраться. Подскажите! Итак, фрагмент кода: int MinLevel = 1000000000; int MaxLevel = -1000000000; .................................... for (i = 0; i <= Bars; i++) { MaxMonthPrice = iHigh(NULL, PERIOD_MN1, i)/Point; MinMonthPrice = iLow(NULL, PERIOD_MN1, i)/Point; if (MinMonthPrice < MinLevel) MinLevel = MinMonthPrice; if (MaxMonthPrice > MaxLevel) MaxLevel = MaxMonthPrice; } int MaxLevelHighest = High[iHighest(Symbol(), PERIOD_MN1, MODE_HIGH, Bars)]/Point; Alert ("MaxLevel=", MaxLevel, " MaxLevelHighest=", MaxLevelHighest); ............................ Суть вычислений - поиск максимальной и минимальной цены. Значения вычислений совпадают лишь, когда код загружен на таймфрейм MN, либо когда переключились на этот таймфрейм. При переключении на другой тайм фрейм значения вычислений не совпадают. Почему. Причем то, что делается в цикле - правильно, значения вычислений истинные, равны константе, т.е. не меняются с переключением на другой таймфрейм. Значение же вычислений с применением "iHighes" кнстанте не равны. Заранее спасибо за подсказку.

Ответов - 2

Scriptong: Проблема заключается в том, что в функции iHighest(Symbol(), PERIOD_MN1, MODE_HIGH, Bars) вы используете переменную Bars, которая отвечает за количество баров ТЕКУЩЕГО таймфрейма. Это значение вы применяете к фиксировано заданному ТФ. Правильный подход в этом случае будет следующим: iHighest(Symbol(), PERIOD_MN1, MODE_HIGH, iBars(NULL, PERIOD_MN1)). То же самое касается переменной Bars в цикле.

Игорь: Спасибо! Всё получилось!



полная версия страницы