Как узнать, сколько запущено экспертов, и, особенно, скольким разрешено торговать?
Глобальный счетчик в 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).
Ключевое слово было "гарантированно".
Файл глобальных переменных сохраняется на диске. Когда файл открывается и записывается неизвестно. Время, нужное операционной системе для этого, от терминала никак не зависит. Будет достаточно 100 мс? или надо 1000?
Все это называется undefined behavior и строго-настрого запрещено к использованию во всех серьезных системах.
Глобальный счетчик, конечно, будет работать. В большинстве случаев.
Хорошо бы просто иметь наряду с MarketInfo функцию TerminalInfo, из которой можно тягать текущее состояние терминала и экспертов.
PS
За идеи спасибо, вполне достаточно для реализации на текущий момент. А обнулятель можно и семафором дополнительно защитить :)
Файл глобальных переменных сохраняется на диске. Когда файл открывается и записывается неизвестно. Время, нужное операционной системе для этого, от терминала никак не зависит. Будет достаточно 100 мс? или надо 1000?
Все это называется undefined behavior и строго-настрого запрещено к использованию во всех серьезных системах.
Глобальный счетчик, конечно, будет работать. В большинстве случаев.
Хорошо бы просто иметь наряду с MarketInfo функцию TerminalInfo, из которой можно тягать текущее состояние терминала и экспертов.
PS
За идеи спасибо, вполне достаточно для реализации на текущий момент. А обнулятель можно и семафором дополнительно защитить :)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Глобальный счетчик в init/deinit, наверное, не пойдет.