[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 47
Wenn Sie die Funktion kennen, mit der Sie den Gesamtsaldo des Verlusts der geschlossenen Positionen durch SL und den Gesamtsaldo der offenen gewinnbringenden Geschäfte berechnen können, schreiben Sie bitte.
Die Berechnung des Verlustsaldos sollte mit dem letzten maximalen Einzahlungswert beginnen.
Ihre Frage ist der vorherigen etwas ähnlich, deshalb habe ich die Funktion aus der vorherigen Antwort ein wenig abgeändert. Ich gebe zu, dass ich es nicht getestet habe, aber es sollte funktionieren. Die Variablen Gewinn und Verlust, die auf globaler Ebene angegeben werden, sollten den Gesamtgewinn bzw. -verlust für die geschlossenen Positionen anzeigen.
Wenn Sie dies auch für offene Aufträge tun müssen, fügen Sie eine zweite for-Schleife hinzu, um diese nicht nach der Historie, sondern nach dem Kriterium OrdersTotal() auszuwählen: for(int n=1; n<=OrdersTotal(); n++)
Und addieren Sie die erhaltenen Werte zu den gleichen Variablen Gewinn und Verlust.
//+----------------------------------------------------------------------------+// Прибыльно или убыточно закрылся последний ордер, и возврат типа такого ордераint fHistory(){
profit = 0; loss = 0;
for(int i=OrdersHistoryTotal(); i >= 0; i--){ // Выборка в историиif (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true){ // Если есть следующий в историиif(OrderMagicNumber()!=magN) continue; // Ордера не нашего эксперта
if(OrderProfit() > 0 ) profit = profit+OrderProfit(); // Если прибыль по посл.ордеру - суммируем if(OrderProfit() < 0 ) loss = loss + OrderProfit(); // Если убыток по посл.ордеру - суммируем
}
}
return(-1);
}
Ich muss zum Beispiel wissen, ob ein ausstehendes Kauflimit ausgelöst wurde und wenn ja, zu welchem Preis, und dann ein neues setzen.
Wenn bei jedem Tick mit der Funktion OrderType() ein Auftrag vom Typ OP_BUYLIMIT vorhanden ist, bedeutet das Verschwinden dieses Typs, dass der Auftrag geöffnet und zu OP_BUY geworden ist. Alle 6 Typen sindhier aufgeführt. Mit der Funktion OrderOpenPrice() können Sie herausfinden, zu welchem Preis der Auftrag eröffnet wurde.
Wie erkenne ich, ob ein Auftrag einen Trailing-Stop ausgelöst hat, und wie kann ich neue Aufträge platzieren, wenn der Trailing-Stop ausgelöst wurde?
Wollten Sie den Auftrag schließen oder ändern? Wenn geschlossen, müssen Sie wissen, ob sie gerade geschlossen wurde? Oder wurde er mit einem StopLoss geschlossen? (Er kann bei TakeProfit und OrderClose() oder OrderCloseBy() schließen)
wobei i_trading_TF eine global als extern deklarierte Variable ist. Wenn ich also meinen Expert Advisor auf einem Chart einstelle, kann ich den Wert dieser Variable im Pop-up-Fenster einstellen und so den Zeitrahmen der Balkenöffnung festlegen, den ich kontrollieren möchte.
Ich habe eine ähnliche Funktion in einem Expert Advisor gesehen, allerdings mit einem formalen Parameter im Funktionskopf. Hier ist sie:
Der Zeitrahmen wird über den Funktionsparameter übergeben. Wenn die Variablei_trading_TF jedochauf globaler Ebene deklariert ist, macht es meines Erachtens keinen Sinn, sie über einen formalen Parameter zu übergeben, da ihre Sichtbarkeit nicht eingeschränkt ist.
Bitte äußern Sie sich zu diesem Punkt.
Die erste Option funktioniert auch bei mir, aber es ist seltsam, dass manche Programmierer die Angewohnheit haben, auch Funktionen mit formalen Parametern vollzustopfen, bei denen ich es selbst nicht tun würde.
pu6ka: Überwachen Sie bei jedem Tick das Vorhandensein eines Auftrags vom Typ OP_BUYLIMIT mit der Funktion OrderType(). Wenn dieser Typ verschwindet, bedeutet dies, dass der Auftrag geöffnet und zum Typ OP_BUY geworden ist. Alle 6 Typen sindhier aufgeführt. Mit der Funktion OrderOpenPrice() können Sie herausfinden, zu welchem Preis der Auftrag eröffnet wurde.
Das muss nicht sein. Er kann manuell getötet werden. Vielmehr ist es notwendig, sich das Ticket des Auftrags zu merken; sobald wir das Fehlen des Auftrags mit diesem Ticket und das Auftreten einer Marktposition mit demselben Ticket feststellen - dann ja, wird es ausgelöst...
wobei i_trading_TF eine global als extern deklarierte Variable ist. Wenn ich also meinen Expert Advisor auf einem Chart einstelle, kann ich den Wert dieser Variable im Pop-up-Fenster einstellen und so den Zeitrahmen der Balkenöffnung festlegen, den ich kontrollieren möchte.
Ich habe eine ähnliche Funktion in einem Expert Advisor gesehen, allerdings mit einem formalen Parameter im Funktionskopf. Hier ist sie:
Der Zeitrahmen wird über den Funktionsparameter übergeben. Wenn die Variablei_trading_TF jedochauf globaler Ebene deklariert ist, macht es meines Erachtens keinen Sinn, sie über einen formalen Parameter zu übergeben, da ihre Sichtbarkeit nicht eingeschränkt ist.
Bitte äußern Sie sich zu diesem Punkt.
Die erste Option funktioniert auch bei mir, aber es ist seltsam, dass manche Programmierer die Angewohnheit haben, auch Funktionen mit formalen Parametern vollzustopfen, bei denen ich es selbst nicht tun würde.
Es macht Sinn, wenn der EA mehrere Frames analysiert und bei jedem Frame ein neuer Bar gebildet werden muss.
Das ist noch nicht alles, fügen wir den Namen des Instruments zu den übergebenen Parametern hinzu
artmedia70: Nicht unbedingt. Er kann auch manuell getötet werden. Vielmehr müssen Sie sich das Ticket der schwebenden Order merken; sobald eine schwebende Order mit diesem Ticket fehlt und eine Marktposition mit demselben Ticket auftaucht, wird sie ausgelöst...
Ja, das ist eher richtig. Aber wir können die Idee im Tester so überprüfen. Um vier Arten von Pending Orders zu verfolgen, benötigen wir 4 zusätzliche Variablen, um die Ticks zu verfolgen. Wenn jedoch für einen Typ mehrere ausstehen, sollten Sie auf jeden Fall eine Variable für Tickets eingeben.
Wenn Sie die Funktion kennen, mit der Sie den Gesamtsaldo des Verlusts der geschlossenen Positionen durch SL und den Gesamtsaldo der offenen gewinnbringenden Geschäfte berechnen können, schreiben Sie bitte.
Die Berechnung des Verlustsaldos sollte mit dem letzten maximalen Einzahlungswert beginnen.
Ihre Frage ist der vorherigen etwas ähnlich, deshalb habe ich die Funktion aus der vorherigen Antwort ein wenig abgeändert. Ich gebe zu, dass ich es nicht getestet habe, aber es sollte funktionieren. Die Variablen Gewinn und Verlust, die auf globaler Ebene angegeben werden, sollten den Gesamtgewinn bzw. -verlust für die geschlossenen Positionen anzeigen.
Wenn Sie dies auch für offene Aufträge tun müssen, fügen Sie eine zweite for-Schleife hinzu, um diese nicht nach der Historie, sondern nach dem Kriterium OrdersTotal() auszuwählen: for(int n=1; n<=OrdersTotal(); n++)
Und addieren Sie die erhaltenen Werte zu den gleichen Variablen Gewinn und Verlust.
Ich muss zum Beispiel wissen, ob ein ausstehendes Kauflimit ausgelöst wurde und wenn ja, zu welchem Preis, und dann ein neues setzen.
Wie erkenne ich, ob ein Auftrag einen Trailing-Stop ausgelöst hat, und wie kann ich neue Aufträge platzieren, wenn der Trailing-Stop ausgelöst wurde?
Wenn geschlossen, müssen Sie wissen, ob sie gerade geschlossen wurde? Oder wurde er mit einem StopLoss geschlossen? (Er kann bei TakeProfit und OrderClose() oder OrderCloseBy() schließen)
Hier ist meine neue Balkenkontrollfunktion:
wobei i_trading_TF eine global als extern deklarierte Variable ist. Wenn ich also meinen Expert Advisor auf einem Chart einstelle, kann ich den Wert dieser Variable im Pop-up-Fenster einstellen und so den Zeitrahmen der Balkenöffnung festlegen, den ich kontrollieren möchte.
Ich habe eine ähnliche Funktion in einem Expert Advisor gesehen, allerdings mit einem formalen Parameter im Funktionskopf. Hier ist sie:
Der Zeitrahmen wird über den Funktionsparameter übergeben. Wenn die Variablei_trading_TF jedochauf globaler Ebene deklariert ist, macht es meines Erachtens keinen Sinn, sie über einen formalen Parameter zu übergeben, da ihre Sichtbarkeit nicht eingeschränkt ist.
Bitte äußern Sie sich zu diesem Punkt.
Die erste Option funktioniert auch bei mir, aber es ist seltsam, dass manche Programmierer die Angewohnheit haben, auch Funktionen mit formalen Parametern vollzustopfen, bei denen ich es selbst nicht tun würde.
Überwachen Sie bei jedem Tick das Vorhandensein eines Auftrags vom Typ OP_BUYLIMIT mit der Funktion OrderType(). Wenn dieser Typ verschwindet, bedeutet dies, dass der Auftrag geöffnet und zum Typ OP_BUY geworden ist. Alle 6 Typen sindhier aufgeführt. Mit der Funktion OrderOpenPrice() können Sie herausfinden, zu welchem Preis der Auftrag eröffnet wurde.
Hier ist meine neue Balkenkontrollfunktion:
wobei i_trading_TF eine global als extern deklarierte Variable ist. Wenn ich also meinen Expert Advisor auf einem Chart einstelle, kann ich den Wert dieser Variable im Pop-up-Fenster einstellen und so den Zeitrahmen der Balkenöffnung festlegen, den ich kontrollieren möchte.
Ich habe eine ähnliche Funktion in einem Expert Advisor gesehen, allerdings mit einem formalen Parameter im Funktionskopf. Hier ist sie:
Der Zeitrahmen wird über den Funktionsparameter übergeben. Wenn die Variablei_trading_TF jedochauf globaler Ebene deklariert ist, macht es meines Erachtens keinen Sinn, sie über einen formalen Parameter zu übergeben, da ihre Sichtbarkeit nicht eingeschränkt ist.
Bitte äußern Sie sich zu diesem Punkt.
Die erste Option funktioniert auch bei mir, aber es ist seltsam, dass manche Programmierer die Angewohnheit haben, auch Funktionen mit formalen Parametern vollzustopfen, bei denen ich es selbst nicht tun würde.
Es macht Sinn, wenn der EA mehrere Frames analysiert und bei jedem Frame ein neuer Bar gebildet werden muss.
Das ist noch nicht alles, fügen wir den Namen des Instruments zu den übergebenen Parametern hinzu
und die Tatsache zu analysieren, dass sich ein neuer Balken bildet, egal bei welchem Instrument und in welchem Zeitraum.Nicht unbedingt. Er kann auch manuell getötet werden. Vielmehr müssen Sie sich das Ticket der schwebenden Order merken; sobald eine schwebende Order mit diesem Ticket fehlt und eine Marktposition mit demselben Ticket auftaucht, wird sie ausgelöst...
Es macht Sinn, wenn der EA mehrere Frames analysiert und jeder Frame die Tatsache benötigt, einen neuen Balken zu bilden.
Das ist noch nicht alles, fügen wir den Namen des Instruments zu den Parametern hinzu
und analysieren Sie die Tatsache, dass sich ein neuer Balken bildet, ein beliebiges Symbol, einen Zeitraum.Halten Sie es für angemessen, ein Symbol in den "Mechanismus zum Auffinden eines neuen Balkens" "einzubeziehen"? :)))
Es wäre interessant, eine universelle Kontrolle der neuen Leiste zu schaffen. Übrigens - dafür ist alles da
Es wäre interessant, eine universelle Kontrolle der neuen Leiste durchzuführen. Übrigens - dafür ist alles da