Как в советнике определить пересечение границы 0 в приложенном индикаторе?
Я сделала это так:
int asc()
{
int a;
double a1 = iCustom(Symbol(),0,"TRIX", 1,0);
double a2 = iCustom(Symbol(),0,"TRIX",1,1);
if(a1 > 0 && a2 < 0) a = 1;
if(a1 < 0 && a2 > 0) a = -1;
else a = 0;
return(a);
}
и не работает. Подскажите в чем ошибка.
int asc() { int a=0; double a1 = iCustom(Symbol(),0,"TRIX", 1,0); double a2 = iCustom(Symbol(),0,"TRIX",1,1); if(a1 > 0 && a2 < 0) a = 1; if(a1 < 0 && a2 > 0) a = -1; return(a); }
А почему тогда это работает?
int macd()
{
int a;
double m1 = iMACD(NULL,0,6,12,9,PRICE_CLOSE,MODE_MAIN,0);
double m2 = iMACD(NULL,0,6,12,9,PRICE_CLOSE,MODE_MAIN,1);
return(a);
}
Переменная по умолчанию инициализируется 0. В первом случае при несрабатывании второго иф было присвоение поеременной а нулевого значения. Первый иф не учитывался.
Поняла.
Спасибо!
Как в советнике определить пересечение границы 0 в приложенном индикаторе?
Я сделала это так:
int asc()
{
int a;
double a1 = iCustom(Symbol(),0,"TRIX", 1,0);
double a2 = iCustom(Symbol(),0,"TRIX",1,1);
if(a1 > 0 && a2 < 0) a = 1;
if(a1 < 0 && a2 > 0) a = -1;
else a = 0;
return(a);
}
и не работает. Подскажите в чем ошибка.
Приношу извинения, что вмешиваюсь, т.к. Vinin уже все объяснил.
Просто, пометил цветом конструкцию, чтобы было видно почему первый иф не учитывался. Так, на всякий случай :)
else if(a1 < 0 && a2 > 0) a = -1;
else a = 0;
Ну, сделайте так:
if(a1 > 0 && a2 < 0) {a = 1;Print("a=1, a1=",a1," a2=",a2);} else if(a1 < 0 && a2 > 0) {a = -1;Print("a=-1, a1=",a1," a2=",a2);} else {a = 0;Print("a=0, a1=",a1," a2=",a2);}
и проанализируйте поступающие данные
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Как в советнике определить пересечение границы 0 в приложенном индикаторе?
Я сделала это так:
int asc()
{
int a;
double a1 = iCustom(Symbol(),0,"TRIX", 1,0);
double a2 = iCustom(Symbol(),0,"TRIX",1,1);
if(a1 > 0 && a2 < 0) a = 1;
if(a1 < 0 && a2 > 0) a = -1;
else a = 0;
return(a);
}
и не работает. Подскажите в чем ошибка.