Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1304

 
Николай К:

Подскажите пжлст. Вот эта запись:

var1=(var<10)?1:0;

Что она значит, как ее интерпретировать, варианты применения. Параметры.

Читайте документацию.

Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
  • www.mql5.com
Условный оператор ?: - Операторы - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Николай К:

Подскажите пжлст. Вот эта запись:

var1=(var<10)?1:0;

Что она значит, как ее интерпретировать, варианты применения. Параметры.

Если var<10 = true , то var1 = 1
иначе var1 = 0;

 

Привет! ! !   Подскажите пожалуйста, код написанный на MQL5 с элементами ООП (КЛАССАМИ) В Терминале MQL4  Не будет работать?  При попытке скомпилировать прогу с включенными а неё классами, сыпет ошибками по передаваемым параметрам при вызове методов класса .  Но сам класс компилируется в 4 редакторе без ошибок.


 

Здравствуйте. Окажите помощь! 

Как передать значение горизонтальных уровней индикатора в советник?

***

 
Oleg Kolesov:

Здравствуйте. Окажите помощь! 

Как передать значение идентификатора горизонтальных уровней индикатора в советник?

Хендл индикатора в MQL5 ДОЛЖЕН создаваться в OnInit - и создаётся он таким образом ОДИН раз. Это первое, что Вам нужно исправить.

 
Владимир. Создан в OnInit(). Советник видит индикатор. При визуализации правильно передает параметры, рисует. Торговать не хочет?
 
Oleg Kolesov:
Владимир. Создан в OnInit(). Советник видит индикатор. При визуализации правильно передает параметры, рисует. Торговать не хочет?

Вставляйте код правильно.

 
//+------------------------------------------------------------------+
//|  Настраиваемые параметры                                         |
//+------------------------------------------------------------------+
input string Expert_Title="Exp_Tangents2";                        // The name of the EA
input int Period1=29;                                             // Period1
input int Period2=145;                                            // Period2
input int Period3=609;                                            // Period3
input double level1=46.0;                                         //                                    
input double level2=22.0;                                         //
input double level3=0.0;                                          //
input double level4=-22.0;                                        //
input double level5=-46.0;                                        //
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
// получаем хэндл индикатора Tangents
   HLHandle=iCustom(NULL,0,"Examples\\Tangents2",Period1,Period2,
                      Period3,level1,level2,level3,level4,level5);
// если хэндл неверный
   if(HLHandle<0)
     {
      Alert("Ошибка создания хэнла индикатора Tangents2 - ошибка: ",GetLastError(),"!!");
      return(-1);
     }
   }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//+---------------------------------------------------------------------+
//| Копируем значения индикаторов в массивы, используя хэндлы индикатора
//+---------------------------------------------------------------------+
   if(CopyBuffer(HLHandle,0,0,3,L1)<0 || CopyBuffer(HLHandle,1,0,3,L2)<0
      || CopyBuffer(HLHandle,2,0,3,L3)<0)
     {
      Alert("Ошибка копирования буферов хэндла индикатора Tangents2 - ошибка:",GetLastError(),"!!");
      return;
     }
  }
//+------------------------------------------------------------------+
//|  Проверяет условия на покупку                                    |
//+------------------------------------------------------------------+
bool checkBuy()
  {
   bool dobuy = false;
   if(L2[2]<level1 && L2[1]>level1 && L3[2]<level1 && L3[1]>level1 && (L1[1]>level1 || L1[1]<level5))
           {
            dobuy = true;
           }
   return(dobuy);
  }
 
Oleg Kolesov:

Зачем два раза что-то копировать из буфера '0'?

 
Oleg Kolesov:

Массивы в которые копируете не забыли перевернуть при помощи ArraySetAsSeries(***,true) ?

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