- Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6.
- Вертикальные индикаторы в МТ4
- Требуется протестировать советник
наверно эксперт историю смотрит. Количество ордеров растет, скорость прохода цикла снижается. Либо исопльзуется индиктор делающий рассчеты по всем барам на каждом тике
потом разобрался,исправил, стал тестироваться за 3мин
в одном эксперте я напортачил с циклами,так он тестировался(не оптимизировался) 1,5 суток
потом разобрался,исправил, стал тестироваться за 3мин
Здесь речь идет не конкретно о времени тестирования, а о скорости
тестирования, которая чем дальше - тем ниже. Хотя циклы, конечно,
я тоже перепроверил.
А вот облегчить 33, оставив функционал - не так и просто..(
в одном эксперте я напортачил с циклами,так он тестировался(не оптимизировался) 1,5 суток
потом разобрался,исправил, стал тестироваться за 3мин
Здесь речь идет не конкретно о времени тестирования, а о скорости тестирования, которая чем дальше - тем ниже. Хотя циклы, конечно, я тоже перепроверил.
А вот облегчить 33, оставив функционал - не так и просто..(
Привет.
Как-то было нужно короткий ЗЗ, чтобы не работать по всей истории и мне такой сделали.
Также можно сделать чтобы ЗЗ просчитывался не на каждом тике, а скажем при смене бара.
Код ЗЗ с регулируемой историй выкладываю. Попутного тренда и больших профитов.
//+------------------------------------------------------------------+ //| ZigZagS.mq4 | //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Red //---- indicator parameters extern int ExtDepth=12; extern int ExtDeviation=5; extern int ExtBackstep=3; extern int nBars=150; //---- indicator buffers double ExtMapBuffer[]; double ExtMapBuffer2[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { IndicatorBuffers(2); //---- drawing settings SetIndexStyle(0,DRAW_SECTION); //---- indicator buffers mapping SetIndexBuffer(0,ExtMapBuffer); SetIndexBuffer(1,ExtMapBuffer2); SetIndexEmptyValue(0,0.0); ArraySetAsSeries(ExtMapBuffer,true); ArraySetAsSeries(ExtMapBuffer2,true); //---- indicator short name IndicatorShortName("ZigZag("+ExtDepth+","+ExtDeviation+","+ExtBackstep+")"); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { int shift, back, lasthighpos, lastlowpos, LoopBegin; double val, res; double curlow, curhigh, lasthigh, lastlow; if (nBars==0) LoopBegin=Bars-ExtDepth; else LoopBegin=nBars; LoopBegin=MathMin(Bars-ExtDepth, LoopBegin); for(shift=LoopBegin; shift>=0; shift--) { val=Low[Lowest(NULL,0,MODE_LOW,ExtDepth,shift)]; if(val==lastlow) val=0.0; else { lastlow=val; if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0; else { for(back=1; back<=ExtBackstep; back++) { res=ExtMapBuffer[shift+back]; if((res!=0)&&(res>val)) ExtMapBuffer[shift+back]=0.0; } } } ExtMapBuffer[shift]=val; //--- high val=High[Highest(NULL,0,MODE_HIGH,ExtDepth,shift)]; if(val==lasthigh) val=0.0; else { lasthigh=val; if((val-High[shift])>(ExtDeviation*Point)) val=0.0; else { for(back=1; back<=ExtBackstep; back++) { res=ExtMapBuffer2[shift+back]; if((res!=0)&&(res<val)) ExtMapBuffer2[shift+back]=0.0; } } } ExtMapBuffer2[shift]=val; } // final cutting lasthigh=-1; lasthighpos=-1; lastlow=-1; lastlowpos=-1; for(shift=Bars-ExtDepth; shift>=0; shift--) { curlow=ExtMapBuffer[shift]; curhigh=ExtMapBuffer2[shift]; if((curlow==0)&&(curhigh==0)) continue; //--- if(curhigh!=0) { if(lasthigh>0) { if(lasthigh<curhigh) ExtMapBuffer2[lasthighpos]=0; else ExtMapBuffer2[shift]=0; } //--- if(lasthigh<curhigh || lasthigh<0) { lasthigh=curhigh; lasthighpos=shift; } lastlow=-1; } //---- if(curlow!=0) { if(lastlow>0) { if(lastlow>curlow) ExtMapBuffer[lastlowpos]=0; else ExtMapBuffer[shift]=0; } //--- if((curlow<lastlow)||(lastlow<0)) { lastlow=curlow; lastlowpos=shift; } lasthigh=-1; } } for(shift=Bars-1; shift>=0; shift--) { if(shift>=Bars-ExtDepth) ExtMapBuffer[shift]=0.0; else { res=ExtMapBuffer2[shift]; if(res!=0.0) ExtMapBuffer[shift]=res; } } }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования