Помогите пожалуста начинающему - страница 2

 

можно так if((x || y) && (a || b))

Усреднять с помощью iMA правильнее.

 

Кооля, если у меня например два таких сигнала:

1)я делаю покупку в точке розворота iMA,

2) а потом за трендом работаю на сигналах iCCI

-аналогично в другую сторону

 

вот так оно примерно выглядит:

1BUY(iMA[i]>iMA[i+1] && iMA[i+1]<iMA[i+2]) 2BUY(iCCI[i]>100.0 && iCCI[i+1]<100.0 && iMA[i]>iMA[i+1])

 

то есть два ордера?Первый ордер рискованный - на одном индикаторе.Провильнее будет

bool flag=false;

bool Buy=false;

...................

/////////////////////

start() {

if ((MA[i]>MA[i+1]) && (MA[i+1]<MA[i+2])) flag=true;

if(flag && CCI[i]>100.0 && CCI[i+1]<100.0 && MA[i]>MA[i+1]) { Buy=true;flag=false}..............

........................

 

первый можна отфильтровать через дивергенцию

период = 5

АТР_период = 14

if(counted_bars<0) return(-1);

i=Bars-counted_bars -1;
while(i>=0)
{
AD[i]=iAD(NULL,0,i);
ATR[i]=iATR(NULL,0,ATR_period,i);
i--;
}
i=Bars-counted_bars -1;
while(i>=0)
{
MA[i]=iMAOnArray(AD,0,period,0,MODE_SMA,i);
SD[i]=iStdDevOnArray(AD,0,period,0,MODE_SMA,i);
CCI[i]=iCCIOnArray(AD,0,period,i);
double Range=MathAbs(Close[i+1]+Close[i+2]-Open[i+1]-Open[i+2])/2.0;

bool flag=false;

if ((MA[i]>MA[i+1]) && (MA[i+1]<MA[i+2]) && (CCI[i]>CCI[i+1])) flag=true;

if(flag && CCI[i]>100.0 && CCI[i+1]<100.0 && MA[i]>MA[i+1])
val1[i]=Low[i]-Range;

bool flag=false;

if ((MA[i]<MA[i+1]) && (MA[i+1]>MA[i+2]) && (CCI[i]<CCI[i+1])) flag=true;

if(flag && CCI[i]<-100.0 && CCI[i+1]>-100.0 && MA[i]<MA[i+1])

val2[i]=High[i]+Range;
i--;
}
return(0);
}
//+------------------------------------------------------------------+

Коля, я правильно записал?

 

bool flagUp = false;

bool flagDn =false;

................

int init()

{

.......................

if ((MA[i]>MA[i+1]) && (MA[i+1]<MA[i+2]) && (CCI[i]>CCI[i+1])) flagUp=true;

if(flag && CCI[i]>100.0 && CCI[i+1]<100.0 && MA[i]>MA[i+1])

{
val1[i]=Low[i]-Range; flagUp=false;

}

if ((MA[i]<MA[i+1]) && (MA[i+1]>MA[i+2]) && (CCI[i]<CCI[i+1])) flagDn=true;

if(flag && CCI[i]<-100.0 && CCI[i+1]>-100.0 && MA[i]<MA[i+1])

{

val2[i]=High[i]+Range; flagDm=false;

}
i--;
}
return(0);

 

Коля извиняй за навясчевость, но только ты отозвалса на мою прозьбу, прими мою благодарность!

У меня последняя прозьба, дописал индикатор так как ты указал, но он неработает по стратегии.

Прилагаю код, укажи пожалуста на ошибку...

Файлы:
rhmiiy.mq4  3 kb
 

флаг выставляется для фиксации события.На старт внимание ... и ждём ... пока не наступит нужное нам условие. В твоем инд. нет условия фиксации - например перегиба или достижения уровня.

уточни стратегию,попробую помоч,если не хочешь публично,можешь в личку

 

Может быть так?А где АТР?

if(MA[i]>MA[i+1] && MA[i+1]<MA[i+2]) flagUp=true;
if(flagUp && SD[i]>SD[i+1] && CCI[i]>-62.0)
{
val1[i]=Low[i]-Range; flagUp=false;
}
if(MA[i]<MA[i+1] && MA[i+2]<MA[i+1]) flagDn=true;
if(flagDn && SD[i]>SD[i+1] && CCI[i]<62.0)

 

Какой таймфрейм?

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