Технические работы на сайте - страница 2

 
Я вообще не про то. Смысл пересчитываться во время дисконнекта :))
 
TheXpert:
Я вообще не про то. Смысл пересчитываться во время дисконнекта :))

Пересчитываться нужно не во время дисконекта, а сразу после. А для этого нужно знать что был разрыв, а вот эту информацию так просто не получить, так как во время разрыва индикатор как бы не существует.

ЗЫ можно поставить слежение как предложил Rosh через таймер, но во первых 1 сек это многовато, и первый тик можно пропустить, а во вторых занимаем таймер под такую плёвую задачу.

 
Urain:
Пересчитываться нужно не во время дисконекта, а сразу после.
Хм. А это интересно. Только тебе знание о дисконнекте не поможет :)
 
TheXpert:
Хм. А это интересно. Только тебе знание о дисконнекте не поможет :)
Развивай мысль.
 
Urain:
Развивай мысль.

Для начала один символ. Здесь достаточно просто нормально обрабатывать разрыв. При вставке истории OnCalculate должно приходить, так что проблем нет.

Даже если есть зависимость, то вначале (терминал должен это учитывать) рассчитывается независимый. А т.к. один поток...

А теперь интересное.

Есть два индюка -- независимый и зависимый. На разных символах

Последовательность такая:

Дисконнект на несколько баров.

Коннект расчет.

вставка истории на символе зависимого индюка

вставка истории на символе независимого индюка.

Мы не можем из зависимого индюка на 100% корректно отработать такую ситуацию.

 
TheXpert:
...

Есть два индюка -- независимый и зависимый. На разных символах

Последовательность такая:

Дисконнект на несколько баров.

Коннект расчет.

вставка истории на символе зависимого индюка

вставка истории на символе независимого индюка.

Мы не можем из зависимого индюка на 100% корректно отработать такую ситуацию.

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

ЗЫ сейчас я просто запрашиваю от 0 в количестве rates_total, а уж сколько будет получено с тем и работаю...

сбоит в такой схеме если независимый раньше выдавал 100000 а на следующем тике 24846, когда получается больше то не сбоит.

ЗЗЫ опять же смущает что приходится на каждом тике запрашивать rates_total баров независимого, вроде бы лажа, но автоматизировать получение независимого не зная сколько вообще он имеет баров в распоряжении, и сколько баров не пересчитывалось с прошлого тика, нереально.

 

Я мож глупость скажу и не в тему,поскольку еще далеко не специалист,да и не надеюсь в будущем...

На прошлой неделе ,после разрыва связи на 3 часа с сервером Лайта и коннекта,моментально робот открыл сделки..Не там где надо открыл,не там где надо закрыл перед этим..В точности не смог отследить и понять ,что же такое получилось в эту секунду,ведь не было критериев для совершения операций .Индюки совершенно в другом месте.Нет сигналов.Тогда я сделал функцию на проверку времени баров последних.Для меня не критично так..

Например,чтобы третий бар обратно м15 был не позже 30минут..(Исходя из этого он не торгует пока первые 30мин с открытия недели и после разрыва) Это проверка первая ,что срабатывает на тике,и далее блокирует торговлю..Пока проблем не возникло.

 
Karlson:

Я мож глупость скажу и не в тему,поскольку еще далеко не специалист,да и не надеюсь в будущем...

На прошлой неделе ,после разрыва связи на 3 часа с сервером Лайта и коннекта,моментально робот открыл сделки..Не там где надо открыл,не там где надо закрыл перед этим..В точности не смог отследить и понять ,что же такое получилось в эту секунду,ведь не было критериев для совершения операций .Индюки совершенно в другом месте.Нет сигналов.Тогда я сделал функцию на проверку времени баров последних.Для меня не критично так..

Например,чтобы третий бар обратно м15 был не позже 30минут..(Исходя из этого он не торгует пока первые 30мин с открытия недели и после разрыва) Это проверка первая ,что срабатывает на тике,и далее блокирует торговлю..Пока проблем не возникло.

Вот вам советник следящий за дисконектом и посылающий событие дисконекта всем открытым чартам и советник показывающий как это событие получать.

Может это поможет, но придётся на каком то чарте держать в работе этот сов TERMINAL_CONNECTED постоянно.

Хотя правильнее было бы его назвать терминал дисконектед.

Событие посылается один раз, когда связь пропадает, всем открытым чартам.

 
Спасибо.Ознакомлюсь :)
 

Что можете подсказать по такому коду.Замечания.Вероятные глюки.

Еще думаю при восстановлении коннекта сделать проверку первым делом индюков.К примеру диапазон попадания средней 0.5-2 (цена) .Чтобы ее не сбросило в 0 или какой нить DBL_MAX.И только тогда далее торговать.Мне кажется в этом был у меня глюк.

//+------------------------------------------------------------------+
//| Connection/Disconnection                                         |
//|                                          Copyright 2011, Karlson |
//+------------------------------------------------------------------+
bool conn=false;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
 { EventSetTimer(1); // устанавливаем тайиер на проверку
   OnTimer();        // первоначальный запуск проверки 
   return(0);
 }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
 {  if (conn==true) {} // торговля разрешена
   
 }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer()
 { if(!(bool)TerminalInfoInteger(TERMINAL_CONNECTED))    // если нет связи
        {Comment ("No connection!");                     
         conn=false;                                     // запрещаем торговлю
         return;}
         
      // сюда проходим только при коннекте  
   if (conn==false)                                      // если связь есть,а до этого пропадала или первоначальный запуск
      {Comment ("Connection!.Sleep 10sek for data receive to terminal.");
       Sleep(10000);                                     // заснем
       conn=true;                                        // разрешаем торговлю
       Comment ("Trade allowed!"); } 
 }//+----------------------------------------------------------------- +
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
  EventKillTimer();
}
Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Константы числовых типов
Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Константы числовых типов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Именованные константы / Константы числовых типов - Документация по MQL5