Скачать MetaTrader 5

Помогите разобратся с while

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
gince
546
gince  

Индикатор NRTR_ATR_STOP.

Показывать в коментаре данные ма пока есть синяя линия. Когда синяя пропадает и появляется красная, прекратить показывать комент. Ма данные должны менятся через каждый тик.

Делал так, но .....................

int start()
  {
//----
     bool NRTRUP,NRTRDOWN;

     double nrtrUp=iCustom(NULL,0,"NRTR_ATR_STOP",24,3,0,1);
     double nrtrDn=iCustom(NULL,0,"NRTR_ATR_STOP",24,3,1,1);
     
     if(nrtrUp!=EMPTY_VALUE){NRTRUP=true;NRTRDOWN=false;}    //синяя
     if(nrtrDn!=EMPTY_VALUE){NRTRDOWN=true;NRTRUP=false;}    //красная
     
     double ma   = iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,1);
    while(NRTRUP)
      {
        Comment(ma);
  
       if(NRTRDOWN)break;
     }
//----
   return(0);
  }

 Помогите уважаемые програмисты

IgorM М
4801
IgorM М  

убрать комментарий нужно написать

 Comment("");

да и в Вашем случае вместо  while() лучше использовать if(), т.к попадя в цикл while() не видно каким образом Вы сможете выйти оттуда

циклы while() работают до тех пор пока условие в скобках истинно, т.е. while(true){}  -это бесконечный цикл

вот простенький пример с while()

int i=5;
while(i>=0){
   i--;
   Print("i=",i);
}

пока i больше нуля цикл выполняется 

gince
546
gince  

Для выхода, то есть когда появился протиположныи сигнал(красная линия)


if(NRTRDOWN)break;
 

gince
546
gince  

пока нртр синяя  покупаем. Как только синяя пропала неразреается покупать. Внутри цикла условия на покупку


Aleksandr Chugunov
4834
Aleksandr Chugunov  
Вам не цикл нужно использовать... а условие
gince
546
gince  
AlexSTAL:
Вам не цикл нужно использовать... а условие



  если можно черкните

Почему цикл, а потому что в течении хода синеи линии может быть      бай1 клосе1,   баи 2 клосе2,  ......  бай n  клосе n. В одно время открываерса  один ордер. Пока он не закрыт, другого открывать нельзя. когда закрыли первый, если нртр все еще синяя ищем вход по другим индикаторам

Потому в том  цикле будет внутрений цикл для подщета количества открытых ордеров до n

IgorM М
4801
IgorM М  
gince:

Для выхода, то есть когда появился протиположныи сигнал(красная линия)


if(NRTRDOWN)break;
 


ну и отлично, а теперь проявите смекалку и скомбинируйте свои два флага NRTRDOWN и NRTRUP в один if()

примерно так

if(NRTRUP && !NRTRDOWN) Comment("пишем комментарий"); else Comment("");

ЗЫ: хотя изначально выбрана неправильная структура программы, Вам вместо переключения флагов  NRTRDOWN и NRTRUP необходимо один флажок/признак того, что писать комментарий или нет

gince
546
gince  
Почему цикл, а потому что в течении хода синеи линии может быть бай1 клосе1, баи 2 клосе2, ...... бай n клосе n. В одно время открываерса один ордер. Пока он не закрыт, другого открывать нельзя. когда закрыли первый, если нртр все еще синяя ищем вход по другим индикаторам

Потому в том цикле будет внутрений цикл для подщета количества открытых ордеров до n
gince
546
gince  
Commen был взят как пример
gince
546
gince  

Пример если n равно 2 тогда бай клосе, баи клосе и третий бай неразрешается

gince
546
gince  

Другими словами мне надо .................пока нртр синяя............ внутри цикла еще куча условий и циклов. Потому я и выбрал while

Помогите с этим

1234
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий