来自一个 "傻瓜 "的问题 - 页 38

 

就这样。它正在发生!甚至一年后也没有。我下定决心了!我检查了MQL5的文档。我开始时非常小:我最小化了一些指标的代码,试图简化和理解其结构和操作。然后我就发呆了。

首先,我挖到了Fractals--它似乎是出乎意料的小,而且非常简单。然后我从逻辑上推理:把这段代码从一个程序拖到另一个程序是不合理的,我应该直接调用这个指标,复制并使用准备好的计算好的缓冲区数值。如果我没有搞错方向,我被带到了接近标准的步骤,并被带到了一个有iFractals的例子("我做对了吗?"(c)).我尽可能地减少了代码,清除了所有不必要的和常规的东西,只留下了精华。而我发现了什么?就大小和可读性 而言,指标调用的代码 并不比指标本身的原始代码更紧凑。

这些问题。

1.iFractals的含义是什么?

2.我有什么问题吗?

谢谢!

P.S.: 或者说,这只是一个特殊情况,在第二代码的数量上没有任何好处?

 
x100intraday:

2.我有什么问题吗?

这不是一个精神病学家的论坛,而是一个MQL程序员的论坛。你通常不希望去戳别人的蟑螂。

问题要更加具体。
 

这是个问题

生与死的关系...

什么是非犯罪的方式来获得时间框架的开放[15625]bar H1的值?

我试过了,不管我怎么努力,但它说关键错误......。我什么都试过了,所以谁知道...我知道这只是3行代码...但其中...权力...权力...所以它不会抛出一个错误......

 
BaTTLeBLooM:

这是个问题

生与死的关系...

有什么非犯罪的方法可以获得H1时间框架的开放[15625]条的值

我试图得到它,但它说关键错误......。我试过各种各样的东西,所以谁知道呢......我知道这只是3行代码...但其中...权力...权力...所以它不会抛出一个错误......


请给我你的代码。

 
Renat:

请告诉我们您的代码。

这里是

double MTime ( int mode )
{

双重iOpen_min [], iOpen_hour [], iOpen_4hour []。

ArraySetAsSeries ( iOpen_min, true )。
ArraySetAsSeries ( iOpen_hour, true ) 。
ArraySetAsSeries ( iOpen_4hour, true ) 。
int rates_open_min, rates_open_hour, rates_open_4hour;
int err = 0;

{
rates_open_min = CopyOpen ( NULL, PERIOD_M1, 0, 7501, iOpen_min ) 。
rates_open_hour = CopyOpen ( NULL, PERIOD_H1, 0, 20000, iOpen_hour ) 。
rates_open_4hour = CopyOpen ( NULL,PERIOD_H4, 0, 10000, iOpen_4hour ) 。
err ++;
}
while ( ( rates_open_min <= 0 || rates_open_hour <= 0 || rates_open_4hour <= 0) && err < 10);

double Minute2 = iOpen_min [ 0 ] - iOpen_min [ 2 ] 。
double Minute12 = iOpen_min [ 0 ] - iOpen_min [ 12 ] 。
double Hour = iOpen_min [ 0 ] - iOpen_min [ 60 ]; // Hour
double Hour5 = iOpen_min [ 0 ] - iOpen_min [ 300 ]; // 5 Hour
double Day = iOpen_min [ 0 ] - iOpen_min [ 1500 ]; // Day
double Week = iOpen_min [ 0 ] - iOpen_min [ 7500 ]; // Week
double Month = iOpen_hour [ 0 ] - iOpen_hour [ 625 ]; // Month
double Month5 = iOpen_hour [ 0 ] - iOpen_hour [ 3125 ]; // Half Year

double Month25 = iOpen_hour [ 0 ] - iOpen_hour [ 15625 ]; // 3年

在最后一个运营商的最后一行,总是有一个关键的错误......专家顾问甚至可能在策略测试器中开始交易,然后,在运行一年半之后,它产生了一个错误并崩溃。

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

关键错误 是超过了阵列的限制。

你可以试试这个。

      do
         {    
            //if(err>0) Sleep(10);//желательно с паузой
            rates_open_min = CopyOpen ( NULL, PERIOD_M1, 0, 7501, iOpen_min );
            rates_open_hour = CopyOpen ( NULL, PERIOD_H1, 0, 20000, iOpen_hour );
            rates_open_4hour = CopyOpen ( NULL, PERIOD_H4, 0, 10000, iOpen_4hour );           
            err ++;
         }
      while ( ( rates_open_min < 7501 || rates_open_hour < 20000 || rates_open_4hour < 10000) && err < 10 );   

   if(rates_open_min<7501 || rates_open_hour<20000 || rates_open_4hour<10000) return(-1);//Данные не скопированы
   else
      {
      double Minute2 = iOpen_min [ 0 ] - iOpen_min [ 2 ];
      double Minute12 = iOpen_min [ 0 ] - iOpen_min [ 12 ];
      double Hour = iOpen_min [ 0 ] - iOpen_min [ 60 ];   // Час
      double Hour5 = iOpen_min [ 0 ] - iOpen_min [ 300 ];     // 5 Часов
      double Day = iOpen_min [ 0 ] - iOpen_min [ 1500 ];   // День
      double Week = iOpen_min [ 0 ] - iOpen_min [ 7500 ];  // Неделя
      double Month = iOpen_hour [ 0 ] - iOpen_hour [ 625 ];   // Месяц
      double Month5 = iOpen_hour [ 0 ] - iOpen_hour [ 3125 ];  // Полугодие
      double Month25 = iOpen_hour [ 0 ] - iOpen_hour [ 15625 ];  // 3 года
      }
 
Swan:

关键错误--超过阵列限制。

不知何故,我们可以这样试一试。

这并不能改变问题的本质...如果它没有进一步复制数据...专家顾问不会像以前那样交易,但没有错误...

问题是为什么首先出现这种情况,如果历史是巨大的...而你不能使用它......

 
Renat:

请提供您的代码。

好吧,既然没有答案,我就手动输入)))),因为只有一个值
 
BaTTLeBLooM:
好吧,既然没有答案,我就手动输入)))),因为只有一个值。

你的代码中没有任何检查。那你想要什么?

 
BaTTLeBLooM:

这并不能改变问题...如果他不进一步复制数据...专家顾问不会像以前那样交易,但没有错误...

问题是为什么会出现这种情况,如果历史是巨大的...而你不能使用它......

数据将被复制,但并不总是在第一次尝试时......在出现关键错误 后,专家顾问停止工作。

while( ...rates_open_hour <= 0 // 只有目前可用的数据量会被复制,而这个数组,可能会小于15625。


出现这种情况是由于没有阅读手册:)

Документация по MQL5: Программы MQL5 / Ошибки выполнения
Документация по MQL5: Программы MQL5 / Ошибки выполнения
  • www.mql5.com
Программы MQL5 / Ошибки выполнения - Документация по MQL5