Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1240

 
Wie kann die Anzahl der optimierbaren Parameter im Tester erhöht werden? Vielleicht gibt es einige virtuelle Wege in MQL, vielleicht in Python oder irgendwo anders? Geben Sie mir bitte einen Hinweis...
 
Vladimir M.:
Wie lässt sich die Anzahl der optimierten Parameter im Tester erhöhen? Vielleicht gibt es einige virtuelle Wege in MQL, vielleicht in Python oder irgendwo anders? Geben Sie mir bitte ein paar Tipps...

OnTester()

 
Vladimir Karputov:

Nehmen Sie sich ein Beispiel an der Referenz! Wie viele Male? Verwenden Sie nicht Ihre eigenen erfundenen Konstrukte, wenn Sie nicht viel von deren Bedeutung verstehen. Verwenden Sie Standardkonstrukte - finden Sie heraus, wie sie funktionieren. Danach werfen Sie Ihre eigenen Konstrukte in den Papierkorb.


Und verwenden Sie den "MQL-Assistenten", um eine Vorlage zu erstellen.

Code

und Ergebnis


Vladimir, ich habe das Gefühl, dass sie versuchen, zwischen einer stummen und einer tauben Person zu vermitteln.

  1. Ich habe die Vorlage"MQL Wizard" verwendet.
  2. Warum stören Sie sich an meinen Konstruktionen? Sie sind nicht schlechter als Ihre, vor allem für meine Bedürfnisse!

if(rates_total - prev_calculated > 1)

Wenn ich den Indikator rates_total = ХХХ (sagen wir ХХХХ = 1000), prev_calculated = 0, rates_total - prev_calculated (1000 - 0 = 1000) größer als 1! Die Bedingung hat funktioniert!

Weiter

if(prev_calculated == 0)

Wenn Sie den Indikator starten, ist prev_calculated = 0. Die Bedingung hat funktioniert!

Und dann erklären Sie mir, worin sich Ihre unterscheiden

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

von meinem

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

wenn man bedenkt, dass meinArraySetAsSeries auf true gesetzt ist.

Warum sind eure Leuchter verputzt, meine aber nicht?

Ich bitte Sie nun schon seit fast 2 Wochen, mir das zu erklären! Sie brauchen mich nicht zum Lesen der Dokumentation zu schicken! Ich kenne sie fast auswendig. Sagen Sie mir einfach, WARUM? Erklären Sie es, oder sagen Sie mir, dass Sie es nicht wissen, oder sagen Sie mir, dass Sie nicht antworten wollen!

Oh Scheiße, haben Sie den Titel dieses Threads vergessen?

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


Wie wäre es damit? Sie haben alle Indizes in den Puffern einem Null-Index zugewiesen.

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


Das ist es, was ich dir beizubringen versuche: Ich gebe dir immer wieder Beispiele, aber du rennst mit dem Kopf gegen die Wand.

Zum letzten Mal: Werfen Sie Ihre Entwürfe in den Papierkorb und verwenden Sie die Standardentwürfe. Dann können Sie fragen, wie Sie (z. B. die fünf Kerzenständer ganz rechts im Diagramm) nach Ihren Regeln zeichnen können. Aber nicht, bevor Sie Ihre Konstrukte über den Haufen werfen, nicht, bevor Sie aufhören,Präfix-Inkrement anstelle vonPostfix-Inkrement zu verwenden...

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


Beispiel

//+------------------------------------------------------------------+
//|                                                 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);
  }
//+------------------------------------------------------------------+

Ergebnis:


Dateien:
 
Vladimir Karputov:

Das ist es, was ich dir beizubringen versuche: Ich gebe dir immer wieder Beispiele, aber du rennst mit dem Kopf gegen die Wand.

Zum letzten Mal: Werfen Sie Ihre Entwürfe in den Papierkorb und verwenden Sie die Standardentwürfe. Dann können Sie fragen, wie Sie (z. B. die fünf Kerzenständer ganz rechts im Diagramm) nach Ihren Regeln zeichnen können. Aber nicht, bevor Sie Ihre Konstrukte wegwerfen, nicht, bevor Sie aufhören,Präfix-Inkrement anstelle vonPostfix-Inkrement zu verwenden...

Was haben Sie dagegen? Weil du es nicht verstehst? Ich zum Beispiel verwende oft diese Schleife

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

und es gibt überhaupt kein Problem.........

 
Alexey Viktorov:

Was gefällt Ihnen nicht an ihm? Weil du es nicht verstehst? Ich zum Beispiel benutze oft diesen Zyklus

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

und es gibt überhaupt kein Problem.........

Wie wäre es, wenn Sie versuchen würden, ihn zu lesen, anstatt ihn vorschnell zu beantworten? Sie verwenden (wie die meisten) Postfix. Und Ihr Beispiel ist nachbearbeitet. Sie sollten nicht einfach überstürzt antworten, anstatt nachzudenken.

 
Youri Lazurenko:
CPU-Last 100% und nach ein paar Minuten Arbeit stürzt der Rechner ab (Prozessor Phenom II x4 955 (4 Kerne, 3,2 GHz), der Kühler ist zu schwach). Nach zwei Versuchen habe ich beschlossen, nichts mehr zu riskieren. Wie ist dies zu interpretieren?

Prüfen Sie Ihren Computer mit Aida64 oder Linx - wenn es keine Probleme bei den CPU- und Speichertests gibt und die Temperatur innerhalb normaler Grenzen liegt, dann prüfen Sie die Festplatte. In der Regel scheint es sich um das Netzteil zu handeln, wenn es seit langem nicht ausgetauscht wurde. Das Terminal funktioniert auf dem zweiten Phänomen problemlos.

 
Guten Tag Kollegen, wissen Sie, ob es ein solches Symbol in Form eines waagerechten Striches in einem Ball gibt, ich kann es nicht finden :-(
Grund der Beschwerde: