Ошибки, баги, вопросы - страница 3430
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Нашёл возможную логическую ошибку в ключевом коде стандартной библиотеки, а конкретно в методе Direction класса СExpertSignal
Фильтры посылающие в этот модуль значение 0.0 посредством своих собственных методов Direction
в результате отсутствия раннего выхода из текущей итерации лупа при direction 0.0 добираются до
и считаются проголосовавшими, не привнося никаких добавочных значений к результирующей переменной direction.
А так как итоговая переменная result определяющая направление и силу сигнала с учётом всех фильтров высчитывается как
что в связке например любого сигнального индикатора и модуля СSignalITF - intraday time filter - приводит к уменьшению результирующего сигнала в два раза.
Если условная СSignalMA говорит direction = 100, а стандартный СSignalITF в обычный разрешенный день/час/минуту в соответствии со своим кодом выдаёт всегда direction = 0.0, то сейчас получается result = (100 + 0.0) / 2 проголосовавших = 50 результирующая сила сигнала.
А в реальности все фильтры с 0.0 не должны считаться голосовавшими.
в результате отсутствия раннего выхода из текущей итерации лупа при direction 0.0 добираются до
Не добираются.
Не добираются.
Добираются. Проверьте на отладчике, если в коде этого вам не видно. Сгенерируйте шаблон советника c MA и ITF и убедитесь в ополовиненных результатах на выходе.
Я прекрасно вижу continue в коде после if(direction==0.0). Вы же сами его выделили....
Не добираются.
Если в используемом сигнале отсутствует имплементированный метод Direction, как в случае с SignalMA например, то берётся метод Direction из родительского класса CExpertSignal, код которого выше. При переборе фильтров получается рекурсивный вызов.
И если вызывается этот метод из родительского класса, то мы видим вначале что
double result=m_weight*(LongCondition()-ShortCondition());и доп проверку как раз на 0.0 значение result
однако в случае с SignalITF метод Direction переопределен в самом классе SignalITF. Тогда никакого рекурсивного вызова не происходит
filter.Direction отрабатывает выдаёт 0.0 в переменную direction следуя дальше. Поскольку direction далее проверяется только на Empty_Value, в результате добираемся до
и получаем некорректное значение direction.
Я прекрасно вижу continue в коде после if(direction==0.0). Вы же сами его выделили....
Это мой код, уважаемый - комментарий справа "Код отсутствует" и выделение зелёным вроде должно намекнуть :)
я намеки плохо понимаю :). Выражайтесь яснее, прямо. Если это Ваш код, и в исходниках его нет, то Вы правы
я намеки плохо понимаю :). Выражайтесь яснее, прямо. Если это Ваш код, и в исходниках его нет, то Вы правы
Бывает :) Нет, в исходниках этого нет.
А можно кого-то тэгнуть или куда-то это зарепортить/закоммитить? Вы, вижу, старожил, а то я не в курсе как тут устроено)
При выполнении следующего кода возникает критическая ошибка (баг существует, как минимум с билда 4040):
2023.12.08 23:54:53.414 Test (EURUSD,H1) runtime error
я после // в коде в индикаторе mql4 написал текст а он во настройках не отображается dj входных параметрах. Что делать?!