初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1240

 
如何增加测试器中可优化的参数数量?也许在MQL中有一些虚拟的方法,也许在Python或其他地方?请给我一些方向...
 
Vladimir M.:
如何增加测试器中优化参数的数量?也许在MQL中有一些虚拟的方法,也许在Python或其他地方?请给我一些指点,...

OnTester()

 
Vladimir Karputov:

从参考文献中举个例子吧!有多少次?如果你不太理解它们的含义,就不要使用你自己编造的结构。使用标准结构--弄清楚它们是如何工作的。之后,把你自己的构造扔进垃圾桶。


并使用 "MQL向导 "生成一个模板。

编码

和结果


弗拉基米尔,我有种感觉,他们正试图在一个哑巴和一个聋子之间交谈。

  1. 我使用了'MQL Wizard' 模板。
  2. 你为什么要纠缠于我的构造?它们不比你的差,特别是对我的需求来说!"。

if(rates_total - prev_calculated > 1)

当我运行指标 rates_total = ХХХ(假设ХХХ = 1000),prev_calculated = 0时, rates_total - prev_calculated (1000 - 0 = 1000) 大于1!这个条件起作用了!

下一页

if(prev_calculated == 0)

当你启动指标时,prev_calculated = 0。这个条件起作用了!

然后给我解释一下你的有什么不同

      Buffer1[i]=open[i];
      Buffer2[i]=high[i];
      Buffer3[i]=low[i];
      Buffer4[i]=close[i];

来自我的

            barsBuffer1[0] = newCandles_Open[i];
            barsBuffer2[0] = newCandles_High[i];
            barsBuffer3[0] = newCandles_Low[i];
            barsBuffer4[0] = newCandles_Close[i];

考虑到我的ArraySetAsSeries 被设置为真?

为什么你的烛台被渲染了,而我的却没有?

我一直在要求你向我解释,现在已经有近2个星期了!没有必要让我去阅读文件!这是我的工作。我几乎对它了如指掌。只要告诉我为什么?要么解释,要么告诉我你不知道,要么告诉我你不想回答!

哦,伙计,你忘了这个主题的标题了吗?

 
Сергей Таболин:


这个怎么样?你在缓冲区内把所有的索引都分配给了一个零索引。

            barsBuffer1[i] = newCandles_Open[i];
            barsBuffer2[i] = newCandles_High[i];
            barsBuffer3[i] = newCandles_Low[i];
            barsBuffer4[i] = newCandles_Close[i];
 
Сергей Таболин:


这就是我想教你的:我一直在给你举例,但你一直在用头撞墙。

最后一次:把你的设计扔进垃圾桶,使用标准的设计。然后你可以问:如何根据你的规则画出(比如说,图表上最右边的五个蜡烛图)。但是,在你毁掉你的结构之前,在你停止使用前缀增量而不是后缀增 量之前...。

 
Сергей Таболин:


例子

//+------------------------------------------------------------------+
//|                                                 Draw Candles.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots   1
//--- plot USDJPY
#property indicator_label1  "USDJPY"
#property indicator_type1   DRAW_CANDLES
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
input int      Input1=9;
//--- indicator buffers
double   Buffer1[];
double   Buffer2[];
double   Buffer3[];
double   Buffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Buffer1,INDICATOR_DATA);
   SetIndexBuffer(1,Buffer2,INDICATOR_DATA);
   SetIndexBuffer(2,Buffer3,INDICATOR_DATA);
   SetIndexBuffer(3,Buffer4,INDICATOR_DATA);
//--- the 0 (empty) value will mot participate in drawing
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   if(rates_total<10)
      return(0);
//---
   int limit=prev_calculated-5;
   if(prev_calculated==0)
     {
      limit=rates_total-5;
      for(int j=0; j<limit; j++)
        {
         Buffer1[j]=0.0;
         Buffer2[j]=0.0;
         Buffer3[j]=0.0;
         Buffer4[j]=0.0;
        }
     }
   for(int i=limit; i<rates_total; i++)
     {
      if(i<rates_total-5)
        {
         //--- затираем всё, что левее пяти свеч (сюда попадаем при рождении нового бара)
         Buffer1[i]=0.0;
         Buffer2[i]=0.0;
         Buffer3[i]=0.0;
         Buffer4[i]=0.0;
         continue;
        }
      //--- четыре левые свечи будут перерисовываться на каждом тике - это не оптимально,
      //--- но пригодится в будущем (если для них потом подсовывать тики)
      //--- пятая свеча (она же самая правая на графике) реагирует онлайн на изменение текущих цен
      Buffer1[i]=open[i];
      Buffer2[i]=high[i];
      Buffer3[i]=low[i];
      Buffer4[i]=close[i];
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

结果。


附加的文件:
 
Vladimir Karputov:

这就是我想教你的:我一直在给你举例,但你一直在用头撞墙。

最后一次:把你的设计扔进垃圾桶,使用标准的设计。然后你可以问:如何根据你的规则画出(比如说,图表上最右边的五个蜡烛图)。但在你抛弃你的结构之前,在你停止使用前缀增量而不是后缀增量 之前......。

你对它有什么异议?因为你不了解它?我经常使用这个循环,例如

for(int i PositionsTotal(); i-- > 0)

而且完全没有问题.........

 
Alexey Viktorov:

你不喜欢他什么呢?因为你不了解它?例如,我就经常使用这种循环

for(int i PositionsTotal(); i-- > 0)

而且完全没有问题.........

试着读一读,而不是急于回应,如何呢?你使用(像大多数)postfix。而你的例子是后缀的。你不应该急于回答而不是思考。

 
Youri Lazurenko:
CPU负载为100%,工作几分钟后电脑就崩溃了(处理器phenom II x4 955(4核,3.2 GHz),冷却器是备用的)。两次之后,我决定不再冒任何风险。这应该如何解释呢?

用Aida64或Linx检查你的电脑--如果CPU和内存测试没有问题,温度也在正常范围内,那么就检查硬盘。一般来说,它看起来像电源,如果它已经很久没有更换过了,很可能是问题所在。终端在第二个表象上工作正常。

 
下午好,同事们,你们知道是否有这样一个符号,在一个球里有一个横向的破折号,我找不到它 :-(