错误、漏洞、问题 - 页 548

 
ivandurak:

晚安.我刚刚开始好好地看了看。这似乎是一个明显的错误。我引用了下面的代码,如果我对一行进行评论(它被标记了),它似乎可以工作,问题是什么--我不明白。我在文档中没有找到关于这个问题的任何内容。

你没有分配Raznica 阵列。它被声明了,但它没有被分配内存,同时它也不是一个指示器缓冲区(缓冲区的内存被自动分配)。

在这里。

   SetIndexBuffer(0,BaseMaBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,MaForMaBuffer,INDICATOR_DATA);

你告诉编译器,数组BaseMaBuffer和MaForMaBuffer是指标缓冲区。其他数组应通过以下方式分配

ArrayResize()
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
 
ivandurak:

晚安.我刚刚开始研究这个问题。这似乎是一个明显的错误。我引用了下面的代码,如果我对下面的一行进行评论(它被标记了),那么它似乎可以工作 - 我不明白问题出在哪里。这种情况可以通过为Raznica[]数组指定一个明确的大小来避免。我在文件中没有找到关于这个问题的任何内容。

这没有什么错误,你应该使用 "动态数组 "来指定动态数组的大小。

int  ArrayResize(
   void  array[],              // массив, переданный по ссылке
   int   new_size,             // новый размер массива
   int   reserve_size=0        // резервное значение размера (избыточное)
   );

该函数只能应用于动态数组,但你应该记住,由SetIndexBuffer() 函数分配为指标缓冲区的动态数组不能被调整大小。对于指示器缓冲区,所有调整大小的操作都由终端的执行子系统执行。


 
我知道了,谢谢你的聪明的屁股打法。另一个问题,如果一个数组被调整大小,数据会发生什么?还有,只有动态数组 可以像时间序列那样改变索引方向?
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 
ivandurak:
我知道了,谢谢你的聪明的屁股打法。另一个问题,如果阵列被调整大小,数据会发生什么?在动态数组 中,是否有可能像时间序列那样改变索引方向?

数据将保持在原位,如果你减少后再恢复,就不确定了(结果未定)。

通过索引方向的方式,只改变了索引参考,数组的分布方向是一样的。

也就是说,数据不能通过重新划分阵列而被转移。

 

这一点已经被报告过了,但测试人员一直在重置用户定义的初始存款值,即1万美元。

可用的一组初始值是相当歪的。将至少增加1000美元。

建立523

赢利

 
是像这样,还是有什么东西坏了......。一般来说,允许在非后继者中自由访问被保护的方法
#include <Arrays/List.mqh>
//---------------------------------------
class CBasket;

class CFruit: public CObject {
private:
        double _weight;
protected:
        double GetWeight(){return _weight;}     
public:
        CFruit(double weight){_weight = weight;};
        ~CFruit(){};
};
//---------------------------------------
class CBasket {
private:
        CList _fruits;
protected:
public:
        CBasket(){};
        ~CBasket(){};
        double Weight() {
                double weight = 0;
                for(CFruit* f = _fruits.GetFirstNode(); f != NULL; f = _fruits.GetNextNode()) {
                        weight += f.GetWeight(); //свободный вызов protected метода другого класса
                }
                return weight;
        }
        
        void Attach(CFruit* f) {
                _fruits.Add(f);
        }
};
//---------------------------------------
int OnInit() {
        CBasket* b = new CBasket();
        
        CFruit* f1 = new CFruit(3.5);
        CFruit* f2 = new CFruit(6.5);
        b.Attach(f1);
        b.Attach(f2);
        Print(b.Weight());
      
   return(0);
}
//---------------------------------------
 

优化后,结果文件 无法打开

Build 527 + Office 2007

错误日志包含以下数据


"表 "中的XML错误
原因:错误的数值。
文件:C:\Users\Dragon\Desktop\ReportOptimizer-957640.xml
组:细胞
标签: 数据
Значение: 179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000

表 "中的XML错误。
原因:错误的数值
文件:C:\Users\Dragon\Desktop\ReportOptimizer-957640.xml
组:细胞
标签: 数据
Значение: 179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000

表 "中的XML错误。
原因:错误的数值
文件:C:\Users\Dragon\Desktop\ReportOptimizer-957640.xml
组:细胞
标签: 数据
Значение: 179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000

表 "中的XML错误。
原因:错误的数值
文件:C:\Users\Dragon\Desktop\ReportOptimizer-957640.xml
组:细胞
标签: 数据
Значение: 179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000

表 "中的XML错误。
原因:错误的数值
文件:C:\Users\Dragon\Desktop\ReportOptimizer-957640.xml
组:细胞
标签: 数据
Значение: 179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000

等。

 

我认为你得到的是一个空值。

你可以阅读

https://www.mql5.com/ru/docs/constants/namedconstants/otherconstants

EMPTY_VALUE

指标缓冲区中的空值

DBL_MAX

DBL_MAX

可以用双倍类型表示的最大值

1.7976931348623158e+308

Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы - Документация по MQL5
 
Vigor:
是像这样,还是有什么东西坏了......。总之,允许在非后继者中自由访问被保护的方法

谢谢你的帖子,错误已经修复,修复后将进入下一个版本。
 
Karlson:

我认为你得到的是一个空值。

你可以阅读

https://www.mql5.com/ru/docs/constants/namedconstants/otherconstants

EMPTY_VALUE

指标缓冲区中的空值

DBL_MAX

DBL_MAX

可以用双倍类型表示的最大值

1.7976931348623158e+308

而空值怎么会进入文件?在测试器窗口中,有正常的优化结果。