Глобальные переменные и закрытие терминала. - страница 2

 
У этого варианта один большой минус - ты не знаешь, чей тик придет первым, скажем, EURUSD (на котором висит инициализация), или EURJPY (например). Ночью тики ходят редко. Перезапустишь терминал, и жди, пока сработает нужный советник...
а зачем мне тик? я в инит вставил обнуление переменной, а старт оставил пустым. Теперь при запуске терминала у меня гарантированно обнулённая переменная, и никаких лишних действий ;)

а без аварийных выключений система-семафор работает и так отлично =)
 

Не совсем понятно, что именно этот скрипт должен делать?


Что угодно. Например, обнулить твои глобальные переменные. Гарантированно - до запуска экспертов, и гарантированно - только один раз.
 

а зачем мне тик? я в инит вставил обнуление переменной, а старт оставил пустым. Теперь при запуске терминала у меня гарантированно обнулённая переменная, и никаких лишних действий ;)
а без аварийных выключений система-семафор работает и так отлично =)


Это если у каждой тройки эксперт - таймфрейм - валюта переменная уникальная. А если два эксперта по одной валюте? Один обнулил переменную... Отработал. Второй обнулил... А надо-то только раз.
 
Это если у каждой тройки эксперт - таймфрейм - валюта переменная уникальная. А если два эксперта по одной валюте? Один обнулил переменную... Отработал. Второй обнулил... А надо-то только раз.
нет, я не о том... с личными глоб. переменными проблем пока небыло ) личные обнуляются экспертами самостоятельно при старте.
А вот семафор "TradeIsBusy", который юзают все, оставался необнулённым, и из каждого эксперта его нельзя обнулять - весь смысл семафора теряется ;)

а в ситуации, описанной тобой, поможет ф-ция WindowHandle() (или как-то так, писал по памяти, мог допустить ошибку). В имени глоб. переменной кроме символа и ТФ указываешь WH, и всё должно быть ОК ;) или Мэйджик туда же )
Но мне кажется, нет смысла ставить 2 одинаковых эксперта на один инструмент и ТФ. А если уж совсем надо, имя эксперта чуть подровнять ;)
 
Вариант от YMak c форума Альпари - http://forum.alpari-idc.ru/viewtopic.php?p=220832#220832
Цитата:
komposter 24.08.05 18:09

Столкнулся с проблемой: у меня для торговли используется глоб. переменная - семафор.
Т.е. пока идёт торговая оперция, эксперт устанавливает её значение в 1, а когда заканчивает, в 0.
Ну, и, естественно, пока она равна 1, ни один другой эксперт торговать не может.
Так вот если закрыть терминал во время торговли, она остаётся равна 1, и при следюющем запуске никто не может торговать.

Как вариант решения можно задавать не просто семафор (0/1),
а задавать время его жизни как LocalTime + K секунд.

Тогда семафор будет принимать значения времени в недалеком будущем или ноль.

Если значение семафора меньше LocalTime, то считаем что он свободен.

(если у кого есть доступ к форуму метаквотов, можете там продублировать этот вариант)
 
Вариант от YMak c форума Альпари
не подходит =)
Весь смысл семафора в том, что устанавливается он ф-цией GlobalVariableSetOnCondition... Т.е. однозначно одним экспертом. А остальные ждут.
А "LastTradeTime" у меня тоже есть. Только без семафора эксперты за него дерутся ;)
 
[quote]
Весь смысл семафора в том, что устанавливается он ф-цией GlobalVariableSetOnCondition...

может стоит просить разработчиков расширить функцию GlobalVariableSetOnCondition... или сделать другую, чтобы иметь возможность сравнения глобальной переменной не только на равенство но и на неравенство, например <если меньше> тогда меняем...Это позволило-бы решить подобные проблемы и упростить код...
 
давай просить вместе =)))
или startup скрипт ;)