Пересечением является не только было < стало >, но и было <=, стало > например.
Плюс я бы не использовал столь похожие названия массивов base и best - немудрено их перепутать.
Aleksei Radchenko:
Пересечением является не только было < стало >, но и было <=, стало > например.
Плюс я бы не использовал столь похожие названия массивов base и best - немудрено их перепутать.
Да, эти условия пересечения тоже учитываются.
Смог вот на что переделать:
for(i=0; i<limit; i++) { if (base[i+1] > 0 && base[i] < 0) { if (MathAbs(best[i]) < MathAbs(best[i+1])) { base[i] = MathAbs(best[i]); i = 0; continue; } if (MathAbs(best[i]) > MathAbs(best[i+1]) && best[i] > 0) { base[i] = MathAbs(best[i]); i = 0; continue; } } if (base[i+1] < 0 && base[i] > 0) { if (MathAbs(best[i]) < MathAbs(best[i+1])) { base[i] = -MathAbs(best[i]); i = 0; continue; } if (MathAbs(best[i]) > MathAbs(best[i+1]) && best[i] < 0) { base[i] = -MathAbs(best[i]); i = 0; continue; } } } //********************* for(i=0; i<limit; i++) { best_MA[i] = base[i]; }
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Коллеги, не могу решить проблему с индюком, нужна помощь!
Использую 3 массива:
Как делаю проверку:
сигнальный бар (i) должен в своем исходном значении (best[i]) быть больше предшествующего ему бара (best[i+1]) по абсолютному значению. Если не смотря на пересечение линии 0, в абсолютном значении по best бар меньше, то вместо рассчитанного для него в base значения, в best_MA ставится его значение с тем же знаком что и предыдущий знак. Т.е. индикатор находится в той же зоне (выше/ниже нуля) что и предыдущий бар.
После прогона цикла 1 раз получаем некоторое кол-во исправлений "неверных" сигналов. НО из-за этого меняется ситуация со смежными барами
Ниже привожу кусок кода, из-за которого этот пост, но кодом это назвать трудно. Временно решить можно только путем многократного повторения условий-фильтров :-(