Ошибки, баги, вопросы - страница 3447
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я вижу, что в OnInit() структура заполняется, но только там(?) и только один раз(?). Что делать, если OnInit() вызывается в то время, когда соединение с сервером было слишком медленным или временно разорвано, так что функции MQ возвращают ноль вместо реального значения брокера?
Допустим, случилась ситуация, когда SymbolInfoDouble один раз (не с первого вызова) вернул верное значение, а затем по какой-то причине стал выдавать ошибочное. В этом случае метод структуры будет выдавать верное значение каждый раз.
Структура находится в режиме заполнения до тех пор, пока не вернется верное значение.
Честно говоря, SymbolInfo-функции работают без соединения с торговым сервером, потому что Обзор рынка со всеми спецификациями хранится в терминале (конфигурационные файлы).
Не представляю, что нужно сделать, чтобы SymbolInfo-функция вернула ошибку.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Carl Schreiber, 2024.01.02 20:15
SymbolInfoDouble() returns only these Errors:
No Error in case of connection problem.
Потому что нет такой проблемы.
Такую "идею" MQ много раз уже озвучивали. Так что это и не идея вовсе, а давняя рекомендация.
Данные получены - работаем, не получены - выход до следующего тика.
а когда они стали некорректны, то всё равно работаем но по прежним данным :-)
отличная затейка, ради которой пропущен тик, который вообще к этим данным отношения не имеет (он физически от другого сервера/сервиса/порта)
в функциях платформы SymbolGetXXX() данные и так мемоизированы (memoized) по самое-самое, насколько это возможно.
Максимум хорошего что можно сделать - в начале OnTick (или иного торгового цикла) прочесть необходимое, чтобы внутри одного обработчика "два раза не вставать" :-) То есть тот-же приём что у fxsaber, но "ненавсегда".
Многие данные в справочнике НЕ ЯВЛЯЮТСЯ КОНСТАНТАМИ. При взбрыках котировок, повышенной нагрузке, внутренних траблах DC, внешних указаниях им - они меняются.
Ещё раз - не только STOP_LEVEL, FREEZE_LEVEL . Минимальный и максимальный лот, шаг лота, маржа для открытия позиции точно меняются. Ранее были прецеденты когда и полностью плечо снижалось, со всеми эффектами маржин-колов.
а когда они стали некорректны, то всё равно работаем но по прежним данным :-)
отличная затейка, ради которой пропущен тик, который вообще к этим данным отношения не имеет (он физически от другого сервера/сервиса/порта)
в функциях платформы SymbolGetXXX() данные и так мемоизированы (memoized) по самое-самое, насколько это возможно.
Максимум хорошего что можно сделать - в начале OnTick (или иного торгового цикла) прочесть необходимое, чтобы внутри одного обработчика "два раза не вставать" :-) То есть тот-же приём что у fxsaber, но "ненавсегда".
Многие данные в справочнике НЕ ЯВЛЯЮТСЯ КОНСТАНТАМИ. При взбрыках котировок, повышенной нагрузке, внутренних траблах DC, внешних указаниях им - они меняются.
Ещё раз - не только STOP_LEVEL, FREEZE_LEVEL . Минимальный и максимальный лот, шаг лота, маржа для открытия позиции точно меняются. Ранее были прецеденты когда и полностью плечо снижалось, со всеми эффектами маржин-колов.
Прежде, чем пытаться начать спорить и что-либо доказывать, прочитайте о чём речь, и о чём был ответ. Вопрос - ответ.
Просто: вопрос - ответ.
Ещё раз: вопрос - ответ.
Без придумываний новых проблем и начала их разрешения.
Вопроса о корректности данных, возможно меняющихся далее, не было. Был бы - был бы и ответ.
а когда они стали некорректны, то всё равно работаем но по прежним данным :-)
отличная затейка, ради которой пропущен тик, который вообще к этим данным отношения не имеет (он физически от другого сервера/сервиса/порта)
в функциях платформы SymbolGetXXX() данные и так мемоизированы (memoized) по самое-самое, насколько это возможно.
Максимум хорошего что можно сделать - в начале OnTick (или иного торгового цикла) прочесть необходимое, чтобы внутри одного обработчика "два раза не вставать" :-) То есть тот-же приём что у fxsaber, но "ненавсегда".
Многие данные в справочнике НЕ ЯВЛЯЮТСЯ КОНСТАНТАМИ. При взбрыках котировок, повышенной нагрузке, внутренних траблах DC, внешних указаниях им - они меняются.
Ещё раз - не только STOP_LEVEL, FREEZE_LEVEL . Минимальный и максимальный лот, шаг лота, маржа для открытия позиции точно меняются. Ранее были прецеденты когда и полностью плечо снижалось, со всеми эффектами маржин-колов.
В этом случае я могу использовать только обновленные значения снова и снова, даже если они были одинаковыми 1000 раз, но потом вдруг перестали. Спасибо!
In this case, I can only use updated values again and again, even if they were the same 1000 times, but then suddenly no longer. Thank you.
Прежде, чем пытаться начать спорить и что-либо доказывать, прочитайте о чём речь, и о чём был ответ. Вопрос - ответ.
Просто: вопрос - ответ.
Ещё раз: вопрос - ответ.
Без придумываний новых проблем и начала их разрешения.
Вопроса о корректности данных, возможно меняющихся далее, не было. Был бы - был бы и ответ.
спорить с модератором без толку.
хотел помочь, но раз вы сильно умнее, значит не надо и впредь
спорить с модератором без толку.
хотел помочь, но раз вы сильно умнее, значит не надо и впредь
Дело не в модераторе - никогда оппонента банить не буду за его мнение - это полная дурь. Наверное, это сила привычки - видеть в Ваших сообщениях негатив. Приручили... ))
Хорошо. Вы пишете, что у сабера всё правильно, но его конструкция не позволит отследить внезапное изменение на стороне сервера значений, получаемых от SymbolInfoDouble:
Т.е., у него проверяется на лишь ненулевое значение, но никак не на корректное на данный момент - один раз заполнено ненулевым, и на том всё - постоянно выдаёт первое ненулевое значение.
Потому, сам не кэширую такие данные, которые в любой момент могут измениться, а отслеживаю их изменение, либо просто получаю в момент их надобности.
Я же правильно понял что при оптимизации на 10 агентах, функция TesterStop() завершит тестирование (например при просадке выше 10%), на каждом агенте а не в тестере - и исполнится только на том агенте где это условие исполнится, а остальные агенты доработают до конца.
Не понял есть ли функция завершения тестирования без записывания статистики тестирования?
Я же правильно понял что при оптимизации на 10 агентах, функция TesterStop() завершит тестирование (например при просадке выше 10%), на каждом агенте а не в тестере - и исполнится только на том агенте где это условие исполнится, а остальные агенты доработают до конца.
История появлений этой функции. Остановится расчет прохода. Агент дальше будет работать.
Не понял есть ли функция завершения тестирования без записывания статистики тестирования?
Идея этой функции - создать INIT_FAILED вне OnInit. Поэтому подходит.