程序库: Expert - 页 10

 

不直观的是,参数数组和名称数组的返回值大小不同,因为名称数组中没有代表智能交易系统名称的空参数。

此外,我还想知道参数的真实类型,现在到处都返回 "字符串"。我不知道如何提供这种信息--正面方法:分析字符串的内容及其还原为浮点数 或整数的可能性,但如果参数存储的是 "0",则无法确定其类型。

 
Stanislav Korotky:

不直观的是,参数数组和名称数组返回的大小不同,因为名称数组缺少一个代表智能顾问名称的空参数。

是的,这不太好。也许我们应该为 Names[] 制作一个假的 null 元素。

此外,我还想知道参数的真实类型,现在 "string"(字符串)在任何地方都会返回。我不知道如何提供这种信息--一种方法是分析字符串的内容及其与浮点数或整数的还原性,但如果参数存储的是 "0",则无法识别其类型。

我认为在库中没有必要这样做,因为还有自定义 ENUM。此外,我也没有发现有必要这样做的任务。

我正在制作自己的自动优化程序。它在那里没有用处。

 
fxsaber:

是的,这不太好。也许你应该为 Names[] 制作一个假的 null 元素。

我认为在库中没有必要,因为还有自定义 ENUM。此外,我也没有发现有必要这样做的任务。

我正在制作自己的自动优化器。它在那里没有用处。

ParameterGetRange/ParameterSetRange 函数只为long 和 double类型定义,因此参数循环只需要分析和更改数字的设置。

 
Stanislav Korotky:

ParameterGetRange/ParameterSetRange 函数仅分别为long 和 double类型定义,参数循环只需要分析和更改数字的设置。

整数类型 有 bool 和 enums。

 
fxsaber:

整数类型 有 bool、枚举。

这很正常。不正常的是,现在所有东西都用字符串表示,无法筛选出真正的字符串。

 
Stanislav Korotky:

这很正常。不正常的是,现在所有东西都用字符串表示,而你却无法筛选出真正的字符串。

需要优化的参数事先都是数字。所以其中肯定没有字符串。所以你可以把它当作一个过滤器。

 

你好,我不知道如何在专家版上打开授权交易

这段代码在我输入输入信息后可以正常打开。

   Params[0].string_value = "Experts\\Shared Projects\\luipaulo89\\experts\\PullbackEA_v2.ex5";
// 专家顾问的第一个输入参数
   Params[1].type = TYPE_STRING;
   Params[1].string_value = "Hello World!";
   Params[2].type = TYPE_INT;
   Params[2].integer_value = 0;
// 在新图表上运行智能交易系统
   if (inpFirst==1) EXPERT::Run(ChartOpen(_Symbol, _Period), Params);

如果我使用此代码

   Params[0].string_value = "Experts\\Shared Projects\\luipaulo89\\experts\\PullbackEA_v2.ex5";
   Params[0].string_value += "\nexpertmode=5";
// 专家顾问的第一个输入参数
   Params[1].type = TYPE_STRING;
   Params[1].string_value = "Hello World!";
   Params[2].type = TYPE_INT;
   Params[2].integer_value = 0;
// 在新图表上运行智能交易系统
   if (inpFirst==1) EXPERT::Run(ChartOpen(_Symbol, _Period), Params);

就能打开允许的交易,但不传递参数。

任务是在新图表上打开同一个智能交易系统。

input group "EA Settings"
input int inpFirst = 1;//first instance;

为了只让第一个智能交易系统打开新图表,我将 0 传递给新图表,但不幸的是,在第二个变量中(允许交易时)没有传递参数(或传递错误)。

inpFirst = 0;
 

在 tpl 文件中,头文件的创建非常完美,但由于某些原因,它没有传递参数

<expert>
name=PullbackEA_v2
path=Experts\Shared Projects\luipaulo89\experts\PullbackEA_v2.ex5
expertmode=5
<inputs>
inpFirst=1

预计为 inpFirst=0

   Params[1].type = TYPE_INT;
   Params[1].integer_value = 0;
 
Aleksei Beliakov:

更新资料库。

测试智能顾问。

input group "EA Settings"
input int inpFirst = 1;//first instance;

void OnInit() {}


示例 1.

#include <fxsaber\Expert.mqh>

void OnStart()
{
  MqlParam Params[3];

  // 辅导员之路
  Params[0].string_value = "Experts\\Test6.ex5";
  Params[0].string_value += "\nexpertmode=5";

  // 输入组 "EA 设置"
  Params[1].type = TYPE_STRING;
  Params[1].string_value = NULL;

  // 输入 int inpFirst
  Params[2].type = TYPE_INT;
  Params[2].integer_value = 123;

  EXPERT::Run(ChartOpen(_Symbol, PERIOD_CURRENT), Params); // 将无法在自己的图表上正确运行智能交易系统
}



#include <fxsaber\Expert.mqh>

void OnStart()
{
  MqlParam Params[3];

  // 辅导员之路
  Params[0].string_value = "Experts\\Test6.ex5";
  Params[0].string_value += "\nexpertmode=5";
  
  // 输入组 "EA 设置"
  Params[1].type = TYPE_STRING;
  Params[1].string_value = NULL;
  EXPERT::AddInputName(Params[1], " "); // Probl.

  // 输入 int inpFirst
  Params[2].type = TYPE_INT;
  Params[2].integer_value = 123;
  EXPERT::AddInputName(Params[2], "inpFirst");

  EXPERT::Run(0, Params); // 将能在自己的图表上正确运行 Expert Advisor。
}
 
谢谢你们,你们一如既往是最棒的