mql5语言的特点、微妙之处以及技巧 - 页 175

 

关于交易、自动交易系统和交易策略测试的论坛

mql5语言的特点、微妙之处以及技巧

fxsaber, 2017.11.30 09:48

备忘录

行动/方案类型 改变TF或符号 账户变更
指标 运行OnDeinit和OnInit,全局类对象改变(完全重置)。 除了prev_calculated被重置外,什么也没有发生。
EA 运行OnDeinit和OnInit,全局类对象没有 变化。 运行OnDeinit和OnInit,全局类对象发生变化(完全重新加载)

你能告诉我如何避免在重新登录时完全重启EA吗(比如手动)?

我不明白为什么重新登录时一切都被重置了。这是个缺陷吗?

 
fxsaber:

它是有效的,但你可以建议正确的宏。

如果你不太关心你的工艺品的质量,那我就更不关心了。

 
Vict:

如果你不太关心你的工艺品的质量,那么我就更不关心了。

这是你写的关于MQL5的功能的地方。

 
fxsaber:

他们在这里写了关于MQL5的特点。

谁说这是一个功能而不是一个僭建?文档中是否有任何信息?在大多数情况下,有必要让编译器自由地进行各种优化。 在实际代码的不同情况下会有什么结果--我不知道,这取决于优化器的心情。我可能也会在crosses中运行这段代码并得到一些结果,那么我是否应该被告知 "看,多么奇特"?

我可以在crosses中运行这段代码,得到一些结果,然后会有人告诉我:"看,有什么奇特之处"?

 
Vict:

谁说这是一个功能而不是一个僭建?码头里有什么信息吗?

这是你写那些不在码头上的东西的地方。否则,这个话题就没有意义了。

 
fxsaber:

这是你写那些不在码头上的东西的地方。否则,这个话题就没有意义了。

如果有开发者的评论,这将是有意义的,但除此之外...

因此,是的,在码头上写着:执行令,--因此,一切似乎都是合法的 但同样的,鉴于pluses中的ub真的很凶猛,我想确保该参考文献确实是指 执行顺序而不是 运算符的关联性

 
fxsaber:

你能告诉我如何避免在重新登录时完全重启EA吗(如手动)?

我不明白为什么重新登录时一切都被重置了。这是个缺陷吗?

我的任务是在重新登录时跳过一些计算,并在改变账户时删除专家顾问。它在一个地方得到了解决。

这就是当我们只是想在账户变更时删除智能顾问时的样子。

string GetGlobalNameAccount( void )
{
  return(::MQLInfoString(MQL_PROGRAM_NAME) + (string)::ChartID() + "_Account");
}

void SaveAccount( void )
{  
  if (!::GlobalVariableSet(GetGlobalNameAccount(), CurrentAccount))
    ::Alert("GlobalVariableSet - ERROR!");
  
  return;
}

int LoadAccount( void )
{
  int Res = 0;
  
  const string Name = GetGlobalNameAccount();
    
  if (::GlobalVariableCheck(Name))
  {
    Res = (int)::GlobalVariableGet(Name);
    
    ::GlobalVariableDel(Name);      
  }
  
  return(Res);
}

const int CurrentAccount = (int)AccountInfoInteger(ACCOUNT_LOGIN);
int PrevAccount = 0;

int OnInit( void )
{
  PrevAccount = LoadAccount();
  
  bool Res = !PrevAccount || (PrevAccount == CurrentAccount);
  
  if (Res)
  {
    // .....
  }
  else
    Alert("Account is changed! " + (string)PrevAccount + " -> " + (string)CurrentAccount);
    
  return(Res ? INIT_SUCCEEDED : INIT_FAILED);
}

void OnDeinit( const int Reason )
{
  if (Reason == REASON_ACCOUNT)
    SaveAccount();
}


MQL5中最简单的任务让我们在颠覆中跳舞。

 
Vladimir Simakov:

如果有开发者的评论,这就说得通了,但除此之外...

因此,是的,文件说:执行命令,--因此,一切似乎都是合法的 但同样的,考虑到在pluses中,它确实是激烈的ub,我想确保帮助的真正含义正是 执行顺序,而不是 运算符的关联性

请不要在这个分支上乱扔垃圾。这个主题是关于MQL5的功能,而不是C++的功能

 
Artyom Trishkin:

请不要在这个分支上乱扔垃圾。这个主题是关于MQL5的特殊性,而不是C++。

这很奇怪,一个在UB上写作,另一个盲目地呼应他。在MCL的帮助下,是否可以这样做。

注:MQL5中操作的优先级对应于 С++,并与MQL4中给出的优先级不同。

而表中所谓的 "执行顺序 "实际上是指 "关联性",对评估的顺序没有影响,在一般情况下,评估的顺序没有被定义。

好吧,别介意,这是个吃力不讨好的任务,这里的每个人都是这样一个该死的专家,所以我不打扰了。

 
Vict:
注意:MQL5中操作的优先级对应于 С++,并与MQL4中给出的优先级 不同。

这很可能只适用于非严格的模式。

数百人在这里写跨平台的东西已经很多年了。