... может пропишите, на каком таймфрейме работать в самом эксперте, что-бы по крайней мере не пробовал торговать не на том таймфрейме?
int run = 0; //Признак "запущенности" //+------------------------------------------------------------------+ int OnInit()//Если запуск советника { if(run==0) { //Выполняется если еще не выполнялось run=1; } return(0); } //+------------------------------------------------------------------+ void OnDeinit(const int reason)//Если выключение советника { if(reason==REASON_REMOVE) { // Выполняется только в случае удаления советника } } //+------------------------------------------------------------------+
Если у вас обнуляются параметры, то их надо хранить в глобальных переменных и считывать от туда.
опять некрофилы поперли... (предупреждение)
ветки древности поднимают с завидной регулярностью. (для тех, кто не понял юмора)
---------------------------------------
что касается варианта
int run = 0; //Признак "запущенности" //+------------------------------------------------------------------+ int OnInit()//Если запуск советника { if(run==0) { //Выполняется если еще не выполнялось run=1; } return(0); }
он работать не будет. и вы все также потеряете данные в ините
Для себя решил проблему как то элементарно.
int run = 0; //Признак "запущенности" //+------------------------------------------------------------------+ int OnInit()//Если запуск советника { if(run==0) { //Выполняется если еще не выполнялось run=1; } return(0); }при смене таймфрейма run станет =0
у меня никогда такой проблемы не возникало, т.к. в init только то, что действительно необходимо инициализировать
и переинициализация никак не влияет на советника и то, что он успел наработать..
при смене таймфрейма run станет =0
думаю не станет, нужно в лог запринтить ;)
12:51:20 Compiling 'test'
12:51:44 test AUDCAD,M5: loaded successfully
12:51:51 test AUDCAD,M5: ТФ = 5, запуск № 1
12:51:51 test AUDCAD,M5: initialized
12:52:01 test AUDCAD,M5: deinitialized
12:52:01 test AUDCAD,M5: uninit reason 3
12:52:01 test AUDCAD,M15: ТФ = 15, запуск № 2
12:52:01 test AUDCAD,M15: initialized
12:52:01 test AUDCAD,M15: deinitialized
12:52:01 test AUDCAD,M15: uninit reason 3
12:52:03 test AUDCAD,M30: ТФ = 30, запуск № 3
12:52:03 test AUDCAD,M30: initialized
12:52:04 test AUDCAD,M30: deinitialized
12:52:04 test AUDCAD,M30: uninit reason 3
12:52:04 test AUDCAD,H1: ТФ = 60, запуск № 4
12:52:04 test AUDCAD,H1: initialized
12:52:05 test AUDCAD,H1: deinitialized
12:52:05 test AUDCAD,H1: uninit reason 3
12:52:05 test AUDCAD,H4: ТФ = 240, запуск № 5
12:52:05 test AUDCAD,H4: initialized
12:52:07 test AUDCAD,H4: deinitialized
12:52:07 test AUDCAD,H4: uninit reason 3
12:52:07 test AUDCAD,Daily: ТФ = 1440, запуск № 6
12:52:07 test AUDCAD,Daily: initialized
12:52:09 test AUDCAD,Daily: deinitialized
12:52:09 test AUDCAD,Daily: uninit reason 3
12:52:09 test AUDCAD,Weekly: ТФ = 10080, запуск № 7
12:52:09 test AUDCAD,Weekly: initialized
12:52:12 test AUDCAD,Weekly: deinitialized
12:52:12 test AUDCAD,Weekly: uninit reason 3
12:52:13 test AUDCAD,Monthly: ТФ = 43200, запуск № 8
12:52:13 test AUDCAD,Monthly: initialized
у меня примерно так:
//+------------------------------------------------------------------+ //| test.mq4 | //| https://www.mql5.com/ru/users/igorm | //| https://www.mql5.com/ru/users/igorm | //+------------------------------------------------------------------+ #property copyright "https://www.mql5.com/ru/users/igorm" #property link "https://www.mql5.com/ru/users/igorm" int run=-1; int init(){ if(run<0) run=1; else run++; Print("ТФ = ",Period(),", запуск № ",run); return(0); } //________________________________________________________ int deinit(){ return(0); } //________________________________________________________ int start(){ Comment("ТФ = ",Period(),", запуск № ",run); return(0); } //________________________________________________________
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
На днях натолкнулся на неприятную ситуацию. Прицепил эксперт на график, разрешил торговать - всё работает. Вот только потом руки потянулись сменить таймфрейм на этом графике, просто ради интереса. Как результат - вызов deinit()->init()->start(). Иначе говоря, при смене таймфрема на графике, к которому прицеплен эксперт, происходит "перезагрузка" этого самого эксперта. Кто-нибудь знает, как можно заблокировать такое поведение? По сути, проблема не критическая, но неприятная.