Aus irgendeinem Grund funktioniert der externe Operator nicht mehr, wenn Ihre Bibliothek angeschlossen ist, d.h. Variablen werden definiert, alles wird normal kompiliert, und im Prinzip funktioniert der EA, aber gleichzeitig hat der EA keine Parameter, wenn er den Typ startet, obwohl es eine ganze Menge Parameter gibt. Was könnte der Grund dafür sein?
Ich habe dieser Funktion eine Variable j hinzugefügt, für vorletzte Geschäfte.
Wenn man bedenkt, dass die abgeschlossenen Aufträge in OrdersHistoryTotal() nach dem Zeitpunkt des Abschlusses von rechts nach links (der letzte nach rechts) berücksichtigt werden:
double GetProfitLastClosePos (string sy="", int op=-1, int mn=-1,
int j=0) // Искомый (по номеру) ордер от последнего закрытого
{
int k = OrdersHistoryTotal(), li_cnt = 0;
//----if (sy == "0" || sy == "") sy = Symbol();
for (int i = k - 1; i >= 0; i--)
{
if (!OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) continue;
if (OrderSymbol() != sy) continue;
if (OrderType() > 1) continue;
if (op >= 0) if (OrderType() != op) continue;
if (mn >= 0) if (OrderMagicNumber() != mn) continue;
if (j == li_cnt) return (OrderProfit());
li_cnt++;
}
//----return (-1.0);
}
Die Funktion gibt den j-ten Gewinn der letzten abgeschlossenen Bestellung zurück, "gefiltert" nach Symbol, Magie, Typ. Und die Zahlen werden von 0 an gezählt.
Wenn wir berücksichtigen, dass geschlossene Aufträge in OrdersHistoryTotal() nach dem Zeitpunkt des Abschlusses von rechts -> links (der letzte ganz rechts) gezählt werden:
Die Funktion gibt den j-ten Gewinn des letzten geschlossenen Auftrags zurück, "gefiltert" nach Instrument, Magik, Typ. Und die Zahlen werden von 0 an gezählt.
Benötigt wird eine Funktion zum Schließen von Kauf- und Verkaufsaufträgen mit gleichen Lots durch Gegenaufträge, wenn deren Gewinn auf + geht. Ich habe versucht, diese Funktion auszuführen, aber es wird die Fehlermeldung 4108 ausgegeben (falsche Tickets)
Können Sie mir sagen, was das Problem ist?
//+------------------------------------------------------------------+int fCloseBu(){
// Закрываем встречныеdouble LotB,LotS,PrB=0,PrS=0;
int TicketB,TicketS,i, k=OrdersTotal();
for (i=k-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==Symbol() || Symbol()=="")) {
if (Magic_N<0 || OrderMagicNumber()==Magic_N) {
//----------if(OrderType()==OP_BUY){
if (PrB<OrderProfit()+OrderSwap()+OrderCommission()) {
PrB=OrderProfit()+OrderSwap()+OrderCommission();
LotB=OrderLots();
TicketB=OrderTicket();
}
}
if(OrderType()==OP_SELL){
if (PrS<OrderProfit()+OrderSwap()+OrderCommission()) {
PrS=OrderProfit()+OrderSwap()+OrderCommission();
LotS=OrderLots();
TicketS=OrderTicket();
}
}
if (PrB>0 && PrS>0 && LotB==LotS) {
OrderCloseBy(TicketB,TicketS,CLR_NONE);
Print("Закрываем пару встречных ордеров c одинаковыми лотами в плюсе");
}
}
}
}
}
//-------------return(0);
}
//+------------------------------------------------------------------+
Können Sie mir bitte mitteilen, wo ich einen EA finden kann, der beim Überschreiten eines gleitenden Durchschnitts mit der Möglichkeit, den gleitenden Durchschnitt in den Einstellungen zu verschieben, funktioniert?
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Hallo!
Aus irgendeinem Grund funktioniert der externe Operator nicht mehr, wenn Ihre Bibliothek angeschlossen ist, d.h. Variablen werden definiert, alles wird normal kompiliert, und im Prinzip funktioniert der EA, aber gleichzeitig hat der EA keine Parameter, wenn er den Typ startet, obwohl es eine ganze Menge Parameter gibt. Was könnte der Grund dafür sein?
Finden Sie im Code
#property libraryUnd löschen.
Ich habe dieser Funktion eine Variable j hinzugefügt, die für die vorletzte Transaktion steht.
double GetProfitLastClosePos(string sy="", int op=-1, int mn=-1, int j=0) {Ich habe dieser Funktion eine Variable j hinzugefügt, für vorletzte Geschäfte.
Wenn man bedenkt, dass die abgeschlossenen Aufträge in OrdersHistoryTotal() nach dem Zeitpunkt des Abschlusses von rechts nach links (der letzte nach rechts) berücksichtigt werden:
Die Funktion gibt den j-ten Gewinn der letzten abgeschlossenen Bestellung zurück, "gefiltert" nach Symbol, Magie, Typ. Und die Zahlen werden von 0 an gezählt.
Wenn wir berücksichtigen, dass geschlossene Aufträge in OrdersHistoryTotal() nach dem Zeitpunkt des Abschlusses von rechts -> links (der letzte ganz rechts) gezählt werden:
Die Funktion gibt den j-ten Gewinn des letzten geschlossenen Auftrags zurück, "gefiltert" nach Instrument, Magik, Typ. Und die Zahlen werden von 0 an gezählt.
Hallo zusammen.
Benötigt wird eine Funktion zum Schließen von Kauf- und Verkaufsaufträgen mit gleichen Lots durch Gegenaufträge, wenn deren Gewinn auf + geht. Ich habe versucht, diese Funktion auszuführen, aber es wird die Fehlermeldung 4108 ausgegeben (falsche Tickets)
Können Sie mir sagen, was das Problem ist?
Aufträge sollten geschlossen werden, wenn der gesamte Prüfzyklus abgeschlossen ist, d.h. nach der for-Anweisung, nicht innerhalb.
Ich danke Ihnen! Falls noch jemand eine solche Funktion benötigt, wird sie so aussehen:
Gibt es Video-Tutorials zu dieser Sprache?