Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 605

 
Amon1953:

Глюки в MQL4 ?


Подобного рода глюк еще в двух ситуациях также с оператором if()

А если хорошо подумать и попытаться понять причину, почему такой глюк только у вас единственного??? Может у вас какой-то специальный терминал?

 
Alexey Viktorov:

А если хорошо подумать и попытаться понять причину, почему такой глюк только у вас единственного??? Может у вас какой-то специальный терминал?

терминал от  InstaForex ничего необычного. Причем появился этот глюк не сразу. Сначала было нормально, а потом вдруг такая незадача. Переустановка терминала не помогла. Надо будет у другого брокера проверить.
 
Amon1953:
терминал от  InstaForex ничего необычного. Причем появился этот глюк не сразу. Сначала было нормально, а потом вдруг такая незадача. Переустановка терминала не помогла. Надо будет у другого брокера проверить.

Да, уж... Намёк морзянкой небыл понят. Придётся открытым текстом...

Может стоит поискать ошибки в логике и своём коде???

 

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

Как то в коде можно "пропустить" этот шаг оптимизации по условию?

 
Alexey Viktorov:

Да, уж... Намёк морзянкой небыл понят. Придётся открытым текстом...

Может стоит поискать ошибки в логике и своём коде???

Этот кусок кода не зависит от общего алгоритма. 

Привожу тот же блок но уже работающий как надо. В нем используется два оператора IF()? хотя можно бы как написано в учебнике обойтись и одним. Это демонстрирует неправильную работу именно оператора IF()/

//+------------------------------------------------------------------+
   if((cnt_OO>=2))
     {
      for(int h=OrdersTotal()-1; h>=0; h--)
        {
         if(OrderSelect(h,SELECT_BY_POS))
           {
            if((OrderMagicNumber()==Magic))
              {
               Nextstep  = NextStep;
               BaseNext  = OrderOpenPrice();
               LotsNext  = NormalizeDouble(OrderLots()*K,lotDigit);
               if(NewPB>0)
                  PBcloseON=true;
               Alert("Pospedny Order NEXT  ",OrderTicket());
               Alert("Otkritih orderov  ",cnt_OO);
               break;
              }
           }
        }
     }
   if((cnt_OO==1))
     {
      LotsNext=NormalizeDouble(Lots*Prikup,lotDigit);
      Alert("Otkritih orderov NEXT net ");
      Alert("Otkritih orderov  ",cnt_OO);
     }
//+------------------------------------------------------------------+
 
Amon1953:

Этот кусок кода не зависит от общего алгоритма. 

Привожу тот же блок но уже работающий как надо. В нем используется два оператора IF()? хотя можно бы как написано в учебнике обойтись и одним. Это демонстрирует неправильную работу именно оператора IF()/


Это демонстрирует только наличие тараканов. Прежде чем говорить о неправильной работе, надо распечатать значения переменных используемых в операторах if() и сравнить с ожидаемыми значениями.

И научитесь вставлять код так, чтобы его можно было нормально читать.

 
Alexey Viktorov:

Это демонстрирует только наличие тараканов. Прежде чем говорить о неправильной работе, надо распечатать значения переменных используемых в операторах if() и сравнить с ожидаемыми значениями.

И научитесь вставлять код так, чтобы его можно было нормально читать.

Я просто скопировал  текст программы. В первом посте явно видно что ордеров 5 а сообщение что нет ордеров типа Next. это второй третий и т д ордер.

Программа простая как гвоздь, cnt_OO это количество открытых ордеров, если их больше одного то  значит есть ордера Next, Это часть блока восстановления параметров при сбоях и рестарте советника

 
Amon1953:

Я просто скопировал  текст программы. В первом посте явно видно что ордеров 5 а сообщение что нет ордеров типа Next. это второй третий и т д ордер.

Программа простая как гвоздь, cnt_OO это количество открытых ордеров, если их больше одного то  значит есть ордера Next, Это часть блока восстановления параметров при сбоях и рестарте советника

Где гарантии что это именно так???

 
Amon1953:

Я просто скопировал  текст программы. В первом посте явно видно что ордеров 5 а сообщение что нет ордеров типа Next. это второй третий и т д ордер.

Программа простая как гвоздь, cnt_OO это количество открытых ордеров, если их больше одного то  значит есть ордера Next, Это часть блока восстановления параметров при сбоях и рестарте советника

  1. Для вставки кода используйте комбинацию Alt+S, или пользуйтесь кнопками панели форматирования вашего сообщения:



  2. Не работает ваша логика, а не условный оператор if()
  3. Я в вашем сообщении исправил код на нормальный для тех, кто вам помогает - уважайте их пожалуйста. В следующий раз люди не будут пытаться помогать, глядя на предложенные вами портянки.
 
Artyom Trishkin:
  1. Для вставки кода используйте комбинацию Alt+S, или пользуйтесь кнопками панели форматирования вашего сообщения:



  2. Не работает ваша логика, а не условный оператор if()
  3. Я в вашем сообщении исправил код на нормальный для тех, кто вам помогает - уважайте их пожалуйста. В следующий раз люди не будут пытаться помогать, глядя на предложенные вами портянки.
Спасибо за совет. Я не очень опытный программист. и использую удобный для меня стиль, приводить к общепринятому на этом сайте я еще не научился. - цейтнот.