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

 
Vitaly Muzichenko #:

Ich kann nicht herausfinden, wie ich das Problem lösen kann.

Ich brauche ein Tick-Chart, d.h. ein Tick-Came - verschiebe den Puffer um eins und zeichne

Wir müssen 60 letzte Ticks zeichnen, d.h. 60 Balken.

---

Dies sollte so geschehen, wie es im "Ticky"-Fenster implementiert ist


Es handelt sich um eine Linie, nicht um Balken.

Der Code zeichnet Balken in einem neuen Fenster. Das kann helfen.

Dateien:
SaveTicks.mq4  6 kb
 
Vitaly Muzichenko #:

Ich kann nicht herausfinden, wie ich das Problem lösen kann.

Ich brauche ein Tick-Chart, d.h. ein Tick-Came - verschiebe den Puffer um eins und zeichne

Wir müssen 60 letzte Ticks zeichnen, d.h. 60 Balken.

---

Es sollte so gemacht werden, wie es im Fenster "Zecken" implementiert ist


Um dieses Problem zu lösen, benötigen wir ein weiteres Array. Sie kann eine feste Länge haben, z. B. 60. Es sollte mit Ticks gefüllt werden, wobei die Daten jedes Mal mit Hilfe der Schleife um 1 verschoben werden. Nachdem jeder Tick geschrieben wurde, sollte dieses Array in das Buffer-Array kopiert werden, und die Daten werden im Diagramm angezeigt.

 
Valeriy Yastremskiy #:

Es sind keine Balken, es ist eine Linie.

Der Code zeichnet die Balken in einem neuen Fenster. Das könnte helfen.

Ich konnte nichts damit anfangen. Vielleicht betrachte ich die Sache von der falschen Seite?


Mihail Matkovskij #:

Sie benötigen ein weiteres Feld, um dieses Problem zu lösen. Sie kann eine feste Länge haben, z. B. 60. Es sollte mit Ticks gefüllt werden, wobei die Daten jedes Mal mit Hilfe einer Schleife um 1 verschoben werden. Nachdem jeder Tick geschrieben wurde, sollte dieses Array in das Buffer-Array kopiert werden und die Daten werden im Diagramm angezeigt.

Ich kann nicht herausfinden, wie man den Wechsel durchführt.

Wenn es Ihnen nichts ausmacht, zeigen Sie mir den Code

 
Vitaly Muzichenko #:

Ich konnte nichts damit anfangen. Vielleicht betrachte ich die Sache von der falschen Seite.


Ich kann nicht herausfinden, wie ich eine Schicht machen soll.

Wenn es Ihnen nichts ausmacht, könnten Sie mir den Code zeigen

A[0]=Gebot;

for(i=0;i<60;i++){A[i+1]=A[i]}

 
Valeriy Yastremskiy #:

A[0]=Gebot;

for(i=0;i<60;i++){A[i+1]=A[i]}

Ich habe es getan, es funktioniert.

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(prev_calculated==0) {
    ArrayInitialize(Buffer1,EMPTY_VALUE);
  }
  double b=SymbolInfoDouble(Symbol(),SYMBOL_BID);
  Buffer1[0]=b;
  for(int j=10; j>0; j--) {
    Buffer1[j]=Buffer1[j-1];
  }
  return(rates_total);
}

---

Irgendetwas sagt mir, dass ich ohne die Schleife auskommen kann.

Ist das so?

 
Vitaly Muzichenko #:

Ich habe es getan, es funktioniert.

---

Irgendetwas sagt mir, dass Sie auf den Zyklus verzichten können.

Ist das wahr?

In der Zeitreihe ist diese Schleife ausgeblendet. Es macht keinen Unterschied, auf welcher Seite man sich bewegt. Es macht für mich mehr Sinn von 0. Ich habe in MKL keine Verschiebefunktionen gesehen. Es ist ein Indexauftrag. Es gilt: Wer zuerst kommt, mahlt zuletzt. In Python tut es das. In MCL scheint es sie nicht zu geben.

 

Was ist los?

Es fängt an, gut zu funktionieren, aber bei jedem neuen Takt gibt es einen Versatz und außerhalb des Bereichs.

Wie kann man sie vermeiden?

---

P.S. Ich glaube, das war's, es funktioniert gut, ich habe hinzugefügt

  if(rates_total-prev_calculated==1) {
    Buffer1[H+1]=EMPTY_VALUE;
  }
 
Vitaly Muzichenko #:

Was ist los?

Es fängt an, gut zu funktionieren, aber bei jedem neuen Takt gibt es einen Versatz und außerhalb des Bereichs.

Wie kann man sie vermeiden?

---

P.S. Scheint gut zu funktionieren, hinzugefügt

Auf der kleineren Seite des Index wird auf weniger als Null geprüft, auf der größeren Seite auf mehr als die Dimensionalität des Arrays. Das Nullsetzen des Arrays oder des letzten Wertes ist irgendwie nicht logisch bei jedem Tick.

 
Valeriy Yastremskiy #:

auf der kleineren Seite des Index auf weniger als Null, auf der größeren Seite auf mehr als die Array-Dimension prüfen. Das Nullsetzen des Arrays oder des letzten Wertes ist nicht logisch.

Array für die gesamte verfügbare Geschichte, das brauche ich nicht.

Ich brauche buchstäblich 50-100 Barren.

Wie diese


 

Guten Tag.

Ich zeige den Wert des täglichen Fraktals in Form seines Wertes oder einer vertikalen Linie an. Die Zeile wird nicht angezeigt und der Wert ist 0.

Hier ist ein Stück Code

 double FractalDayUpper = iFractals(Symbol(), PERIOD_D1, MODE_UPPER, 0);
   ObjectCreate("signal00",OBJ_LABEL,0,0,0,0,0);
   ObjectSet("signal00",OBJPROP_XDISTANCE,600);
   ObjectSet("signal00",OBJPROP_YDISTANCE,100);
   ObjectSetText("signal00",DoubleToString(FractalDayUpper,5),18,"Times New Roman", clrRed);


Bitte sagen Sie mir, was los ist.

Grund der Beschwerde: