错误、漏洞、问题 - 页 645

 

大家好!

请帮助一个新手了解类中数组的使用。将钥匙密码切成一小块,代表问题。

class base
{
protected:
int Stf_ZZ_Handle;
double Stf_ZZ_Val[];
public:
void InitArray()
  {
   Stf_ZZ_Handle=iCustom(_Symbol,_Period,"Examples\\ZigZag",12,0,0);
   ArraySetAsSeries(Stf_ZZ_Val,true);
   CopyBuffer(Stf_ZZ_Handle,0,0,200,Stf_ZZ_Val);
   Print("array[0]= ",Stf_ZZ_Val[0]);
  }
};
class second : public base
  {
    public:
    void Printer() {Print("array[0]= ",Stf_ZZ_Val[0]);}
  };
int OnInit()
  {
//---
base Cbase;
second Csecond;
Cbase.InitArray();
Csecond.Printer();
//---
   return(0);
  }

当执行时得到一个错误Array out of range在继承类的字符串中,在父类中我得到预期的0。

2012.02.13 00:41:25 2011.01.01 00:00:00 在'test1.mq5'中阵列超出范围 (29,36)
2012.02.13 00:41:25 2011.01.01 00:00:00 array[0]= 0.0

   void Printer() {Print("array[0]= ",Stf_ZZ_Val[0]);}

我明白,我不正确地将数组传递(或寻址)给继承者类,尽管对于正常的变量,这样的处理没有错误。

我做错了什么?

 

我最近在运行*.mq5 文件时经常看到这个消息。

可能是什么问题?

 
Radix:

大家好!

base Cbase;
second Csecond;
Cbase.InitArray();
Csecond.Printer();

我做错了什么?

看,当你在第二行声明 "second Csecond; "时,InitArray()方法没有被调用,对吗?同时,Csecond对象本身已经被创建。 因此,事实证明,当你调用 "Csecond.Printer();",它指的是未初始化的非维数组Stf_ZZ_Val[]。

 
请您告诉我,测试时是否取消了从开始日期开始的1000条可用历史记录的限制(如MT4)?
 
muallch:

请告诉我,在测试过程中,是否取消了从开始日期开始的1000条可用历史记录的限制(像在MT4中)?

解释一下你的意思是什么?

在Five中,数据是从测试开始的前一年加载的。因此,如果你从2012.02.01开始测试,数据将从2011.01.01加载。

唯一的例外是在日、周和月上的测试--那里的数据开始是根据在测试开始前有100个柱子的需要来计算的。

 
stringo:

解释一下你的意思。

当从例如2011.01.01开始运行样片 时,我们需要至少3000条的历史。因此,我们必须在明知的情况下设置一个比测试所需更长的时间,并以编程方式追踪 "起始点"。在测试过程中,提供整个病史(或根据要求)的难度是什么?
 
还有一个问题是,不是在测试中,而是在真正的自动交易中,是否有历史记录。在这种情况下,我们应该怎么做?测试者可以被超越...
 
muallch:
当运行时,例如从2011.01.01开始的每日数据,我们需要一个至少有3000条的历史。换句话说,我们必须在明知的情况下设置一个更长的时间,比我们测试所需的时间更长,并以编程方式跟踪 "起点"。在测试过程中,提供全部病史(或根据要求)的难度是什么?

根本就没有什么困难。我们不想在测试设置 中引入一个额外的复选框,这对大多数用户来说是不可理解的,而且在大量的情况下会被误用。

指定一个明知较长的期限是一种正常的解决办法。

另一个解决方案--按月订购测试,并使用每日指标和价格数据(即明确设置PERIOD_CURRENT,而不是PERIOD_D1)。

 
muallch:

还有一个问题是,不是在测试中,而是在真正的自动交易中,是否有历史记录。在这种情况下,我们应该怎么做?测试者可以被超越...
你可以下载所有可用的历史。检查数据访问组织 的文件
 

谢谢你的澄清!

顺便提一下:我正在通过互联网与远程代理进行测试。如果我以开幕式的价格 进行测试,为什么代理商会得到完整的分钟历史记录?测试开始前的准备时间简直令人发指--比如说一个小时。对那些拥有10-100兆管道的人来说是好事,但在这里,你只能坐在一个小小的兆位上......

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5