Уникальный идентификатор Советника или "выборы" среди равных Советников

 

Добрый всем день.

Может кто сможет делом помочь.


Преамбула: 3 копии одного и того же советника запускаются на разных окнах терминала, советник(и) пользуются одними и теми же файлами (лог, база, магия...) но для совершения некоторых операций нужно выбрать среди них "лидера". Пытался сделать схему, кто первый запишет в файлик свой Символ и Таймфрейм, тот и лидер. Но оказалось, что они втроем одновременно это делают, "перезатирая" записи друг друга.... Приходится делать 2-ой тур выборов :-) тут конечно уже двое смиряются с поражением. Но вообщем задачка ещё та.


Задача: может можно узнать какой-нибудь виндовый уникальный идентификатор окна (советника..) и пусть каждый из советников пройдется по циклу... и сравнит "свой" ай.ди. с чужими ну сразу же решит, что сегодня не он лидер.


Большое спасибо.

 

Пробовал определять ай.ди окна графика... по недавней теме Как узнать все WindowHandle окон в терминале?

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

 
задачка проста как пять копеек - есть глобальные переменные клиентского терминала...
 
vedroid >>:

Пробовал определять ай.ди окна графика... по недавней теме Как узнать все WindowHandle окон в терминале?

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

А ручками задать религия не позволяет?

Общий выход -- поместить критичные данные в критическую секцию. Лучше делать это внешним кодом.

xrust >>:
задачка проста как пять копеек - есть глобальные переменные клиентского терминала...
Дооо, действительно, как два пальца об асвальт. Качественно сделать критическую секцию без подключения внешних модулей не получится.
 
vedroid >>:

Пробовал определять ай.ди окна графика... по недавней теме Как узнать все WindowHandle окон в терминале?

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

Товарищ, нужно было просто попробовать.

Как видите, WindowHandle вернула разные значения.

Тем более что кода немного для проверки:

Comment("Окно " + WindowHandle(Symbol(), Period()));

И в ТОЙ теме про это как раз было написано :-).

 
TheXpert писал(а) >> Дооо, действительно, как два пальца об асвальт. Качественно сделать критическую секцию без подключения внешних модулей не получится.

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

 

Большое спасибо.

с Глобальными переменными....ээх, ;-) пойду копать дальше.

 
TheXpert >>:

Дооо, действительно, как два пальца об асвальт. Качественно сделать критическую секцию без подключения внешних модулей не получится.

Я думал, если файл открыть на запись- то это и будет примитивной критической сессией :-).

Так ни фига-с... Не то что SHARE_WRITE- это дико- так еще два скрипта туда данные совали одновременно :-).

Но самое смешное, когда по команде остановить скрипт, выходят оба скрипта! :-)

(Один инструмент- один таймфрейм)

Файлы:
arrow.mq4  2 kb
 

логика такая : каждому советнику в ините присваиваем свой АЙДИ, пусть будет ТФ и символ, или время устангвки на чарт, что угодно...

при создании определенной ситуевины каждый советник читает переменную и если ее нет = он первый и выставляет свой АЙДИ, если айди не свой то он в пролете если свой - работает, по окончании ситуевины переменная удаляется = разрешение на работу всем остальным

'Lock&Scalping series' - здесь в архиве посмотрите версии 2.77 - там таким образом решен конфликт по одновременному закрытию ордеров...

 
xrust >>:

логика такая : каждому советнику в ините присваиваем свой АЙДИ, пусть будет ТФ и символ, или время устангвки на чарт, что угодно...

Или WindowHandle() :-)

Кстати, в аттаче- как два скрипта одновременно данные пишут :-).
Файлы:
filename.txt  1 kb
 
jartmailru >>:

Я думал, если файл открыть на запись- то это и будет примитивной критической сессией :-).

Эмм, вообще-то да .

Так ни фига-с... Не то что SHARE_WRITE- это дико- так еще два скрипта туда данные совали одновременно :-).

Так SHARE_WRITE наоборот разрешает писать другим.

xrust >>:при создании определенной ситуевины каждый советник читает переменную и если ее нет = он первый и выставляет свой АЙДИ, если айди не свой то он в пролете если свой - работает, по окончании ситуевины переменная удаляется = разрешение на работу всем остальным
В промежуток между чтением и записью может записаться кто-то другой.
Причина обращения: