初学者的问题 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中写的带有OOP元素(CLASSES)的代码是否不能在MQL4终端中运行? 当我试图编译一个包含类的程序时,在调用类的方法 时,我得到了传递参数的错误。 但类本身在4编辑器中编译时没有错误。


 

你好,你能帮忙吗?

我如何将水平指标 的数值转移到我的EA

***

 
Oleg Kolesov:

你好,你能帮忙吗?

如何将指标的 水平线的ID传递给专家顾问

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)将你要复制的数组翻转?