新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 512

 
我怎样才能与之合作呢?我已经在这里坐了两天了,什么都没有。还能有什么其他解决办法呢?
 
OnCalculate(...)处理程序中,缓冲区常量open,high,low,close每次都会溢出整个历史记录,我应该怎么做?例如,我想计算数组mas[i]=open[i]/close[i]的值,用于计算一对的整个历史,并将此值与另一个字符平均。 我搜索了很多主题,没有太多的类似内容。你能告诉我去哪里找吗?
 
Juer:
我怎样才能与之合作呢?我已经在这里坐了两天了,什么都没有。还能有什么其他解决办法呢?

而你在哪里展示了一个可重复的例子?你只是给了我们一些代码的碎片。我们是否必须酌情将它们编译成工作代码?如果我们没有猜到,你需要的是错误的呢?

 
Artyom Trishkin:

而你在哪里展示了一个可重复的例子?你只给出代码的碎片。我们必须酌情将它们链接到工作代码中吗?如果我们没有猜到,而你需要错误的东西呢?

好的,但是如何不通过结构数组,而是通过CArrayObj类来 正确地做到这一点,其中的对象将是一个结构类型的对象?我不太明白如何声明,如何添加,这是否可能?

 
Juer:

好的,但是如何不通过结构数组,而是通过CArrayObj类来 正确地做到这一点,其中对象将是一个结构类型的对象?我不太明白如何声明,如何添加,这是否可能?

尽量笼统地描述问题,而不是具体问题--你想通过拥有这个或那个数据而得到什么结果。

 
mwwm:
在OnCalculate(...)处理程序中,缓冲区常量open,high,low,close每次都会溢出 整个历史记录,我应该怎么做?例如,我想计算数组mas[i]=open[i]/close[i]的值,用于计算一对的整个历史,并将此值与另一个字符平均。 我搜索了很多主题,没有太多的类似内容。你能告诉我去哪里找吗?
你说的溢出 是什么意思?
 
Дед пенсионер:
溢出 是什么意思?

XAUUSD,日线:排列在'!2019年的范围之外。mq4'(243,6)在通过OnCalculate 中的常数进行计算时,以及CopyOpen'--当我试图像这样做时,没有一个重载可以应用于函数调用 int prices1=CopyOpen(Symbol(),0,0,Bars(_Symbol,_Period),open)。通过结构来组织对数据的访问是非常混乱的,在什么时候,OHLC会接受所有的报价,然后只接受新的报价,我被卡在iOpen(,,,))


 
Juer:

所以错误的无效数组访问。

结构中没有数组或字符串。只有bool、integer、double和enums。

我很抱歉。我有点傻眼了。当然,它将不得不更复杂一点。

bool CCandleRule::GetRulesArray(input_rule &rules_array[])
{
   int nArraySize = ArraySize(rules);
   if (ArraySize(rules_array) != nArraySize)
      if (ArrayResize(rules_array, nArraySize) != nArraySize)
         return false;

   for (int i = 0; i < nArraySize; ++i)
      rules_array[i] = rules[i];
      
   return true;
}

它不是一个矢量,像C++中那样。这就是为什么需要逐个元素复制的原因。此外,我们还必须注意匹配原始数组和目标数组的大小。这就是为什么该功能不在一行中。而且并不总是能成功执行。这就是为什么我们需要返回它被成功执行的确认。

 
mwwm:

XAUUSD,日线:排列在'!2019年的范围之外。mq4'(243,6)在通过OnCalculate 中的常数进行计算时,以及CopyOpen'--当我试图像这样做时,没有一个重载可以应用于函数调用 int prices1=CopyOpen(Symbol(),0,0,Bars(_Symbol,_Period),open)。通过结构来组织对数据的访问是非常混乱的,在什么时候OHLC采取所有的报价,然后只采取新的报价,卡在iOpen(,,,))


并没有覆盖,而且你在访问一个不存在的索引。
 
Artyom Trishkin:
它没有覆盖,而且你正在处理一个不存在的索引。

以及如何正确操作?

原因: