Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
можно так 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);
Коля извиняй за навясчевость, но только ты отозвалса на мою прозьбу, прими мою благодарность!
У меня последняя прозьба, дописал индикатор так как ты указал, но он неработает по стратегии.
Прилагаю код, укажи пожалуста на ошибку...
флаг выставляется для фиксации события.На старт внимание ... и ждём ... пока не наступит нужное нам условие. В твоем инд. нет условия фиксации - например перегиба или достижения уровня.
уточни стратегию,попробую помоч,если не хочешь публично,можешь в личку
Может быть так?А где АТР?
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)
Какой таймфрейм?