Und machen wir einen "Cartoon" daraus (Mehrwährung) - Seite 4

 
rid писал(а) >>

vielleicht reicht eine von diesen, -

Die Funktion PriceOpenLastPos().
Diese Funktion gibt den Eröffnungskurs der zuletzt eröffneten Position zurück. Die Auswahl der zu berücksichtigenden Positionen wird durch externe Parameter festgelegt:
sy - Bezeichnung des Marktinstruments. Wenn dieser Parameter gesetzt ist, berücksichtigt die Funktion nur Positionen des angegebenen Symbols. Der Standardwert - "" - bedeutet ein beliebiges Marktinstrument. NULL-Wert bedeutet das aktuelle Instrument.
op - Handelsoperation, Positionsart. Gültige Werte: OP_BUY, OP_SELL oder -1. Der Standardwert -1 bedeutet eine beliebige Position.
mn - Positionsbezeichner, MagicNumber. Der Standardwert -1 bedeutet einen beliebigen Bezeichner.

https://forum.mql4.com/ru/11287/page24

Danke, ich werde es versuchen. Funktioniert diese Funktion auch im Indikator?

 

Ich kann es nicht sagen. Schließlich eröffnet der Indikator keine Positionen. Warum braucht der Indikator den Preis von offenen oder geschlossenen Positionen?

Sie hat andere Aufgaben.

Ich denke, es wird auch im Indikator funktionieren.

 
rid писал(а) >>

Ich kann es nicht sagen. Schließlich eröffnet der Indikator keine Positionen. Warum braucht der Indikator den Preis von offenen oder geschlossenen Positionen?

Sie hat andere Aufgaben.

Ich denke, es wird auch im Indikator funktionieren.

Wissen Sie, wie man diese Funktion korrekt in den Indikator einfügt?

Beim Kompilieren erzeugt der Editor einen Fehler bei der ersten Klammer und bei den nächsten Variablen.

double PriceOpenLastPos( string sy="", int op=-1, int mn=-1) {
datetime t;
double r=0;
int k=Auftragssumme();

if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
wenn (OrderSymbol()==sy || sy==") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderOpenTime()) {
t=OrderOpenTime();
r=OrderOpenPrice();
}
}
}
}
}
}
}
zurück(r);
}
}

'(' - Funktionsdefinition unerwartet D:\MT4\experts\indicators\Astrea.mq4 (627, 24)
'sy' - Variable nicht definiert D:MT4\experts\indicators\Astrea.mq4 (632, 7)
usw.

 

Das ist schwer zu sagen. Ich bin kein Spezialist für Indizes.

Und ich verstehe nicht, warum der Eröffnungskurs der Order im Indikator berücksichtigt werden sollte.

Sind Sie sicher, dass dieser Indikator für Ihre Zwecke erforderlich ist?

Vielleicht wäre es einfacher, die Funktionen, die Sie benötigen, in einem separaten EA zu implementieren, der die Aufträge berücksichtigt?

 
rid писал(а) >>

Das ist schwer zu sagen. Ich bin kein Spezialist für Indizes.

Und ich verstehe nicht, warum der Eröffnungskurs der Order im Indikator berücksichtigt werden sollte.

Sind Sie sicher, dass dieser Indikator für Ihre Zwecke erforderlich ist?

Vielleicht wäre es einfacher, die notwendigen Funktionen in einem separaten EA zu implementieren, der Aufträge berücksichtigt?

Ich implementiere die Logik der Generierung von Handelssignalen in einem Indikator und sende das generierte Signal über eine globale Variable an den EA, um Aufträge zu öffnen/zu schließen.

Ich brauche den Eröffnungskurs eines Auftrags, um einige Entscheidungen zu treffen, und deshalb versuche ich, dieses Problem zu lösen. Ich habe einen dynamischen Indikator, den Sie nur in einer Demo oder in einem Tester im Visualisierungsmodus debuggen können.

 

Ich habe diese Funktion jetzt in den ersten Truthahn eingefügt, auf den ich gestoßen bin (ATR), und es hat alles funktioniert.

(nur 1 Warnung, wie es sich gehört).

Und in welchen Teil des Codes fügen Sie diese Funktion ein? Sie sollte ganz am Ende des Codes eingefügt werden, außerhalb der START-Funktion.

Rufen Sie dann in der Funktion START diese Funktion auf, um Ihre

 
rid писал(а) >>
Ich habe diese Funktion einfach in den ersten verfügbaren Truthahn (ATR) eingefügt, und es hat alles geklappt.

Wie wurde sie eingefügt? Der gesamte obige Text eins-zu-eins oder als ungültige Unterfunktion?

 
Eins zu eins.
 
rid писал(а) >>
>> Eins zu eins.

Seltsam, ich erhalte beim Kompilieren Fehler.

 
rid писал(а) >>

Ich habe diese Funktion jetzt in den ersten Truthahn eingefügt, auf den ich gestoßen bin (ATR), und es hat alles funktioniert.

(nur 1 Warnung, wie es sich gehört).

Und in welchen Teil des Codes fügen Sie diese Funktion ein? Sie sollte ganz am Ende des Codes eingefügt werden, außerhalb der START-Funktion.

Sie sollten sie in der Funktion START aufrufen, um Berechnungen durchzuführen.

Ich habe es getan, ich habe es außerhalb der Startfunktion eingefügt, und die Kompilierung ging durch.

>> Danke.