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

 
Valeriy Yastremskiy #:

Ja, in meinem Fall muss man mit der ersten beginnen, nicht mit der Nullleiste) ist ein guter Punkt.

Warum? Der Null-Balken wird zusammen mit allen anderen Balken nach links verschoben. Und wenn wir alle Balken bis auf den Nullpunkt verschieben, erhalten wir zwei gleiche Werte für den ersten und zweiten Index.

P.S. Wenn wir Daten verschieben, muss eine freie Zelle immer überschrieben werden. Andernfalls gibt es zwei identische Werte in einer Reihe.

 
Valeriy Yastremskiy #:

ZZZY überschreibt den Wert von Null vor der Verschiebung, wir verlieren den Wert des Nullindexes.

Das ist genau mein Punkt!

 
Valeriy Yastremskiy #:

Was ist ein Ringpuffer in einem µl

Etwas wie

static int head=0;
for(i=head,count=0;count<ArraySize(A);i++,count++)
  {
   if(i>=ArraySize(A))i=0;
   DoSomething(A[i]);
  }

oder sogar

static int head=0;
for(i=head,count=0;count<ArraySize(A);count++)
  {
   if(++i>=ArraySize(A))i=0;
   DoSomething(A[i]);
  }
 
JRandomTrader #:

Etwa so.

oder sogar

Indexverschiebung in der Anordnung in µl. Trotzdem sollte es funktionieren. Übrigens sollten sich die Gewichtung des Indexänderungszyklus (der ein Zyklus ist) und des Zuweisungszyklus nicht wesentlich unterscheiden.

 
Vitaly Muzichenko #:

Können Sie mir zeigen, wie man das benutzt?

Hier ist die Aufgabe.

Hier ist der fertige Code, aber die Schleife ist ein wenig unheimlich

---

Auch hier gibt es eine Schleife innerhalb von ArrayCopy() und wahrscheinlich mehr als eine. Der Code wird also durch diese Ersetzung kaum einfacher und schneller werden.

In diesem Code sollten Sie ein Array angeben

int  ArrayCopy(
   void&        dst_array[],         // куда копируем
   const void&  src_array[],         // откуда копируем
   int          dst_start=0,         // с какого индекса пишем в приемник
   int          src_start=0,         // с какого индекса копируем из источника
   int          count=WHOLE_ARRAY    // сколько элементов
   );

Von welchem Index geschrieben und von welchem kopiert werden soll, hängt von der Richtung der Array-Verschiebung ab. Wenn wir also wollen, dass Index 0 immer frische, neue Daten enthält, sollten wir von 0 kopieren und von 1 schreiben. Somit sind die Werte im Index 0 und 1 identisch, und anschließend wird ein neuer Wert nach 0 kopiert.

Und ich bezweifle sehr, dass ArrayCopy() die gleiche Schleife enthält wie die Benutzerschleife. Wenn Sie also ein Array mit einer bestimmten Größe haben, wird es bei jedem Tick um 1 verschoben und dann in den Indikatorpuffer kopiert, der als Zeile angezeigt wird...

 
Bitte nennen Sie mir die Funktion für die Aufschlüsselung der täglichen Fakten.
//+----------------------------------------------------------------------------+
//|Определение пробоя дневного фрактала вверх                                  |
//+----------------------------------------------------------------------------+
int BreakdownSignalUpD1()
  {
   int sig=-1;
   double resistD1 = GetNearestUpFractal(PERIOD_D1);
   if (resistD1 < Ask)
     sig=0;
   if (resistD1 >= Ask)
     sig=1;  
   return(sig);
  }

Und hier ist die Funktion, die die Aufschlüsselung auf dem Bildschirm anzeigt

ObjectCreate("signal100",OBJ_LABEL,0,0,0,0,0);
   ObjectSet("signal100",OBJPROP_XDISTANCE,600);
   ObjectSet("signal00",OBJPROP_YDISTANCE, 40);
   ObjectSetText("signal100",DoubleToString(BreakdownSignalUpD1(),0),18,"Times New Roman", clrRed);

Können Sie mir bitte sagen, wie ich es schaffe, dass der Bildschirm nicht 0 oder 1 anzeigt, sondern dass 0 "JA" und 1 "NEIN" bedeutet.

Dankeschön

 
EVGENII SHELIPOV #:
Bitte nennen Sie mir die Funktion für die Aufschlüsselung der täglichen Fakten.

Und hier ist die Funktion, die die Aufschlüsselung auf dem Bildschirm anzeigt

Können Sie mir bitte sagen, wie ich es schaffe, dass der Bildschirm nicht 0 oder 1 anzeigt, sondern dass 0 "JA" und 1 "NEIN" bedeutet.

Dankeschön

string boolToStr(bool value) { return ((value) ? "true" : "false"); }
 
EVGENII SHELIPOV #:
Bitte sagen Sie mir, welche Funktion die Aufschlüsselung des Tagesfaktors hat.

Und hier ist die Funktion, die die Aufschlüsselung auf dem Bildschirm anzeigt

Können Sie mir bitte sagen, wie ich es schaffe, dass der Bildschirm nicht 0 oder 1 anzeigt, sondern dass 0 "JA" und 1 "NEIN" bedeutet.

Dankeschön

ObjectSetText("signal100",BreakdownSignalUpD1()==0?"Да":"Нет",18,"Times New Roman", clrRed);

Etwa so.

 
JRandomTrader #:

So etwas in der Art.

Dankeschön

 
Alexey Viktorov #:

In diesem Code müssen Sie ein Array angeben

Von welchem Index geschrieben und welcher Index kopiert wird, hängt von der Richtung des Array-Offsets ab. D.h. wenn Index 0 immer frische, neue Daten enthalten soll, dann wird von 0 kopiert und von 1 geschrieben. Somit sind die Werte in Index 0 und 1 identisch, und anschließend wird ein neuer Wert in 0 kopiert.

Und ich bezweifle sehr, dass ArrayCopy() die gleiche Schleife enthält wie die Benutzerschleife. Wenn Sie also ein Array mit einer bestimmten Größe haben, wird es bei jedem Tick um 1 verschoben und dann in den Indikatorpuffer kopiert, der als Zeile angezeigt wird...

Ich werde es versuchen.

---

Im Allgemeinen funktioniert mein Code erfolgreich, es ist schon mehr als eine Stunde her.


Grund der Beschwerde: