Количество торгующих экспертов

 
Как узнать, сколько запущено экспертов, и, особенно, скольким разрешено торговать?

Глобальный счетчик в init/deinit, наверное, не пойдет.
 
Как узнать, сколько запущено экспертов, и, особенно, скольким разрешено торговать?

Глобальный счетчик в init/deinit, наверное, не пойдет.

почему не пойдёт? Делай глобальную переменную (или 2) и считай туда чего хочешь =)
 
почему не пойдёт? Делай глобальную переменную (или 2) и считай туда чего хочешь =)


По крайней мере две причины.
Непонятно, как определить, торгует эксперт или нет, и когда торговля включается или выключается вручную без выгрузки эксперта.
И неопределенное поведение при падении терминала или запуске терминала несколькими пользователями на одном компьютере.
Последнее, кстати, относится ко всем настройкам, не только к глобальным переменным.
 
Непонятно, как определить, торгует эксперт или нет, и когда торговля включается или выключается вручную без выгрузки эксперта.

без выгрузки торговлю одного эксперта остановить невозможно. А определить - IsTradeAllowed().

И неопределенное поведение при падении терминала

Пусть все эксперты в инит проверяют - разрешена ли им торговля, и, если да, меняют глобальную переменную.

или запуске терминала несколькими пользователями на одном компьютере

а что, можно?
Я, если чесно, не пробовал, но, по идее, не должно работать...
 
без выгрузки торговлю одного эксперта остановить невозможно.

На чарте F7, закладка Common, checkbox Allow live traiding.
А определить - IsTradeAllowed().

Из "IsTradeAllowed() - непонятки в работе или глюк МТ"

komposter 07.09.05 18:18

У меня перед торговыми операциями идёт проверка IsTradeAllowed() (разработчики рекомендовали).
Когда я спрашивал - что эта ф-ция значит, мне отвечали примерно следующее: "она возвращает правду, если в настройках эксперта стоит галочка "разрешить торговлю" и торговый поток свободен (т.е. не торгует другой эксперт)"

Функция показывает, можно или нет торговать в данный конкретный момент времени. Мне нужно узнать, разрешено ли торговать вообще.

Пусть все эксперты в инит проверяют - разрешена ли им торговля, и, если да, меняют глобальную переменную.

Нельзя гарантировать, что счетчик обнулен, когда терминал стартует. Если, конечно, не удалять перед стартом файл глобальных переменных.


а что, можно?
Я, если чесно, не пробовал, но, по идее, не должно работать...

Работает... И не так, как хотелось бы. :(
 
На чарте F7, закладка Common, checkbox Allow live traiding.

Да, а потом "ОК", и эксперт переинициализируется...

Функция показывает, можно или нет торговать в данный конкретный момент времени. Мне нужно узнать, разрешено ли торговать вообще.

Вероятность того, что кто-то сейчас торгует небольшая... Но, конечно, не совсем то, что нужно...

ельзя гарантировать, что счетчик обнулен, когда терминал стартует. Если, конечно, не удалять перед стартом файл глобальных переменных.

...или повесить startup-эксперт, который будет обнулять..один раз - при запуске ;)
 
Да, а потом "ОК", и эксперт переинициализируется...

Не знал... Попробую, спасибо.
...или повесить startup-эксперт, который будет обнулять..один раз - при запуске ;)

Здесь не догоняю. :-\
Что за стартап-эксперт? Куда его повесить?
 
Здесь не догоняю. :-\
Что за стартап-эксперт? Куда его повесить?

Делаешь обычного эксперта, вставляешь в инит обнуление переменной, вешаешь на график, потом не трогаешь...
Результат - при каждом запуске терминала обнулённая переменная ;)
 
Делаешь обычного эксперта, вставляешь в инит обнуление переменной, вешаешь на график, потом не трогаешь...
Результат - при каждом запуске терминала обнулённая переменная ;)

Как обеспечить, чтобы этот эксперт запускался гарантированно первым?
 
на обнуление глобальной переменной уйдёт очччень немного времени...
поставь в остальные эксперты Слип(100).
 
Ключевое слово было "гарантированно".
Файл глобальных переменных сохраняется на диске. Когда файл открывается и записывается неизвестно. Время, нужное операционной системе для этого, от терминала никак не зависит. Будет достаточно 100 мс? или надо 1000?
Все это называется undefined behavior и строго-настрого запрещено к использованию во всех серьезных системах.
Глобальный счетчик, конечно, будет работать. В большинстве случаев.

Хорошо бы просто иметь наряду с MarketInfo функцию TerminalInfo, из которой можно тягать текущее состояние терминала и экспертов.

PS
За идеи спасибо, вполне достаточно для реализации на текущий момент. А обнулятель можно и семафором дополнительно защитить :)
Причина обращения: