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

 

в каждом советнике заводим extern bool Leader = false;

при старте на одной из копий выбираем Leader = true;- этот советник назначаем лидером ;)

внутри кода каждого советника проверяем Leader: если true - это одно, если false -другое...

так пойдет?

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

 
TheXpert >>:

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

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

А... это идея- если использовать функции записи в файл из WinAPI, то все получится!

.

Ну а SHARE_WRITE в штатных функция FileOpen/FileClose используется со стороны метатрейдера

по умолчанию и без возможности изменения :-).

 

:-) вроде не работает, хотя думаю, что из не правильного использования GlobalVariableSetOnCondition.

Все втроем говорят, что они лидеры, именно " am leader"

ХОТЯ может из-за того, что GlobalVariableSetOnCondition double принимает, а не string.

int whoIsLeader()
{
      string temp = StringConcatenate(Symbol(),"_",Period());
      
      if (GlobalVariableCheck("LEADER_STRING"))
      {     // если уже задана
            if (GlobalVariableSetOnCondition("LEADER_STRING", temp, temp))
            {
                  imLeader = true;
                  Alert (temp, " am leader");
            }
            else
            {
                  imLeader = false;
            }
      }
      else
      {     // если пока не существует
            if (GlobalVariableSet("LEADER_STRING", temp) != 0)
            {
                  imLeader = true;
                  Alert (temp, " lead");
            }
            else
            {
                  imLeader = false;
            }
      }
}
 

А на счет хендл окна я же сказал, не ясным из обсуждения остался вопрос "как определить хендл окна скрипта, если есть еще окна с таким же Symbol и Period?"


Соглашусь, что ваш вариант и прост, и гениален ;-)

ForexTools >>:

в каждом советнике заводим extern bool Leader = false;

при старте на одной из копий выбираем Leader = true;- этот советник назначаем лидером ;)

внутри кода каждого советника проверяем Leader: если true - это одно, если false -другое...

так пойдет?

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


Но интересно провести "выборы".

 
vedroid >>:

А на счет хендл окна я же сказал, не ясным из обсуждения остался вопрос "как определить хендл окна скрипта, если есть еще окна с таким же Symbol и Period?"

Русским языком ответил- посмотрите на результат запуска скрипта. Код скрипта дал. Скриншот дал.

P.S.: можете не смотреть :-), я не настаиваю.

 
jartmailru >>:

Русским языком ответил- посмотрите на результат запуска скрипта. Код скрипта дал. Скриншот дал.

P.S.: можете не смотреть :-).

:-) Ну спасибо.

 
а паузу секунд на 10 -20 не пытались поставить? а то все что он делает - это сигналит, а алерт отрабатывается быстро....
 
теперь они с "паузой" говорят, что они "лидеры"
 

попробуйте вот это, при удалении скрипта с чарта он уступает первенство, накиньте на несколько чартов одновременно и смотрите

//+------------------------------------------------------------------+
//|                                                       Leader.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
void start(){
   int id=GetTickCount();
   while(!IsStopped()){Sleep(200);
     if(!GlobalVariableCheck("leader")){
       GlobalVariableSet("leader",id);
     }else{
       if(GlobalVariableGet("leader")==id){
         Comment("Я лидер");
       }else{
         Comment("Он лидер = ",GlobalVariableGet("leader"));
       }
     }
   }
   GlobalVariableDel("leader");
   Comment(" ");
return;}
//+------------------------------------------------------------------+
 

Огромное спасибо

Идея с хендл окна: jartmailru

И глобальные переменные: xrust


Спасибо :-)


Для последователей прикрепляю советник, который считаю ответом на топик.

Файлы:
Причина обращения: