Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 394

 

Hallo.

Bitte helfen Sie mir, einen Zickzack zu malen.

Ich möchte, dass das Segment grün eingefärbt wird, wenn der Abstand zwischen dem Tiefpunkt und dem höchsten Punkt >=100 Punkte ist.

 
Dimitry-1983:

Hallo!

Ich habe mir schon den Kopf zerbrochen. Wie prüfe ich, ob ein bestimmter Preis im Double-Array vorhanden ist?

Für den Test habe ich es so geschrieben:



Das Skript findet 11, 22, 33, 44 ohne Probleme (das Terminal hat solche Aufträge). Verarbeitet das Skript jedoch z. B. den Preis von 45, zeigt es immer noch 3 an (Position des Preises 44 im Array).

Was ich wirklich brauche, ist ein bool - wenn es einen Preis der Bestellung in dem Array verarbeitet wird, sollte es true zurückgeben, wenn nicht, sollte es false zurückgeben. Aber ich habe eine solche Funktion in der Sprache noch nicht gefunden.

Die Funktiongibt den Index des ersten gefundenen Elements in der ersten Array-Dimension zurück. Wirdder gesuchte Wert nicht gefunden, gibt sie den Index des Elements mit dem kleinsten Wert zurück, zwischen dem sich der gesuchte Wert befindet.Daher sollten wir bei dieser Aufgabe auch die Gleichheit zwischen dem gesuchten und dem gefundenen Wert überprüfen. Das Ergebnis des Vergleichs wird wahr oder falsch sein

 
STARIJ:

Warum sollte ich etwas aus dem Indikator drucken? Alles ist auf dem Bildschirm zu sehen - das ist der Indikator. Wenn ich eine Tabelle benötige, führe ich das Skript mit iCustom() aus.


Was Sie hier geschrieben haben, habe ich nicht verstanden. Wir sprachen über die Tatsache, dass ich eine Datei anlege, die aus irgendeinem Grund immer leer ist. Ich kann ein Array von Daten nicht in eine Datei übertragen.

Ich muss die Daten in einer Datei speichern. Wenn der Indikator für 1 Jahr an das Diagramm angehängt ist, so dass alle Aufzeichnungen seiner Messwerte für das Jahr vorhanden sind!

 
Alekseu Fedotov:

Das ist eine interessante Art, es einzunähen.

Versuchen Sie dies aus Versehen.


Ich danke Ihnen! Aber das habe ich schon versucht, und es hat nicht funktioniert.

 

Können Sie mir sagen, warum die Fehler auftreten?

//--- input parameters
input int      MyLevel=100; // установка уровня (отступ) выше (ниже) текущей цены;
//--- indicator buffers
double         Label1Buffer[];
double         Label2Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer);
   SetIndexBuffer(1,Label2Buffer);
   double R1 = 0; // служеные переменные принимаются равными 0;
   double R2 = 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[])
  {
//---

   double i=Bid; // переменной i присваивается значение текущего курса;

   if(i>=R1) // если текущий курс >= служебной переменной R1;
     {
      R1=i+(MyLevel*Point); // то присваиваем R1 новое значение равное текущему курсу + отступ,
      R2=i-(MyLevel*Point); // также присваиваем R2 новое значение = текущий курс - отступ;
     }
   else
     {
      break;  // иначе, выходим из оператора
     }
   if(i<=R2) // если текущий курс <= служебной переменной R2;
     {
      R1=i+(MyLevel*Point); // то присваиваем R1 новое значение равное текущему курсу + отступ,
      R2=i-(MyLevel*Point); // также присваиваем R2 новое значение = текущий курс - отступ;
     }
   else
     {
      break; // иначе выходим
     }

   Label1Buffer [0] = R1; // заносим в буфер данные R1
   Label2Buffer [0] = R2; // и R2

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Irrtümer:

'R1' - nicht deklarierter Bezeichner Mylevel.mq4 61 10

möglicher Datenverlust aufgrund von Typumwandlung Mylevel.mq4 63 9

'R2' - nicht deklarierter Bezeichner Mylevel.mq4 64 7

';' - 'break' muss innerhalb einer Schleife oder Switch-Anweisung verwendet werden Mylevel.mq4 68 12

';' - 'break' muss innerhalb einer Schleife oder Switch-Anweisung verwendet werden Mylevel.mq4 77 12


 
YarTrade:

Können Sie mir sagen, warum die Fehler auftreten?

Irrtümer:

'R1' - nicht deklarierter Bezeichner Mylevel.mq4 61 10

möglicher Datenverlust durch Typumwandlung Mylevel.mq4 63 9

'R2' - nicht deklarierter Bezeichner Mylevel.mq4 64 7

';' - 'break' muss innerhalb einer Schleife oder Switch-Anweisung verwendet werden Mylevel.mq4 68 12

';' - 'break' muss innerhalb einer Schleife oder Switch-Anweisung verwendet werden Mylevel.mq4 77 12


R1, R2 werden innerhalb einer Funktion deklariert, bzw. - nur dort sichtbar - sind sie lokal.
break wird in Schleifen und Wechseln verwendet
 

Ich bin mir nicht sicher, ob es ein Programm zum Kombinieren von Testberichten gibt, das dem Reportmanager für mt5 ähnelt, dennder Reportmanager öffnet sie nicht.

 
iv1986:

Wenn Sie wissen, gibt es ein Programm zum Kombinieren von Testberichten ähnlich wie reportmanager für mt5, aberreportmanager öffnet sie nicht?

Es ist einfacher, den Code umzuschreiben und die Tests für mehrere Währungen in mt5 durchzuführen. Die Ergebnisse der Tests in der mt4-Plattform sind definitiv nicht korrekt, und das Endergebnis wird kritisch verzerrt und es hat keinen Sinn, es zu analysieren.

Hier ist einer der 23 Symboltests, alles ist klar und fast offensichtlich


 

Kann ich einen multiinstrumentalen EA erstellen, wenn ich für jedes Instrument unterschiedliche Parameter und Strategien habe?

Vitaly Muzichenko:

Es ist einfacher, den Code umzuschreiben und die Tests für mehrere Währungen in mt5 durchzuführen. Die Ergebnisse der Tests in der mt4-Plattform sind offensichtlich falsch, und das endgültige Ergebnis wird kritisch verzerrt werden und es hat keinen Sinn, es zu analysieren.

Hier ist einer der Tests für 23 Symbole, alles ist klar und fast offensichtlich


Und wenn ich für jedes Symbol eine andere Strategie und dementsprechend einen anderen Code habe, kann ich dann einen solchen EA erstellen?

 
iv1986:

Kann ich einen multiinstrumentalen EA erstellen, wenn ich für jedes Instrument unterschiedliche Parameter und Strategien habe?

Und wenn ich verschiedene Strategien und Code für jedes Instrument haben, ist es möglich, eine solche EA zu machen?

Sie können einen EA mit mehreren Währungen schreiben, er wird in einer einzigen Datei gespeichert. Es ist möglich, die Strategien für verschiedene Paare in einer Datei für den Tester zu kombinieren, und es ist auch möglich, sie online auf einem Chart zu handeln, aber es ist möglich, sie zu trennen, so dass jede Strategie auf dem Symbol handelt, auf dem der EA platziert wurde. Die Möglichkeiten sind unbegrenzt