文章 "MQL5 中如何调用指标"

 

新文章 MQL5 中如何调用指标已发布:

推出新版本后,MQL 编程语言不仅提供处理那些已变更指标的方法,还提供如何创建指标的新途径。而且,您还具备了使用指标缓冲区的更多灵活性 - 现在,您可以指定目标索引方向,并可完全如您所愿地获取多个指标值。本文讲述的是调用指标的基本方法,以及通过指标缓冲区检索数据。

MQL5 中调用指标的方式有几种, 而且大都是利用 IndicatorCreate() 和 iCustom() 函数执行的。此外,这些函数只会返回指标句柄,再通过它来完成指标相关的进一步工作。那么,什么是句柄呢?如何处理 IndicatorCreate()iCustom() 函数?您的“EA 交易”又会如何获取指标数据?所有这些问题,本文都有涉及。

作者:KlimMalgin

 
非常感谢。
 

好 ++

谢谢。

 

请解释一下。

在 "使用IndicatorCreate() 获取指标句柄 "中

创建数组

MqlParam params[];      // 用于存储指标参数的数组

不指定类型,然后根据需要更改数组类型。

它是如何工作的?它可以用于任何结构,还是只能用于这个结构?是否可以只更改现有数组的类型?

 
只有在创建句柄时,函数 IndicatorCreate() 才需要 MqlParam 类型的参数数组。如果要更改某些内容,需要使用IndicatorRelease"杀死 "当前句柄,然后创建一个新句柄。不提供移动中的 "引擎变化 "指标。
 

但在文章的正文

   ***
   // 设置慢速 MA 的周期
   params[0].type         =TYPE_INT;
   params[0].integer_value=21;
   ***

及其后面。

   ***
   ArrayResize(params,2);
   // 步骤
   params[0].type         =TYPE_DOUBLE;
   params[0].double_value = 0.02;
   ***
没有删除任何内容,类型发生了变化.....。
 
让我们从餐饮业的角度来看。服务员将菜肴放在托盘上,然后将您点的菜端给您。然后,他把另一位顾客的食物放在同一个托盘上,再把你点的菜端给他。这是否意味着你和另一位顾客吃的是同样的饭菜?
 

所以,不同的晚餐只能放在服务员的托盘上。好吧,我来做个实验。

有没有计划使用混合类型的数组,比如 [int][double]?

 
Silent:

所以,不同的晚餐只能放在服务员的托盘上。好吧,我来做个实验。

没有混合类型数组(如 [int][double])的计划吗?

请使用结构体,参见帮助中的示例 -https://www.mql5.com/ru/docs/basis/types/casting#casting_structure:

另一个示例展示了如何组织自己的函数,从颜色类型中获取 RGB(红、绿、蓝)颜色 表示法。为此,我们创建了两个大小相同但内部组成不同的 结构。为了方便起见,我们在结构上添加一个函数,以字符串形式返回 RGB 颜色表示法。

#property script_show_inputs
input color          testColor=clrBlue;// 为测试设置颜色
//--- RGB 颜色表示结构
struct RGB
  {
   uchar             blue;          // 蓝色部分
   uchar             green;         // 绿色部分
   uchar             red;           // 红色部分
   uchar             empty;         // 该字节未被使用
   string            toString();    // 接收字符串的函数
  };
//--- 以字符串形式输出颜色的函数
string RGB::toString(void)
  {
   string out="("+(string)red+":"+(string)green+":"+(string)blue+")";
   return out;
  }
//--- 用于存储内置类型颜色的结构 
struct builtColor
  {
   color             c;
  };
//+------------------------------------------------------------------+
//| 脚本程序启动功能|
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 以 RGB 保存的变量
   RGB colorRGB;
//--- 用于存储颜色类型的变量
   builtColor test;
   test.c=testColor;
//--- 通过复制两个结构的内容来转换它们
   colorRGB=test;
   Print("color ",test.c," = ",colorRGB.toString());
//---
  }

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
Rosh:

使用结构,请参见帮助中的示例 -https://www.mql5.com/ru/docs/basis/types/casting#casting_structure:

我或多或少了解结构,但我对数组感兴趣。

谢谢。

 
Silent:

我对结构大致了解,但对数组很感兴趣。

谢谢。

请制作一个结构并键入该类型的数组。