Форум » Консультации по программированию » Получение рыночных данных минуя Init() » Ответить

Получение рыночных данных минуя Init()

hoz: scriptong, я для советников обычно использовал функцию GetMarketInfo(), которую вызывал первично в функции Init(). Но вот щяс я решил написать некоторые библиотеки, и столкнулся с проблемой. Во-первых, спред, и стоплевел являются динамическими величинами. Так же в библиотеке эти переменные есс-но не объявляются, я так понимаю нужно получать те же переменные каждый раз в каждой функции, иначе не реализовать? Дальше, попутно возникает момент. Нужно всё-таки, как-то обойтись без функции Init() на случай, если будет реконект с сервером. Посоветуйте, как по-вашему будет лучше решить этот момент?

Ответов - 1

Scriptong: Этот момент решается достаточно просто: GetMarketInfo следует вызывать на каждом новом тике при работе советника/индикатора онлайн. В тестере ничего этого делать не нужно. Достаточно получить все необходимые значения в Init, т. к. по ходу тестирования они изменяться не могут. Чтобы не писать два разных кода (для тестера и для онлайна) в функции start используется простая логическая развязка: if (!IsTesting()) GetMarketInfo(); Такой код следует размещать до вызова любой другой функции, которая использует данные по рыночному окружению. hoz пишет: Дальше, попутно возникает момент. Нужно всё-таки, как-то обойтись без функции Init() на случай, если будет реконект с сервером. Посоветуйте, как по-вашему будет лучше решить этот момент? Здесь не понял, какое отношение имеет вызов Init и реконнект? При потере связи и следующем ее восстановлении на одном и том же счете функция Init не вызывается. Происходит очередной вызов функции start, если пришел новый тик. Init будет вызываться только при смене счета. События, вызывающие повторную инициализацию программ, приведены здесь.



полная версия страницы