nowplusdi=iADX(NULL,0,14,PRICE_CLOSE,MODE_PLUSDI,1);
b4minusdi=iADX(NULL,0,14,PRICE_CLOSE,MODE_MINUSDI,2);
nowminusdi=iADX(NULL,0,14,PRICE_CLOSE,MODE_MINUSDI,1);
предлагаете так ?
на самом деле пытался сделать советника по алгоритму adx crossing
и че-то не получается
Ну для проверки идеи можно непоредственно использовать вызов этого индикатора из советника, так не пробовали?
для этого надо переписывать индикатор чтобы он возвращал значения или есть другой метод ?
пробовал возвращать значения. позиции открываются и закрываются не там где индикатор дает сигнал
int start()
{
if (CountBars>=Bars) CountBars=Bars;
SetIndexDrawBegin(0,Bars-CountBars);
SetIndexDrawBegin(1,Bars-CountBars);
int i,shift,counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars<1)
{
for(i=1;i<=CountBars;i++) val1[CountBars-i]=0.0;
for(i=1;i<=CountBars;i++) val2[CountBars-i]=0.0;
}
for (shift = CountBars; shift>=0; shift--)
{
b4plusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_PLUSDI,shift-1);
nowplusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_PLUSDI,shift);
b4minusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_MINUSDI,shift-1);
nowminusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_MINUSDI,shift);
if (b4plusdi>b4minusdi && nowplusdi<nowminusdi)
{
val1[shift]=Low[shift]-5*Point;
// вот тут возвращать значение на убывающий тренд ?
}
if (b4plusdi<b4minusdi && nowplusdi>nowminusdi)
{
val2[shift]=High[shift]+5*Point;
// вот тут возвращать значение на возрастающий тренд ?
}
}
return(0);
}
для этого надо переписывать индикатор чтобы он возвращал значения или есть другой метод ?
Переписывать? Вы смеетесь? Это же 21 век, МТ4)
if (iCustom(Symbol(),0,"ADXvCrossing",0,2)!=2147483647) //это условие для BUY { ..... } if (iCustom(Symbol(),0,"ADXvCrossing",1,2)!=2147483647) // это условие для SELL { .... }Индикатор рисует стрелки только на 2 -м баре потому на истории смотрится неплохо, хотя и на первом проскакивает пару раз, видать кривавато написан.
спасибо
буду разбираться
а что за число 2147483647 ?
Типа EMPTY_VALUE
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
не могу понять почему неправильно работает советник
должен открывать и закрывать позиции по пересечению Di+ и Di-
b4plusdi=iADX(NULL,0,14,PRICE_CLOSE,MODE_PLUSDI,1);
nowplusdi=iADX(NULL,0,14,PRICE_CLOSE,MODE_PLUSDI,0);
b4minusdi=iADX(NULL,0,14,PRICE_CLOSE,MODE_MINUSDI,1);
nowminusdi=iADX(NULL,0,14,PRICE_CLOSE,MODE_MINUSDI,0);
if (b4plusdi<b4minusdi && nowplusdi>nowminusdi)
{
Opn_B=true; // Критерий откр. Buy
Cls_S=true; // Критерий закр. Sell
}
if (b4plusdi>b4minusdi && nowplusdi<nowminusdi)
{
Opn_S=true; // Критерий откр. Sell
Cls_B=true; // Критерий закр. Buy
}
полный код советника в приложении