Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Простите но если Вы имелли ввиду что "мой" код не оптимален. То посмотрите еще раз. И все таки прогоните пожалуйста в тестере, а еще лучше в оптимизации - с такой скоростью вообще не жизнь.
Посмотрим. Мы постоянно работаем над ускорением. И, может быть, Ваш код нам тоже поможет в этом.
Указанный эксперт при прогоне с 2000.01.01 по 2011.01.01 на EURUSD M1 сгенерировал более 2 млн сделок, что привело к тормозам терминала.
Мы уже работаем над оптимизацией использования ресурсов, когда генерируется такое количество сделок.
Конечно же, такой трейдинг не имеет ничего общего с реальностью и является стресс-тестом потребляемых ресурсов, но мы все равно перепишем узкие места.
Спасибо за тест - в следующем билде будут поправки.
Academic, разберём Ваш индикатор (хоть это не относится к скорости тестирования)
Эта строка говорит о том, что проводится либо полный расчёт от нуля, либо пересчёт на новом баре. Развитие бара никак не обрабатывается. Экономно.
Смотрим дальше. Пересчёт на открытии нового бара.
На открытии нового бара при Par>1 e всегда будет присвоено значение rates_total. Поэтому разница e-i всегда будет равна 1, и (e-i)/3 всегда будет равно 0. Пересчёта не будет. Экономно. Но правильно ли?
При Par=0 разница e-i всегда равна 0. При Par=1 разница e-i всегда 1. (e-1)/3 всегда 0.
То есть, на экономном дорасчёте индикатора вы никогда не получите ни одного значения! Потому что прошлое на глубину Par Вы не рассматриваете. И поэтому полный пересчёт будет отличаться от дорасчёта.
Кстати, текущее значение индикатора всегда будет нулевым, поэтому я не понимаю, как срабатывают условия торговли
Может, я чего-то не учёл?
Добавление. Возможно, я не учёл EMPTY_VALUE. Надо проверить
Ещё добавление. Вы вообще никак не инициализируете индикаторные буфера. А там потенциально может находиться любой мусор.
Academic, разберём Ваш индикатор (хоть это не относится к скорости тестирования)
Эта строка говорит о том, что проводится либо полный расчёт от нуля, либо пересчёт на новом баре. Развитие бара никак не обрабатывается. Экономно.
Смотрим дальше. Пересчёт на открытии нового бара.
На открытии нового бара при Par>1 e всегда будет присвоено значение rates_total. Поэтому разница e-i всегда будет равна 1, и (e-i)/3 всегда будет равно 0. Пересчёта не будет. Экономно. Но правильно ли?
При Par=0 разница e-i всегда равна 0. При Par=1 разница e-i всегда 1. (e-1)/3 всегда 0.
То есть, на экономном дорасчёте индикатора вы никогда не получите ни одного значения! Потому что прошлое на глубину Par Вы не рассматриваете. И поэтому полный пересчёт будет отличаться от дорасчёта.
Кстати, текущее значение индикатора всегда будет нулевым, поэтому я не понимаю, как срабатывают условия торговли
Может, я чего-то не учёл?
Добавление. Возможно, я не учёл EMPTY_VALUE. Надо проверить
i1 =
i2 =Указанный эксперт при прогоне с 2000.01.01 по 2011.01.01 на EURUSD M1 сгенерировал более 2 млн сделок, что привело к тормозам терминала.
Мы уже работаем над оптимизацией использования ресурсов, когда генерируется такое количество сделок.
Конечно же, такой трейдинг не имеет ничего общего с реальностью и является стресс-тестом потребляемых ресурсов, но мы все равно перепишем узкие места.
Спасибо за тест - в следующем билде будут поправки.
i1 =
i2 =Обязательно инициализировать нулевые значения! Вы ведь в эксперте значение индикаторов на 0 проверяете
Обязательно инициализировать нулевые значения! Вы ведь в эксперте значение индикаторов на 0 проверяете
Я же вроде именно НОЛЬ или НЕ НОЛЬ присваиваю.
Кстати прогоните с Par=112 от 1 января 10 года. Смешно, кстати. Хороший пример для заумных стратегий. :)
Я же вроде именно НОЛЬ или НЕ НОЛЬ присваиваю.
Где? Ткните пальцем где Вы присваиваете НОЛЬ. Это должна быть строка Label1Buffer[i]=0;
Вы присваиваете только НЕ НОЛЬ