[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 339

 
silhouette:

Wie groß die Arrays sein sollten, weiß ich nicht. Sein Index sollte über das gesamte Intervall der berechneten Takte akkumuliert werden, d.h. ab der Taktgrenze.

Ich werde versuchen, die Logik des Problems in Worten zu beschreiben.

  • Wir haben drei Indikatorpuffer, die eine farbige LSMA zeichnen. Wenn der Wert des aktuellen Balkens höher ist als der des vorherigen, wird der Wert im gelben und grünen Puffer belassen und der Wert im roten gelöscht. Wenn der aktuelle Wert niedriger ist als der vorherige - im Gegenteil. In allen anderen Fällen wird der Wert im roten und grünen Puffer gelöscht, so dass nur der gelbe Puffer übrig bleibt.
  • Der Pufferwert der grünen Serie ist 1, der Indexwert ist 0. Wenn der grüne Puffer im aktuellen Takt =EMPTY_VALUE und im vorherigen Takt ebenfalls =EMPTY_VALUE ist, dann erhöht sich der Wert des grünen Puffers um eins (Wertakkumulation). Wenn der Wert des grünen Puffers == EMPTY_VALUE ist, während der Wert des roten Puffers ebenfalls == EMPTY_VALUE ist (nur gelbe Farbe im Diagramm), bedeutet dies, dass die Serie zu Ende ist - wir weisen die Serienlänge dem grünen Serien-Array mit dem Index 0 zu (wir speichern es im Puffer). Wir erhöhen den Array-Index um eins (die nächsten werden nun 1, 2, 3 usw. sein), setzen den Serienwert auf eins zurück und warten auf den Beginn der nächsten grünen Serie.
  • Ähnliche Manipulationen werden mit der roten Reihenanordnung durchgeführt.

Solange der Zweck des Füllens dieser Felder nicht klar ist, wird kein Algorithmus geboren. Es ist nicht klar, für welche weiteren Zwecke diese Arrays verwendet werden sollen. Daher gibt es keinen Algorithmus, der sich für ihre Speicherung eignet. Schließlich werden sie ständig mit neuen Daten überschrieben. Sie sprechen von der Länge der Serie. Die grüne Serie wird beendet, sobald die gelbe oder rote Serie beginnt. Ebenso endet die rote Serie, sobald die gelbe oder grüne Serie beginnt. Das heißt, dass nur eine Serie, die gerade in Kraft ist, und die vorhergehende Serie aktuell sind. Oder es sollte mehrere solcher Serien geben, die sich abwechseln.

Kurz gesagt - in der Sprache der Bauern: Wozu brauchen wir diese Reihen von Serien? Wie wird sie in der Pute grafisch dargestellt, oder wozu?

 

HALLO!!!

Wer würde helfen , einen EA mit Funktionen zu schreiben

1 offene Zeit H und M

2 Multiplikator für das Verlustvolumen (Los)

3 Losgrößen

4 Verluststopp

5 Gewinnmitnahme

nur für die Position Kaufen

Es scheint einfach zu sein, aber es funktioniert nicht

 
artmedia70:

Solange der Zweck der Befüllung dieser Felder nicht klar ist, kann kein Algorithmus erstellt werden. Es ist nicht klar, für welche weiteren Zwecke diese Arrays verwendet werden sollen. Daher gibt es keinen Algorithmus, um sie zu speichern. Schließlich werden sie ständig mit neuen Daten überschrieben. Sie sprechen von der Länge der Serie. Die grüne Serie wird beendet, sobald die gelbe oder rote Serie beginnt. Ebenso endet die rote Serie, sobald die gelbe oder grüne Serie beginnt. Das heißt, dass nur eine Serie, die gerade in Kraft ist, und die vorhergehende Serie aktuell sind. Oder es sollte mehrere solcher Serien geben, die sich abwechseln.

Kurz gesagt - in der Sprache der Bauern: Wozu brauchen wir diese Reihen von Serien? Wie wird sie in der Pute grafisch dargestellt, oder wozu?

Der Code zeigt, dass es für jede Art von Serie (grün oder rot) ein anderes Feld gibt.

Zweck: Sammlung statistischer Informationen für weitere Analysen, sowohl mit MQL-Tools als auch mit Excel.

Einfach ausgedrückt, sollte das Array etwa so aussehen

RoteSerie[0]=10; RoteSerie[1]=11; RoteSerie[2]=4 ...

GreenSeries[0]=6; GreenSeries[1]=8; GreenSeries[2]=10 ...

Falls es von Bedeutung ist, die Dynamik des Farbwechsels ist wie folgt: Grün kann sich nicht in Rot verwandeln, und Rot kann sich nicht in Grün verwandeln. Das heißt, es gibt immer ein Gelb dazwischen.

 

Ist es erforderlich, die Parameter nach dem Ticket aufzulisten, wenn ein Auftrag als abgeschlossen gilt und abgeschlossen werden muss?

Beispiel: OrderClose(OrderTicket(),OrderLots(),Bid,30,Blue);

durch OrderClose(OrderTicket(),NULL,NULL,NULL) ersetzen;

oder zu OrderClose(OrderTicket(),EMPTY,EMPTY,EMPTY);

Ist es möglich, ihn noch kürzer zu schreiben, wenn man nur das Ticket berücksichtigt?

 
rosomah:

Ist es notwendig, die Parameter nach dem Ticket aufzulisten, wenn ein Auftrag als abgeschlossen gilt und abgeschlossen werden muss?

Beispiel: OrderClose(OrderTicket(),OrderLots(),Bid,30,Blue);

durch OrderClose(OrderTicket(),NULL,NULL,NULL) ersetzen;

oder zu OrderClose(OrderTicket(),EMPTY,EMPTY,EMPTY);

Ist es möglich, ihn noch kürzer zu schreiben, wenn man nur das Ticket berücksichtigt?


Nein. Es gibt ein Konzept des partiellen Auftragsabschlusses. Daher müssen die Parameter explizit angegeben werden. Versuchen Sie, in der Demo eine Order mit Lot=1,5 zu eröffnen und diese Order dann mit Lot=1 zu schließen. Sie werden sehen, dass Sie, wenn der Auftrag in den Gewinn gegangen ist, nicht den gesamten Auftrag, sondern nur einen Teil der Lose schließen können, so dass die verbleibenden Lose weiterhin in den Gewinn gehen können.
 
silhouette:

Der Code zeigt, dass es für jede Art von Serie (grün oder rot) ein anderes Array gibt.

Zweck: Sammlung statistischer Informationen für weitere Analysen, sowohl mit MQL-Tools als auch mit Excel.

Einfach ausgedrückt, sollte das Array etwa so aussehen

RoteSerie[0]=10; RoteSerie[1]=11; RoteSerie[2]=4 ...

GreenSeries[0]=6; GreenSeries[1]=8; GreenSeries[2]=10 ...

Falls es von Bedeutung ist, die Dynamik der Farbveränderung ist wie folgt: Grün kann sich nicht in Rot verwandeln, und Rot kann sich nicht in Grün verwandeln. Das heißt, es gibt immer ein Gelb dazwischen.

Richten Sie also zwei zweidimensionale Arrays ein. Eine für die grünen Daten und eine für die roten Daten. In die eine Dimension schreiben Sie die Zeit, in die andere den numerischen Wert. Sobald die grünen Daten erscheinen, erhöhen Sie das grüne Feld um 1 und schreiben Sie die Zeit und den Wert des Nullbalkens ein. Machen Sie dasselbe mit dem roten Feld. Nachdem die Daten in den Arrays gesammelt wurden, können Sie sie nach Bedarf verarbeiten. Oder Sie schreiben alle Daten vom Expert Advisor auf einmal in die Datei.
 

Hallo zusammen.

Wie erkenne ich von einem EA eröffnete Orders von denselben Orders mit einer leeren Magie, die manuell eröffnet wurden?

 
swird:

Hallo zusammen.

Wie erkenne ich eine von einem EA eröffnete Order von einer manuell eröffneten Order mit einer leeren Magie?

In der Bestellschleife sollten wir den Operator OrderMagicNumber wie folgt überprüfen:

if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {  if (OrderMagicNumber()==MagNum) // тут
         {  //--- некоторое действие.

}  }  }  }
 
artmedia70:
Richten Sie also zwei zweidimensionale Arrays ein. Eine für die grünen Daten und eine für die roten Daten. In die eine Dimension schreiben Sie die Zeit, in die andere den numerischen Wert. Sobald die grünen Daten erscheinen, erhöhen Sie das grüne Feld um 1 und tragen die Zeit und den Wert des Nullbalkens ein. Machen Sie dasselbe mit dem roten Feld. Nachdem die Daten in den Arrays gesammelt wurden, können Sie sie nach Bedarf verarbeiten. Oder Sie schreiben alle Daten vom Expert Advisor auf einmal in die Datei.

Ich danke Ihnen.

Aber ich kann nicht verstehen, warum man eine Zeitmessung einführen sollte. Schließlich gibt es mehrere Takte in einer Serie und ihre Zeiten sind unterschiedlich. Auf diese Weise ist es nicht möglich, die Serie aufzuzeichnen.

Und noch etwas: Ich kann nicht verstehen, wo in meinem Code ein logischer Fehler ist. Was ist der Grund dafür, dass es nicht funktioniert? Ohne sie ist jeder Versuch, etwas neu zu machen, nutzlos.

 
silhouette:

Ich danke Ihnen.

Aber ich kann nicht verstehen, warum man eine Zeitmessung durchführen sollte. Schließlich gibt es mehrere Takte in einer Serie und ihre Zeiten sind unterschiedlich. Auf diese Weise ist es nicht möglich, die Serie aufzuzeichnen.

Und noch etwas: Ich kann nicht verstehen, wo in meinem Code ein logischer Fehler ist. Was ist der Grund dafür, dass es nicht funktioniert? Ohne sie ist jeder Versuch, etwas neu zu machen, nutzlos.

Warum die Zeit in der Serie? Nun, zum Beispiel (ich weiß nicht, welche Statistiken Sie sammeln wollen) wäre es bei der Verarbeitung statistischer Daten nützlich, nicht nur den Wert, sondern auch den Zeitpunkt dieses Wertes zu kennen. Bei der grafischen Darstellung in Excel wäre es möglich, die Lage der Reihe und der Daten in dieser Reihe, ihre relative Position zueinander (rot und grün) usw. deutlich zu erkennen. Wenn Sie es nicht brauchen, verwenden Sie es nicht.

Ich habe mir Ihren Code nicht angesehen und kann nicht sagen, wo der logische Fehler liegt. Ich erinnere mich - Sie haben ihn auf der Grundlage von Victors Indikator (Vinin) erstellt, warum fragen Sie Victor nicht danach?