Что делать советнику, когда надолго пропал интернет?

 
 
IgorVMorozoff писал(а) >>
Кто нибудь знает как записать текущее положение переменных в файл при обрыве связи и прочесть их оттуда после возобновления? Оч нужно для написания эксперта.

Если советник не закцикленный, то и делать ничего не надо. Он же работает по приходу нового тика. Если зацикленный, то может определить есть или нет связь. И выставить флаг обрыва связи, и сохранить переменные.

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

 

Срез параметров в глобальные переменные нужно делать ВСЕГДА!

Нет никакой гарантии что желаемая вами установка/удаление/модификация ордера - выполниптся на первом тике и правильно. Или стоплос подвинется куда надо. Поэтому Вы должны организовывать работу таким образом, чтоб эксп на каждом тике знал откуда он пришел и куда ему идти дальше. Иначе будут ошибки связанные с поднятой темой. Даже в тестере - удаление ордеров происходит не на одном тике... Поэтому обязательно - организация "Семафоров", чтоб давать приказы на несколько тиков, пока они не исполнятся

А если сюда ещё добавить перезагрузку терминала и винды... в любом случае без глобальных параметров не обойтись. И слава Богу, что в МТ5 появилась функция GlobalVariableFlush().

 
rider писал(а) >>

А вообще человек вполне конкретный вопрос задал

Вопрос задан некорректно.

Советник не знает, что пропала связь.

 
sergeev >>:

Срез параметров в глобальные переменные нужно делать ВСЕГДА!


В конечном итоге все зависит от логики работы эксперта  .... когда-то есть необходимость сохранять переменные, а когда-то нецелесообразно, хотя бы из-за несопостовимости объема защитного кода и грозящих последствий.... но естественно, эту логику необходимо хорошо знать :).....

А вообще человек вполне конкретный вопрос задал: как записать параметры в файл. Попробуйте воспользоваться такой конструкцией:

//+------------------------------------------------------------------+
//| чтение из файла времени, цены и лота цикла после перезагрузки или сбоя
//+------------------------------------------------------------------+
void _Read_TPL_Cycle()
{
   string FileName=nameEA+"_"+Symbol()+Period()+"_Time_Price_Lot.csv";
   int handle=FileOpen(FileName,FILE_READ|FILE_CSV);
   if(handle<1) return(0);
   timecycle = StrToInteger(FileReadString(handle)); 
   pricecycle = StrToDouble(FileReadString(handle)); 
   LotCycle = StrToDouble(FileReadString(handle)); 
   FileClose(handle);
return(0);
}      
//+------------------------------------------------------------------+
//| запись в файл времени, цены и лота цикла, на случай перезагрузки или сбоя
//+------------------------------------------------------------------+
void _Write_TPL_Cycle()
{
   string FileName=nameEA+"_"+Symbol()+Period()+"_Time_Price_Lot.csv";
   int handle=FileOpen(FileName,FILE_WRITE|FILE_CSV);
   if(handle<1) return(0);
   FileWrite(handle,timecycle,pricecycle,LotCycle);                        
   FileClose(handle);
return(0);
}      
Только от обрывов связи вас это не спасет. Нужно либо зацикливать эксперта, либо воспользоваться, как вам уже советовали, глобальными переменными... пишите в них время последнего тика и анализируйте на разницу..... "надолго" - это расплывчатое понятие :)
 
IgorVMorozoff писал(а) >>
Что делать советнику, когда надолго пропал интернет?

Не только интернет может пропасть. Электроэнергия тоже пропадает, иногда. Вирусы и трояны поражают компьютер.

Мой вариант выхода - дополнительный компьютер (можно ноутбук) + ИБП + дополнительный канал интернета

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

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

является проблемой.

Причина обращения: