程序库: Expert - 页 12

 
如果 "智能交易系统 "要求加载动态链接库,它自己会不会勾选该复选框?似乎与专家模式有关。我没看到界面。我需要自己编辑代码或模板吗?
 
traveller00:
如果 "智能交易系统 "要求加载动态链接库,它自己会不会勾选该复选框?似乎与专家模式有关。我没看到界面。我需要自己编辑代码或模板吗?

上面有使用 DLL 的示例。

 

我想澄清一下参数方法返回代码的语义。现在,当接收到带有模板的字符串时出现错误,该方法会返回 0。

在所有其他情况下,返回值都是字符串:

Res = (int)EXPERT::StringBetween(Str, EXPERT_FLAGS, STRING_END);

即模板中的 expertmode 值,它可以合法地等于 0。EXPERT 在其他项目也是 这样 使用的,尤其是在 Tester 中:

void OnTimerReal()
{
  ...
  if ((this.Symb += BeginTick) && EXPERT::Parameters(0, Params, Names))
  {
    ... открытие рабочего чарта
  }
}

因此,如果该方法返回 0,Tester 将无法工作。为什么?在我看来,如果真实交易标志被重置,并不意味着测试应该被禁止。此外,Tester 在这种情况下也不会做任何事情。

 
Stanislav Korotky:

我想澄清参数方法返回代码的语义。目前,当接收到带有模板的字符串出现错误时,该方法会返回 0。

自首次发布以来,返回值已经发生了变化。因此,从历史上看,返回值并不能说明是否存在错误。

在所有其他情况下,返回值都是一个字符串:

即模板中的专家模式值,该值可以合法地等于 0。在其他项目中,尤其是在 Tester 中,EXPERT 也是 这样 使用的

因此,如果该方法返回 0,Tester 将无法工作。为什么?在我看来,如果真实交易标志被重置,并不意味着禁止测试。尤其是,在这种情况下,测试器不会做任何无声的事情。

根据你引用的代码,如果禁用了自动交易,测试仪确实不会工作。我不记得这是一个错误还是有意为之。很可能是故意这样做的,这样才有可能连接 DLL。


ZЫ 我将不得不更新 "圣经"。与 Sequence 共享有一个很强的转折点。因为只有我需要这个功能,所以更新它不是当务之急。

 

这是唯一一次无限循环检测结构起 作用。

ME      3       15:22:12.123    Message Endless loop:
KS      3       15:22:12.123    Message Expert.mqh
IP      3       15:22:12.123    Message 169
DG      3       15:22:12.123    Message bool EXPERT::TemplateApply(const long,const string&,const bool)
FQ      3       15:22:12.123    Message Condition: !::IsStopped()&&::ChartGetInteger(Chart_ID,CHART_COLOR_STOP_LEVEL,0,Value)&&(!(bool)((int)Value>>24))


此时发生在 Expert.mqh 中。

      while (_CS(!::IsStopped() && ::ChartGetInteger(Chart_ID, CHART_COLOR_STOP_LEVEL, 0, Value) && (!(bool)((int)Value >> 24))))
        ::Sleep(1); // https://www.mql5.com/ru/forum/170952/page190#comment_18830346


我每天都在使用 Expert.mqh,但这是我第一次遇到这种情况。显然,这种情况非常罕见。请记住

 
做得不错,但我想现在它会用默认预设加载专家?如果能为所选专家加载 SET 文件也会很好
 

你好,感谢 EXPER.mqh。

1.使用 EXPERT::Run(....) 打开的 EA 如何激活 "Algo 交易"

2. 我使用的是 2019 版本。有更新的版本吗?

 
upinsa #:

如何为使用 EXPERT::Run(....) 打开的 EA 激活 "自动交易 "功能?

请阅读此内容

2. 我使用的是 2019 版本。有更新的版本吗?

最新版本。


 
static bool GetInputNames( MqlParam &Parameters[], string &InputNames[] )
  {
    const int Size = ::ArraySize(Parameters);
    bool Res = (Size > 1);

    if (Res)
    {
      ::ArrayResize(InputNames, Size - 1);

      for (int i = 1; (i < Size) && Res; i++)
      {
        InputNames[i - 1] = EXPERT::GetInputName(Parameters[i]);
        Res &= (InputNames[i - 1] != NULL);
      }
    }

    return(Res);
  }

输入组"【label1】";

似乎没有考虑到这种情况。当参数为组时,没有特定的值,接收到的值将为空,因此不会接收到组后的参数。

 
hini #:

输入组"【label1】";

似乎没有考虑到这种情况。当参数为组时,没有特定的值,接收到的值将为空,因此不会接收到组后的参数。

如果有问题,请提供准备好的 mq5 文件以便重现。