Потихоньку "скатываемся" к трендовому советнику
Это же отлично
Руух, небольшая просьба, нельзя ли вставить в советник своего рода индикатор направления волатильности. Использовал его в илане на м5, в итоге входы уменьшились в 2-3 раза, но их точность заметно улучшилась.
Код не мой, пару лет назад нашел в каком-то сове. Спасибо.
extern int Vol = 100; //волатильность минутных баров
extern int PorogV = 1; //порог волатильности
int start() {
.........
int trend=VoLatiLityFun();
if(trend==1){//Buy направление
ticket = OrderSend(------);}
if(trend==2){//Sell направление
ticket = OrderSend(------);}
...........
int VoLatiLityFun()
{
double volu, vold, vol0u, vol1u=1, vol0d, vol1d=1, thresh, h, l;
int tim=0, timm=0, i;
if (Vol>0){if (timm!=iTime(0,PERIOD_M1,0)){ vol1u=0; vol1d=0; for (i=Vol; i<Vol<<1; i++){
h=iClose(0,PERIOD_M1,i); l=iOpen(0,PERIOD_M1,i); if (h>l+thresh) vol1u+=iVolume(0,PERIOD_M1,i);
else if (l>h+thresh) vol1d+=iVolume(0,PERIOD_M1,i); }
volu=0; vold=0; for (i=1; i<Vol; i++){h=iClose(0,PERIOD_M1,i); l=iOpen(0,PERIOD_M1,i);
if (h>l+thresh) volu+=iVolume(0,PERIOD_M1,i); else if (l>h+thresh) vold+=iVolume(0,PERIOD_M1,i);}
if (PorogV<0){l=vol1u; vol1u=vol1d; vol1d=l;}timm=iTime(0,PERIOD_M1,0);}
h=iClose(0,PERIOD_M1,0); l=iOpen(0,PERIOD_M1,0);
if (h>l+thresh){vol0u=volu+iVolume(0,PERIOD_M1,0); vol0d=vold; }else
if (l>h+thresh){vol0d=vold+iVolume(0,PERIOD_M1,0); vol0u=volu; }
else {vol0u=volu; vol0d=vold;} if (PorogV<0){l=vol0u; vol0u=vol0d; vol0d=l;}} else
if (Vol<0){if (timm!=iTime(0,PERIOD_M1,0)){vol1u=0; for (i=-Vol; i<(-Vol)<<1; i++){
h=iClose(0,PERIOD_M1,i); l=iOpen(0,PERIOD_M1,i);
if (MathAbs(h-l)>thresh) vol1u+=iVolume(0,PERIOD_M1,i);}volu=0;
for (i=1; i<-Vol; i++) h=iClose(0,PERIOD_M1,i); l=iOpen(0,PERIOD_M1,i);
if (MathAbs(h-l)>=thresh) volu+=iVolume(0,PERIOD_M1,i); vol1d=vol1u; vold=volu; timm=iTime(0,PERIOD_M1,0);}
h=iClose(0,PERIOD_M1,0); l=iOpen(0,PERIOD_M1,0);
if (MathAbs(h-l)>=thresh) vol0u=volu+iVolume(0,PERIOD_M1,0); vol0d=vol0u;}
else {h=iClose(0,PERIOD_M1,0); l=iOpen(0,PERIOD_M1,0); if (MathAbs(h-l)>=thresh) vol0u=iVolume(0,PERIOD_M1,0);
else vol0u=0; vol0d=vol0u;
}
if (vol0u>vol1u && vol1u>0) return(1);//Buy
if (vol0d>vol1d && vol1d>0) return(2);//Sell
return(0);}