Ошибки, баги, вопросы - страница 3446

 
Artyom Trishkin # :
Если данные не получены - повторить запрос. Если опять нет, то вписать их при старте. 

В этом и заключается идея моей функции setGlobVars(), поэтому другого решения нет.

That is the idea of my a. m. function setGlobVars() - so there is no other solution.
 
Carl Schreiber #:

В этом и заключается идея моей функции setGlobVars(), поэтому другого решения нет.

That is the idea of my a. m. function setGlobVars() - so there is no other solution.

Такую "идею" MQ много раз уже озвучивали. Так что это и не идея вовсе, а давняя рекомендация.

Данные получены - работаем, не получены - выход до следующего тика.

 
Alexey Viktorov #:

Интересный костыль, без иронии. А что произойдёт если ::SymbolInfoDouble(_Symbol, Prop_ID) вернёт ошибку?

На каждом вызове метода структуры будете получать нулевое значение через SymbolInfoDouble. Как только первый раз получите ненулевое - SymbolInfoDouble перестанет вызываться.


Честно говоря, SymbolInfo-функции работают без соединения с торговым сервером, потому что Обзор рынка со всеми спецификациями хранится в терминале (конфигурационные файлы).

 
Carl Schreiber #:

Я вижу, что в OnInit() структура заполняется, но только там(?) и только один раз(?). Что делать, если OnInit() вызывается в то время, когда соединение с сервером было слишком медленным или временно разорвано, так что функции MQ возвращают ноль вместо реального значения брокера?

Допустим, случилась ситуация, когда SymbolInfoDouble один раз (не с первого вызова) вернул верное значение, а затем по какой-то причине стал выдавать ошибочное. В этом случае метод структуры будет выдавать верное значение каждый раз.

Структура находится в режиме заполнения до тех пор, пока не вернется верное значение.

 
fxsaber #:

Честно говоря, SymbolInfo-функции работают без соединения с торговым сервером, потому что Обзор рынка со всеми спецификациями хранится в терминале (конфигурационные файлы).

Не представляю, что нужно сделать, чтобы SymbolInfo-функция вернула ошибку.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Carl Schreiber, 2024.01.02 20:15

SymbolInfoDouble() returns only these Errors:

The value of double type. In case of execution failure, information about the error can be obtained using GetLastError() function:
•5040 – invalid string parameter for specifying a symbol name,
•4301 – unknown symbol (financial instrument),
•4302 – symbol is not selected in "Market Watch" (not found in the list of available ones),
•4303 – invalid identifier of a symbol property.

No Error in case of connection problem.


Потому что нет такой проблемы.

 
Artyom Trishkin #:

Такую "идею" MQ много раз уже озвучивали. Так что это и не идея вовсе, а давняя рекомендация.

Данные получены - работаем, не получены - выход до следующего тика.

а когда они стали некорректны, то всё равно работаем но по прежним данным :-)

отличная затейка, ради которой пропущен тик, который вообще к этим данным отношения не имеет (он физически от другого сервера/сервиса/порта)

в функциях платформы SymbolGetXXX() данные и так мемоизированы (memoized) по самое-самое, насколько это возможно.

Максимум хорошего что можно сделать - в начале OnTick (или иного торгового цикла) прочесть необходимое, чтобы внутри одного обработчика "два раза не вставать" :-) То есть тот-же приём что у fxsaber, но "ненавсегда". 

Многие данные в справочнике НЕ ЯВЛЯЮТСЯ КОНСТАНТАМИ. При взбрыках котировок, повышенной нагрузке, внутренних траблах DC, внешних указаниях им - они меняются. 

Ещё раз - не только STOP_LEVEL, FREEZE_LEVEL . Минимальный и максимальный лот, шаг лота, маржа для открытия позиции точно меняются. Ранее были прецеденты когда и полностью плечо снижалось, со всеми эффектами маржин-колов. 

 
Не так давно был прецедент, когда дата экспирации во время торговой сессии поменялась.
 
Maxim Kuznetsov #:

а когда они стали некорректны, то всё равно работаем но по прежним данным :-)

отличная затейка, ради которой пропущен тик, который вообще к этим данным отношения не имеет (он физически от другого сервера/сервиса/порта)

в функциях платформы SymbolGetXXX() данные и так мемоизированы (memoized) по самое-самое, насколько это возможно.

Максимум хорошего что можно сделать - в начале OnTick (или иного торгового цикла) прочесть необходимое, чтобы внутри одного обработчика "два раза не вставать" :-) То есть тот-же приём что у fxsaber, но "ненавсегда". 

Многие данные в справочнике НЕ ЯВЛЯЮТСЯ КОНСТАНТАМИ. При взбрыках котировок, повышенной нагрузке, внутренних траблах DC, внешних указаниях им - они меняются. 

Ещё раз - не только STOP_LEVEL, FREEZE_LEVEL . Минимальный и максимальный лот, шаг лота, маржа для открытия позиции точно меняются. Ранее были прецеденты когда и полностью плечо снижалось, со всеми эффектами маржин-колов. 

Прежде, чем пытаться начать спорить и что-либо доказывать, прочитайте о чём речь, и о чём был ответ. Вопрос - ответ.

Просто: вопрос - ответ.

Ещё раз: вопрос - ответ.

Без придумываний новых проблем и начала их разрешения.

Вопроса о корректности данных, возможно меняющихся далее, не было. Был бы - был бы и ответ.

 
Maxim Kuznetsov #:

а когда они стали некорректны, то всё равно работаем но по прежним данным :-)

отличная затейка, ради которой пропущен тик, который вообще к этим данным отношения не имеет (он физически от другого сервера/сервиса/порта)

в функциях платформы 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.

 
Artyom Trishkin #:

Прежде, чем пытаться начать спорить и что-либо доказывать, прочитайте о чём речь, и о чём был ответ. Вопрос - ответ.

Просто: вопрос - ответ.

Ещё раз: вопрос - ответ.

Без придумываний новых проблем и начала их разрешения.

Вопроса о корректности данных, возможно меняющихся далее, не было. Был бы - был бы и ответ.

спорить с модератором без толку. 

хотел помочь, но раз вы сильно умнее, значит не надо и впредь