错误、漏洞、问题 - 页 676

 

Costy_

在初始化失败后试图重新初始化,并进入一个无限循环?

我在Oninite中初始化与程序全局相关的变量(为变量赋值)。能够使用非零返回代码使我能够打印出失败的原因,并以一种合适的方式停止程序(即通过OnDeinit 停止)。这是很令人满意的。

 

不是永久的,直到成功完成initio.poiticovo(作为一个指标)警告在帮助。

你是否在初始化之后检查 glob.变量,看它们是否被正确初始化了?

如果初始化失败,你想再试着初始化它们几次吗?

 

感谢那些回应的人。这段代码原来是多币种EA 的一个切面--发现测试人员不想吃它。

新的细节:下降只发生在2011年3月7-8日,只在阿尔法外汇上发生。

 

costy_

 Не вечный, до удачного завершения иниц. потиково (т.к. индикатор) предупредив в справке.

显然,我不明白你的意图,即我不明白什么是 "在Oninit()po-tikovo的初始化",什么是" 在Oninit()po-tikovo的成功 初始化"。

你是否在初始化后检查全局变量以确保它们被正确初始化?

另一个对我来说是新的概念:"在初始化后检查程序的全局变量,看是否与初始化一致"。

但我可以回答这个问题。为程序的全局变量(如句柄)赋值的成功检查发生在Oninit()函数中。在失败的情况下,如果有必要,我会在那里(在Oninit)运行最后的循环。在Oninit()内给变量赋值时,如果最终失败,我就向打印机发送一条信息。然后,我要么在代码中找到我的错误,要么在论坛上报告它。

我没有在Oninit()函数终止后检查 "初始化匹配 "类型,因为当Oninit()函数成功终止时,它就没有意义。

你的例子呢:在那里声明了一个局部变量 bool err。你是否打算以某种方式初始化Oninit()函数的局部变量?

如果它们失败了,你想再试着初始化它们几次吗?

我一直在Oninit()函数中这样做,直到它终止。

让我补充一下。在这个问题上,我所说的 "初始化 "是指在Oninit函数中为全局变量赋值(即使用俚语)。我添加它是因为客户终端在发送Init事件之前就开始自己的全局变量初始化过程。

 

ilunga

事实上,更好的代码和测试条件都在服务台。

 

trali_vali_for_indicator() 函数中同步多个MqlRates EURUSD[],AUDUSD[],GBPUSD[],NZDUSD[],USDCAD[],USDCHF[],USDJPY[]。

没有办法在第一次尝试时就做到这一点,理论上一旦同步,就会出现xxxxx[0].time == yyyyy[0].time== ..... 的示范性结构。zzzzzzzz[0]进一步按时间同步>xxxxxxx[0].时间

我创建了我的init()函数,但这是关于OnInit()的!

如果OnInit()失败,那么启动将不会发生(如果启动器不能启动>>用手转动曲轴),那么用户需要或者

  • 指标列表 >> 重新启动指标。
  • 撤除个体,>>连接个体。
  • 呼吁支持 >>
  • 其他

在ticko上是>>" 成功地完成f。OnInit()产生一个原因代码为REASON_INITFAILEDDeinit 事件"+,随后在下一个tick上重新初始化,直到成功重新初始化。+

(如果指标无论如何都会显示刺猬,为什么要做中断--脱机)。

这倒是一个给开发者的问题...

 
abolk:
在论坛上无法操作 "回复 "按钮的问题怎么办?他们会修复它吗?来自支持的某种沉默。至少要有 "做/不做 "这样的保证。
修正了,感谢每个人的关注。
 

costy_:

我可以看到这一切。 我自己避免了同步的问题,所以我不能给你任何建议。但这个问题本身已经在论坛上讨论过很多次了。用关键词搜索来查找。

 
Yedelkin:

我可以看到这一切。 我自己避免了同步的问题,所以我不能给你任何建议。但这个问题本身已经在论坛上讨论过很多次了。寻找关键词搜索。

谢谢你,我再看看。

 

你好,请问你能不能给我建议?

我正试图为交易模块添加一个ADX指标。我想做一个两条移动平均线 的信号,并由ADX确认。我从另一个模块复制了这段代码,在原始版本中,一切都自然而然地工作,我从这个网站下载的,代码本身不应该发出错误。

//+------------------------------------------------------------------+
//| Create ADX indicator.                                            |
//| INPUT:  indicators -pointer of indicator collection.             |
//| OUTPUT: true-if successful, false otherwise.                     |
//| REMARK: no.                                                      |
//+------------------------------------------------------------------+
bool CSignalMY_MA_ADX::InitADX(CIndicators* indicators)
  {
//--- create ADX indicator
   if(m_ADX==NULL)
      if((m_ADX=new CiADX)==NULL)
        {
         printf(__FUNCTION__+": error creating object of the ADX");
         return(false);
        }
//--- add ADX indicator to collection
   if(!indicators.Add(m_ADX))
     {
      printf(__FUNCTION__+": error adding object of the ADX");
      delete m_ADX;
      return(false);
     }
//--- initialize ADX indicator
   if(!m_ADX.Create(m_symbol.Name(),m_period,m_period_ADX))
     {
      printf(__FUNCTION__+": error initializing object of the ADX");
      return(false);
     }
//--- ok
   return(true);
  }

但我一定是做错了什么,得到了这样的错误。

'=='- 非法操作使用 SignalADX-MA.mqh 183 12

'CiADX' - 类型不匹配 SignalADX-MA.mqh 184 21

'=' - 非法操作使用 SignalADX-MA.mqh 184 16

'm_ADX' - 参数转换不允许 SignalADX-MA.mqh 190 23

'm_ADX' - 对象指针预期 SignalADX-MA.mqh 193 14

请帮助我,我将非常感激。如果你需要,我可以把文件附在这里,不要介意它很乱,我只是在学习,整个过程包括我为EA剪切和粘贴回一些不同的交易模块。