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

 
Alexey Viktorov:
当前时间为 17:08,显示为33。因此,时间为01:00的酒吧号码将是32。
datetime t=StringToTime("01:00");

这不是正确的解决方案。如果你在00:00开始测试,这个变体给出的是0条,在最近的01:00小时之前应该有46个M30条。

 
Nauris Zukas:

错误的决定。如果你在00点开始测试,这个变体产生0条,在最近的01点之前应该有46条M30条。

我给了你一个思维方式,你应该知道如何在分钟上的00:59做出最接近的01:00吧。这没有什么困难。

 
Alexey Viktorov:

我给出了思考的方向,如何让最近的01:00条在00:59分上,由你自己决定。这没有什么困难。

在任何情况下,你将不得不使用循环并寻找最近的时间,我没有看到任何其他方法。

 
Alexey Viktorov:
唯一的问题是,我从来没有用不必要的东西填满我的内存单元,比如说,在给定的时间或小于1的条形图中,获得的值将等于什么。我只是每次都检查。


我不知道如何为没有周期的酒吧找到最接近的指定时间。如果没有什么复杂的事情,你能给我看看这个功能吗?

 

尊敬的专家,请教您如何在mt-4中把测试结果 拉到一个文件中?

用于进一步处理,如这里所述https://www.mql5.com/ru/articles/1467?

Автоматическая оптимизация торгового робота в процессе реальной торговли
Автоматическая оптимизация торгового робота в процессе реальной торговли
  • 2007.04.16
  • Igor Malcev
  • www.mql5.com
В статье описана и представлена библиотека функций, позволяющая проводить оптимизацию входных параметров советника, запуская оптимизацию непосредственно из советника.
 
Nauris Zukas:


我不知道如何为没有周期的酒吧找到最接近的指定时间。如果没有什么复杂的东西,你能给我看看这个功能吗?

.....,只是没有文字....

如果时间小于你要找的时间,那么你就得把你要找的时间减去24小时,这有多难猜?

 string st = "1:00";// можно и так писать "01:00"
 datetime t = StringToTime(st);

 if(TimeCurrent() < t)
  {
   MqlDateTime mqlDateTime; 
   TimeToStruct(t, mqlDateTime);
   mqlDateTime.day -= 1;
   t = StructToTime(mqlDateTime);
  }
 int b = Bars(_Symbol, PERIOD_M30, t, TimeCurrent());

在没有考虑到输出和检查可能的执行错误的情况下做出。其他执行方式是可能的,这就是为什么我尽量不写示例代码。今天我决定这样做,明天我可能会发现另一种变体更方便。

 
Alexey Viktorov:

如果时间小于你要找的时间,那么你就得把你要找的时间减去24小时,这有多难猜?

正因为如此,所以很难猜测。

阿列克谢-维克多罗夫

在没有考虑到周末和检查可能的执行错误的情况下做出。

为了得到一个理想的结果而在最后不出错,代码得有多难啊!代码中有周末和假日。谢谢你的提示和例子,我学到了一些新东西,它将在某个地方派上用场,但到目前为止,我看到我的版本是最简单和最可靠的。

 
Nauris Zukas:

仅仅因为这一点,就很难猜测。

为了得到你想要的结果而最终不出错,代码必须要复杂得多!有的周末和节假日,市场开放的时间不同。谢谢你的提示和例子,我学到了一些新东西,它肯定会很有用,但到目前为止,我看到我的版本是最简单和最可靠的。

为什么不呢?而这种选择有生命的权利。而且它甚至让我感兴趣。经过一些修正,我们得到了返回指定时间和时期的条形数字的函数。

int findBar(string strTime, ENUM_TIMEFRAMES period = PERIOD_CURRENT)
 {
  MqlDateTime mqlTime, mqlFindTime;
  TimeToStruct(StringToTime(strTime), mqlFindTime);
  datetime arrTime[];
  int copy = PeriodSeconds(PERIOD_D1)/PeriodSeconds(period);
  CopyTime(_Symbol, period, 0, copy, arrTime);
  ArraySetAsSeries(arrTime, true);
   for(int i = 0; i < copy; i++)
    {
     TimeToStruct(arrTime[i], mqlTime);
      if(mqlTime.hour == mqlFindTime.hour && mqlTime.min <= mqlFindTime.min)
      return(i);
    }
  return(-1);
}/********************************************************************/

.

 
Alexey Viktorov:

为什么不呢?而这种选择有生命的权利。而且它甚至让我感兴趣。通过一些修正,该函数返回指定时间和时期的条形图编号。

.

非常感谢您!
你提到了 "记忆细胞",到目前为止我对这个问题的了解还很有限。据我所知,它影响了专家顾问测试的速度?它是以某种方式被测量,还是仅仅由测试的速度决定?

 
Nauris Zukas:

非常感谢您!
你提到 "记忆细胞",我的知识目前是有限的。据我所知,它是否影响专家顾问测试的速度?它是以某种方式被测量,还是仅仅由测试的速度决定?

我说的是我自己的记忆芯片。:)))

关于不记得这些琐事,这些琐事可以很容易地反复检查、澄清,在必要时做,并在写代码时再次忘记。

原因: