Во-первых, вы не передаете параметр, который принимает на вход это индикатор. Но это не является причиной.
А причина следующая:
Индикатор рисуется на графике только в местах, где это необходимо, а там, где он не должен отображаться в массив значений индикатора записывается значение EMPTY_VALUE, что в языке MQL4 равно 0x7FFFFFFF или 2147483647. По-этому оба условия всегда срабатывают, а т.к. проверка значения iTmpDN делается последней, то всегда присваиваеися tradeDirection =-1 (т.е. всегда вниз).
Так же в советнике, который вы используете есть такой параметр, как ReverseDirection, который, скорее всего, у вас имеет значение true и эксперт "переворачивает" показния индикаторов. Таким образом вы всегда получаете сигнал на покупку и ниодного сигнала на продажу.
Правильно проверять было бы приблизительно так:
if (iTmpUP != EMPTY_VALUE) tradeDirection = 1;
if (iTmpDN != EMPTY_VALUE) tradeDirection =-1;
С уважением.
Во-первых, вы не передаете параметр, который принимает на вход это индикатор. Но это не является причиной.
А причина следующая:
Индикатор рисуется на графике только в местах, где это необходимо, а там, где он не должен отображаться в массив значений индикатора записывается значение EMPTY_VALUE, что в языке MQL4 равно 0x7FFFFFFF или 2147483647. По-этому оба условия всегда срабатывают, а т.к. проверка значения iTmpDN делается последней, то всегда присваиваеися tradeDirection =-1 (т.е. всегда вниз).
Так же в советнике, который вы используете есть такой параметр, как ReverseDirection, который, скорее всего, у вас имеет значение true и эксперт "переворачивает" показния индикаторов. Таким образом вы всегда получаете сигнал на покупку и ниодного сигнала на продажу.
Правильно проверять было бы приблизительно так:
if (iTmpUP != EMPTY_VALUE) tradeDirection = 1;
if (iTmpDN != EMPTY_VALUE) tradeDirection =-1;
С уважением.
Спасибо за помощь, все работает.
Желаю удачи!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте, уважаемые!
Такая проблема: добавил в работающий советник в качестве дополнительного фильтра следующее:
int tradeDirection;
double iTmpUP, iTmpDN;
if(BrainTrend1StopLine==true)
{
iTmpUP = iCustom(NULL,0,"BrainTrend1StopLine",1,1);
iTmpDN = iCustom(NULL,0,"BrainTrend1StopLine",0,1);
if (iTmpUP>0) tradeDirection = 1;
if (iTmpDN>0) tradeDirection =-1;
}
else
tradeDirection=0;
return(tradeDirection);
после чего советник стал торговать только в одну сторону. Подскажите, в чем ошибка. В программировании полный профан, все по аналогии и некоторого опыта.
Заранее спасибо!