Полезные функции от KimIV - страница 123

 
artmedia70:

У Игоря:

if (sy=="0") sy=Symbol();

Нужно:

if (sy==NULL) sy=Symbol();
Насколько я понимаю, это бесполезная подстановка, потому что при использовании NULL подставляется символ текущего графика.
 
Y.A.K._:
Насколько я понимаю, это бесполезная подстановка, потому что при использовании NULL подставляется символ текущего графика.
Вполне может и так. Проверьте. Я увидел где в функции "собака порылась" в коде - написал. А вникать ... спать хочу...
 
borilunad:
Что Вас не устроило?! Или в этом случае можно поставить только одно, а другое не годится?!

 Comment( NumberOfPositions(NULL, -1, Magic) );

в данном случае можно поставить " "  или Symbol()  или _Symbol  или 0, но не NULL

NULL в данном случае не означает текущий символ

в вызове индикатора,  NULL означает текущий символ

double res=iAC(NULL,0,1); 

 
Да, пожалуй в данном контексте я не прав.
 
artmedia70:

Раньше компилятор пропускал всякие вольности. Сейчас более строгий. Разве это плохо? Глядишь в коды, и видишь такие перлы, хоть с фигой сравнивали, если хотели с отсутствующим значением сравнить...

Сейчас лафа заканчивается. Почему? Да просто потому, что претензии в частности предъявляют к метаквотам за тот говнокод, который юзеры накачали себе по помойкам всяческим. Школьники понапишут, а халявщики его пользуют, не зная, что это бомба.

Игорь что, для тебя не программист?!
 
pako:

 Comment( NumberOfPositions(NULL, -1, Magic) );

в данном случае можно поставить " "  или Symbol()  или _Symbol  или 0, но не NULL

NULL в данном случае не означает текущий символ

в вызове индикатора,  NULL означает текущий символ

double res=iAC(NULL,0,1); 

 

Так это был у Риты вызов не индикатора, а функции в своём же советнике! Ну "как в огороде бузина, а в ... дядька"!
 
Y.A.K._:
Насколько я понимаю, это бесполезная подстановка, потому что при использовании NULL подставляется символ текущего графика.
Это точно!
 
borilunad:
Это точно!

Нет, не в этом контексте.

Если бы мы вызывали какую-либо встроенную функцию, в которой указывается символ, тогда да, а здесь мы сравниваем с символом ордера, он не может быть равен NULL и не даст истину при сравнении NULL и OrderSymbol().

 
Y.A.K._:

Нет, не в этом контексте.

Если бы мы вызывали какую-либо встроенную функцию, в которой указывается символ, тогда да, а здесь мы сравниваем с символом ордера, он не может быть равен NULL и не даст истину при сравнении NULL и OrderSymbol().

Об OrderSymbol() я ничего не говорил, только сказал, что у Риты, если стоял NULL в вызове функции, где у меня Symbol(), роли не играет. А об OrderSymbol() речи не было. Просто это сайт, все пишут, что хотят. Могут что-то и напутать.
 
borilunad:
Игорь что, для тебя не программист?!

Почему же? Программист. Мне нравится его логика, но я бы так написал функцию подсчёта количества ордеров:

//+------------------------------------------------------------------+
int NumberTradesOrders(string sy, int op, int mn) {
   int num=0;
   for(i=OrdersTotal()-1; i>=0; i--) {
      if(OrderSelect(i,SELECT_BY_POS)) {
         if(OrderMagicNumber()!=mn) continue;   // для тестера можно удалить
         if(OrderSymbol()!=sy)      continue;   // для тестера можно удалить
         if(OrderType()!=op)        continue;
         num++;
         }
      }
   return(num);
}
//+------------------------------------------------------------------+
Причина обращения: