Возобновление работы эксперта после периода отсутствия связи

 
Посоветуйте, пожалуйста, где можно почитать обсуждение обработки таких ситуаций экспертом.

И вообще, может ли эксперт обнаружить, что торговля шла какое-то время без него.....

Интересно, как в эксперте можно использовать функции определения состояния, такие, например, как IsConnected(), IsExpertEnable() и т.п., если он получает управление по приходу тика.
Ведь, если работа експерта запрещена (самим программистом), то ведь он не получает управления,
или, если нет соединения, то нет и тиков, и опять эксперт не получает управления ....
Странно как-то, что никто об этом не спрашивает.....

С уважением - С.Д.
 
Sart:
Посоветуйте, пожалуйста, где можно почитать обсуждение обработки таких ситуаций экспертом.

И вообще, может ли эксперт обнаружить, что торговля шла какое-то время без него.....

С уважением - С.Д.
Обнаружить, что был обрыв связи можно по журналу, а вот обработать такую ситуацию экспертом нельзя - сервер то оторван, нужно предусматривать заранее защиту от подобного случая - стоп-лосс и т.п.
 
FION:
Sart:
Посоветуйте, пожалуйста, где можно почитать обсуждение обработки таких ситуаций экспертом.

И вообще, может ли эксперт обнаружить, что торговля шла какое-то время без него.....

С уважением - С.Д.
Обнаружить, что был обрыв связи можно по журналу, а вот обработать такую ситуацию экспертом нельзя - сервер то оторван, нужно предусматривать заранее защиту от подобного случая - стоп-лосс и т.п.
А вот для чего такие функции IsConnected(), IsExpertEnable(). Если, например, соединение есть, то IsConnected() скажет нам, что оно есть, а если его нет, то и управление на IsConnected() никак не попадет...и ничего она нам сказать не сможет....

Иначе говоря вопрос такой - может ли эксперт получать управление от терминала не по приходу тика, а как-нибудь иначе ?

С уважением - С.Д.
 
некоторые шутники пишут бесконечный цикл, который запускается по риходу первого тика, а потом в цикли и используют IsConnected()
 
Loky:
некоторые шутники пишут бесконечный цикл, который запускается по риходу первого тика, а потом в цикли и используют IsConnected()
Иначе говоря, получили управление один раз и навсегда ?

А потом типа Sleep(..) и продолжаем работать ?

А как это отражается на работе всего терминала и всего остального, что в нем работает ?

Есть какие-то критические моменты в таком захвате управления ?

И вообще, что-то можете посоветовать относительно такого метода. На первый-то взгляд вроде все нормально : терминал - это программа ,

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

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

Получается, что я сам , в таком случае должен отслеживать тики. .......

С уважением - С.Д.
 
Sart:
Loky:
некоторые шутники пишут бесконечный цикл, который запускается по риходу первого тика, а потом в цикли и используют IsConnected()
Иначе говоря, получили управление один раз и навсегда ?

А потом типа Sleep(..) и продолжаем работать ?

А как это отражается на работе всего терминала и всего остального, что в нем работает ?

Есть какие-то критические моменты в таком захвате управления ?

И вообще, что-то можете посоветовать относительно такого метода. На первый-то взгляд вроде все нормально : терминал - это программа ,

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

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

Получается, что я сам , в таком случае должен отслеживать тики. .......

С уважением - С.Д.
Да нет все проще , советник будет обрабатывать переменные с тактовой частотой 1/Sleep, но при отсутствии связи воздествовать на сервер не получится.
 
Sart:
Loky:
некоторые шутники пишут бесконечный цикл, который запускается по риходу первого тика, а потом в цикли и используют IsConnected()
Иначе говоря, получили управление один раз и навсегда ?

А потом типа Sleep(..) и продолжаем работать ?

А как это отражается на работе всего терминала и всего остального, что в нем работает ?

Есть какие-то критические моменты в таком захвате управления ?

И вообще, что-то можете посоветовать относительно такого метода. На первый-то взгляд вроде все нормально : терминал - это программа ,

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

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

Получается, что я сам , в таком случае должен отслеживать тики. .......

С уважением - С.Д.
а зачем тики отслеживать? тебе нужен момент прихода тика? переменные Bid и Ask в них последняя цена.
 
FION:
Sart:
Loky:
некоторые шутники пишут бесконечный цикл, который запускается по риходу первого тика, а потом в цикли и используют IsConnected()
Иначе говоря, получили управление один раз и навсегда ?

А потом типа Sleep(..) и продолжаем работать ?

А как это отражается на работе всего терминала и всего остального, что в нем работает ?

Есть какие-то критические моменты в таком захвате управления ?

И вообще, что-то можете посоветовать относительно такого метода. На первый-то взгляд вроде все нормально : терминал - это программа ,

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

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

Получается, что я сам , в таком случае должен отслеживать тики. .......

С уважением - С.Д.
Да нет все проще , советник будет обрабатывать переменные с тактовой частотой 1/Sleep, но при отсутствии связи воздествовать на сервер не получится.
Единственное, что мы можем полезного сделать при разрыве связи-зафиксировать это событие, а при возобновлении связи распознать ситуацию первой передачи управления после возобновления связи, что-то в таков духе:
/ попробуем полностью захватывать управление по первому тику и возвращать управление терминалу только в случае случае разрыва связи,
// зафиксировав наличие разрыва связи в переменной int ConnectOnOff =0; 0(CONNECT_OFF)-связи нет, 1(CONNECT_ON)-связь есть. 
// после возобновления связи терминал опять передаст нам управления по первому пришедшему от торгового сервера тику, а мы опять 
// полностью захватываем управление.
// ясно, что после захвата управления, нам уже сигналов терминала о приходе новых тиков не дождаться, поэтому
// мы самостоятельно каждую секунду будем передавать управление на начало функции start().
// в самом начале кода этой функции, мы проверяем тип входа   
// - когда ConnectOnOff =CONNECT_OFF, значит мы получили управление после интервала отсутсвия связи от терминала  и следует, как-то учесть 
//   этот факт в дальнейшей работе эксперта обратившись к нашей функции RestartConnect()
// - когда ConnectOnOff =CONNECT_ON - все нормально, работаем штатно(не забыть только в init() поставить ConnectOnOff = CONNECT_ON)
// таким образом, имееем такое строение експерта:
int start()
while(!IsStopped())
{
 RefreshRates();
//--------------------------
 if (IsConnected)
  {
   if (ConnectOnOff == CONNECT_OFF) {ConnectOnOff = CONNECT_ON; RestartConnect();}
      // обычный наш код
  }
 else
  {
   ConnectOnOff == CONNECT_OFF...  //заметим это на будущее и учтем при входе после возобновления связи
   break;
    
  }
//--------------------------
Sleep(1000);  // 1 секунда 
}
return(0); // возвращаем управление терминалу, когда связь возобновится , терминал по первому тику опять отдаст нам управление...
}

 
Loky:
Sart:
Loky:
некоторые шутники пишут бесконечный цикл, который запускается по риходу первого тика, а потом в цикли и используют IsConnected()
Иначе говоря, получили управление один раз и навсегда ?

А потом типа Sleep(..) и продолжаем работать ?

А как это отражается на работе всего терминала и всего остального, что в нем работает ?

Есть какие-то критические моменты в таком захвате управления ?

И вообще, что-то можете посоветовать относительно такого метода. На первый-то взгляд вроде все нормально : терминал - это программа ,

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

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

Получается, что я сам , в таком случае должен отслеживать тики. .......

С уважением - С.Д.
а зачем тики отслеживать? тебе нужен момент прихода тика? переменные Bid и Ask в них последняя цена.
Да, действительно, спасибо, вы мне очень помогли своим первым ответом про шутников. Все прояснилось.
Причина обращения: