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

 

Всем привет. Подскажите куда писать по поводу бага в MT5 после обновления двухнедельной давности.


Суть в следующем. При открытых позициях и наводе мышкой на SL и TP не отображается окошко с данными (окошко которое показывает факт SL и TP ) или открывается очень медленно. Пробовал на нескольких компбютерах на разных счетах. Это происходит только при установленном советнике более чем в одном окне терминала. Раньше такой проблемы не было.

Metaquotes как всегда на почту не отвечает, брокер тоже все валит на metaquotes.

Файлы:
 
Artyom Trishkin:

Create a new global variable. Set the value of the input parameter Inp_element_2542795 to it:

and replace the entire entry of the string Inp_element_2542795 with this new variable g_element_2542795 using Ctrl + H

Still the question remains the same. The EA is working on its own. I am not getting the point where this global variable will help. I tried changing it but the 400 remains the same. I tried changing to 200, it is constant to 200. But I want that the EA should be able to decide what point should get applied.

 
jaffer wilson :

Still the question remains the same. The EA is working on its own. I am not getting the point where this global variable will help. I tried changing it but the 400 remains the same. I tried changing to 200, it is constant to 200. But I want that the EA should be able to decide what point should get applied.

If you want the adviser to change a variable, then it should change the g_element_2542795 variable. It gets the value of the variable Inp_element_2542795 upon initialization, and then in the adviser you can change it as you like.

 

Почему так не работает?

int massiv[OrdersTotal()];
 
igrok333:

Почему так не работает?

Страуструп с Ритчи так захотели.
 
igrok333:

Почему так не работает?

Было-бы удивительно, если-бы работало.

 
igrok333:

Почему так не работает?

Через arrayresize сработает
 

Прошу помощи, только начинаю...
Как сделать определение размера лота в зависимости от условий? Написал вот это но что-то не работает.

double lot()
  {
   if((Ask <= L0a3) || (Ask <= L2a3) || (Ask <= L5a3) || (Ask <= L8a3) || (Bid >= L0b1) || (Bid > = L2b1) ||
      (Bid >= L5b1) || (Bid >= L8b1))
      lot=(NormalizeDouble(Lots, 2));

   if((Ask <= L0a) || (Ask <= L2a) || (Ask <= L5a) || (Ask <= L8a) || (Bid >= L0b) || (Bid >= L2b) ||
      (Bid >= L5b) || (Bid > = L8b))
      lot=(NormalizeDouble((Lots*1.5), 2));

   if((Ask <= L0a1) || (Ask <= L2a1) || (Ask <= L5a1) || (Ask <= L8a1) || (Bid >= L0b3) ||
      (Bid >= L2b3) || (Bid >= L5b3) || (Bid >= L8b3))
      lot=(NormalizeDouble((Lots*2.5), 2));
      return lot;
  }

 
wolder1:

Прошу помощи, только начинаю...
Как сделать определение размера лота в зависимости от условий? Написал вот это но что-то не работает.

double lot()
  {
   if((Ask <= L0a3) || (Ask <= L2a3) || (Ask <= L5a3) || (Ask <= L8a3) || (Bid >= L0b1) || (Bid > = L2b1) ||
      (Bid >= L5b1) || (Bid >= L8b1))
      lot=(NormalizeDouble(Lots, 2));

   if((Ask <= L0a) || (Ask <= L2a) || (Ask <= L5a) || (Ask <= L8a) || (Bid >= L0b) || (Bid >= L2b) ||
      (Bid >= L5b) || (Bid > = L8b))
      lot=(NormalizeDouble((Lots*1.5), 2));

   if((Ask <= L0a1) || (Ask <= L2a1) || (Ask <= L5a1) || (Ask <= L8a1) || (Bid >= L0b3) ||
      (Bid >= L2b3) || (Bid >= L5b3) || (Bid >= L8b3))
      lot=(NormalizeDouble((Lots*2.5), 2));
      return lot;
  }

у  вас возникла путаница в переменных и функциях, если это функция, попробуйте так: 

код вставляйте через ALT + S

double _LOTS()
  {
   double lot=0;
   if((Ask <= L0a3) || (Ask <= L2a3) || (Ask <= L5a3) || (Ask <= L8a3) || (Bid >= L0b1) || (Bid > = L2b1) ||
      (Bid >= L5b1) || (Bid >= L8b1))
      {
       lot=(NormalizeDouble(Lots, 2));
       Print(" lot = ", lot); 
       return(lot);
      }
      
    if((Ask <= L0a) || (Ask <= L2a) || (Ask <= L5a) || (Ask <= L8a) || (Bid >= L0b) || (Bid >= L2b) ||
      (Bid >= L5b) || (Bid > = L8b))
      {
       lot=(NormalizeDouble((Lots*1.5), 2));
       Print(" lot = ", lot); 
       return(lot);
      }
     
    

   if((Ask <= L0a1) || (Ask <= L2a1) || (Ask <= L5a1) || (Ask <= L8a1) || (Bid >= L0b3) ||
      (Bid >= L2b3) || (Bid >= L5b3) || (Bid >= L8b3))      
      {
       lot=(NormalizeDouble((Lots*2.5), 2));
       Print(" lot = ", lot); 
       return(lot);
      }
  } 
 
Простой вопрос. Не компилируется сова. В конце кода есть ошибика.          + __FUNCSIG__
      + ": "+Market_Err_To_Str(errIndex)
      + "; order ticket = " + (string)OrderTicket()
      + "; order type = " + (string)OrderType()
      + "; order Stop Loss = " + DoubleToStr(OrderStopLoss(), Digits())
      + "; new Stop Loss = " + DoubleToStr(newStopLoss, Digits())
      + "; Bid = " + DoubleToStr(Bid, Digits())
      + "; Ask = " + DoubleToStr(Ask, Digits())
         );  
}
}
  lastSetNonlosTryTime = TimeLocal();
}


Выдает ошибку при компиляции. Прошу помочь если не трудно. Спасибо!

Причина обращения: