statisches Array ?

 

Hallo zusammen,

Zunächst vielen Dank an alle für alle Antworten, das war großartig, MQL4 zu lernen.

Ich mache weiter, um zu verstehen, wie man Arrays baut.

Thema:

Wie man Signale in einem statischen Array zum Beispiel zu speichern: Hochs und Tiefs einer Reihe von Kerzen usw., werde ich wahrscheinlich eine kleine Linie oben auf jedem Hoch und Tief setzen.

Also ich denke statische array[1,2,3,4,5,6,7]

array[1] = (Low[3] < Low[4] && Low[3] < Low[3]) /oder etwas in der Art ?

Niedrig_1 = array[1]

Niedrig_2 = array[2] und so weiter.

Wäre dies eine Standardmethode, oder liege ich da falsch?

Bitte um Ratschläge, danke

 

Lesen Sie zuerst ... dann lesen Sie es noch einmal, bis Sie es verstanden haben.

https://book.mql4.com/variables/arrays

Zum Beispiel ist das erste Element eines Arrays das Element 0 , ein bisschen wie bei Balken, komisch, oder?)

 
  1. Du liegst weit daneben.
  2. array[1,2,3,4,5,6,7] giberisch
  3. array[1] = (Low[3] < Low[4] && Low[3]... ist array ein bool
  4. Low_1 = array[1] impliziert, dass array kein bool ist
  5. "Signale in einem statischen Array speichern" Warum muss es statisch sein, wenn man sie jederzeit berechnen kann?
 

oops ich meinte int array[1][7];

Danke für die Antwort

Nun nach etwas mehr lesen, Ihre Richtung und Fragen, ich denke, ein Array kann nicht sein, was ich versuche zu tun.

Grundsätzlich möchte ich lernen, meine eigene definierte Version von Hochs und Tiefs zu erstellen; und in der Lage sein, sie für ein Signal zu referenzieren, auch nachdem neue Bars bilden. Aber nur eine Anzahl von ihnen, die ich auswähle, nicht die gesamte Geschichte der Hochs/Tiefs.
Vielleicht bin ich hier auf dem falschen Weg.

Ich werde das noch einmal überdenken.

Vielen Dank!

 
Agent86:


Grundsätzlich möchte ich lernen, meine eigene definierte Version von Hochs und Tiefs zu erstellen; und in der Lage sein, sie für ein Signal zu referenzieren, auch wenn sich neue Balken bilden. Aber nur eine Anzahl von ihnen, die ich wählen, nicht die ganze komplette Geschichte der Hochs/Tiefs.

Warum? Können Sie erklären, was Sie erreichen wollen?
 

Ich denke, ich werde etwas mehr wie dies tun:

Ich schätze, dass es in diesem Beitrag nicht mehr um Arrays geht, also werde ich diese Frage zurückziehen, bis ich mehr über Arrays lernen kann


Danke!

static double Low_A;
   
   if(Low[2] < Low[2]
      && Low [2] < Low[1])
      {
      Low_A = Low[3];
      Print (Low_A + " Low_A has formed");
      }
 
RaptorUK:
Warum? Können Sie erklären, was Sie erreichen wollen?

Nun, sicher, es ist nicht wirklich Hochs und Tiefs einer bestimmten Kerze, sondern vielleicht eine Reihe von Kerzen.

Sagen wir, ein Beispiel könnte sein, ein Low_A zu nennen, je nachdem, wie viele Kerzen ich verwenden möchte, aber es könnte sein, zu sagen, dass ein Tief 4 höhere Kerzen auf der linken Seite und 4 höhere Kerzen auf der rechten Seite betrachtet wird, und diese niedrige Kerze würde als Low_A betrachtet werden

Oder es könnte mich mehr Kerzen, oder weniger, um ein Low oder High zu machen, und dann erstellen Sie andere wie diese für Highs und Lows.
Dann könnte man einige Funktionen erstellen, um die vorherigen Tiefs mit den nächsten Tiefs und die vorherigen Hochs mit den nächsten Hochs zu vergleichen.

Dann kann man vielleicht eine Trendlinie aus einer Reihe von entweder 2) Hochs/Tiefs oder 3/Hochs/Tiefs oder vielleicht sogar noch mehr zeichnen

Oder ich könnte wie in diesem Beispiel einfach eine Kerze verwenden, die eine niedrigere Kerze auf der linken Seite und eine niedrigere Kerze auf der rechten Seite hat und dies als Tiefpunkt bezeichnen.

Ursprünglich hatte ich in Betracht gezogen, das Ergebnis in ein Array zu packen, aber ich glaube nicht, dass dies das tun wird, was ich wollte, oder zumindest verstehe ich Arrays nicht gut genug, um das zu diesem Zeitpunkt zu bestimmen. Etwas mehr Lesen wird mich zweifellos aufklären. HA!

Ich war mir wirklich nicht sicher, ob Arrays nützlich wären, um eine Reihe von Hochs und Tiefs zu speichern, die ich definiere.
 

Wenn ich Low[2] ausdrucke, erhalte ich 8 Ziffern anstelle von 5 Ziffern, und einige sind alle 0,0000000

Wahrscheinlich, weil der Datentyp, den ich verwendet habe, static double Low_A war;

Ich bin mir nicht sicher, ob ich es richtig ausgeben muss, aber um die korrekte statische Zahl zu speichern, bin ich nicht sicher, welche Daten ich verwenden soll.

 
OK, ich verwerfe das statische Array und die statische Double-Idee.

Ich brauche ein neues Design, denn es ist offensichtlich, dass das, was ich zu tun versuchte, nicht richtig funktionieren wird, und ich verstehe jetzt, warum.

Sooooo, zurück zum Zeichenbrett. AUTSCH
 

Zurück zu diesem,

Nach etwas mehr Lernen war ich fragen, gibt es überhaupt so etwas wie ein statisches Array, oder ist ein Array statisch vor allem standardmäßig, und nach dem Lesen der Links, die Sie zur Verfügung gestellt, ich sage alle statisch sind standardmäßig. Na toll.


Wie auch immer, ich denke an iFractals, anstatt zu versuchen, Hochs und Tiefs zu markieren, wie ich sie definiere. Ich kann Fraktale vorerst verwenden, bis ich bessere Kenntnisse habe und mehr lese.

Und was ist mit iFractals, wie kann ich sie markieren und auf sie verweisen?
Könnte ich einfach zusätzliche iFractals erstellen und die Verschiebung ändern und auf diese Weise darauf verweisen, oder bezieht sich die Verschiebung mit iFractals immer noch auf Bars und nicht auf das vorherige Fraktal?

//+------------------------------------------------------------------+
//|                Support and Resistance                            |
//|                Copyright © 2004/5     Barry Stander              |
//|                http://www.4Africa.net/4meta/                     |
//+------------------------------------------------------------------+

#property copyright "Support and Resistance             Barry_Stander_4@yahoo.com"
#property link      "http://www.4Africa.net/4meta/"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue

//---- buffers
double v1[];
double v2[];
double val1;
double val2;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
//----
   IndicatorBuffers(2);

   SetIndexArrow(0, 119);
   SetIndexStyle(0,DRAW_ARROW,STYLE_DOT,1,Red);
   SetIndexBuffer(0, v1);
   SetIndexLabel(0,"Resistance");

   SetIndexArrow(1, 119);
   SetIndexStyle(1,DRAW_ARROW,STYLE_DOT,1,Blue);
   SetIndexBuffer(1, v2);
   SetIndexLabel(1,"Support");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int i=Bars;
//----
   while(i>=0)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0) v1[i]=High[i];
      else          v1[i]=v1[i+1];

      val2=iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0) v2[i]=Low[i];
      else          v2[i]=v2[i+1];
      
      i--;
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+


Jemand hat diesen Code geschrieben und ich verstehe, wie er funktioniert, aber ich bin nicht sicher, ob ich verstehe, wie ich aus dem Array ein bestimmtes High und/oder Low aka Support/Resistance auswählen würde.

Ich meine, ich kann sicherlich eine Funktion, die einen Handel öffnen würde, wenn (val1 > imacd) oder etwas, aber was ist mit den vorherigen iFractals, oder sagen wir 2 zurück,

Wäre dies einfach eine Frage der Verschiebung?

Oder muss ich dies in eine andere Art von Array einfügen?

Bitte um Rat

Danke

 
Es gibt 2 Puffer (Arrays), die die Preiswerte der Fraktale enthalten ... val1 & val2. Wenn Sie frühere Fraktalwerte finden möchten, führen Sie einfach eine Schleife durch, in der Sie einen Verschiebungswert erhöhen und die Pufferwerte überprüfen, bis Sie diejenigen finden, die nicht EMPTY_VALUE sind ( https://docs.mql4.com/customind/SetIndexEmptyValue )