![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
kombat 17.07.2009 22:13
Addieren Sie, erhalten Sie die Kauf-Sommer 3 Lose und kontern Sie dieses Volumen mit Verkauf 3 Lose.
.......................
Als Option, ja. Wenn jedoch bereits offene Verkaufsaufträge vorliegen, schließt der EA möglicherweise nicht die von Ihnen benötigten Aufträge. Das Problem sollte gelöst werden.
kombat 17.07.2009 22:13.
Aber um Ihre Frage zu beantworten: Ist es möglich, alle Positionen zu schließen?
ja, eins nach dem anderen, es ist ein schnelles Skript, aap! und das war's...
.........................
Das ist es, was ich jetzt benutze. Eine Reihe von Skripten - Sie verwenden dieses und jenes... Ich habe jedoch versucht, meine Strategie in Expert Advisor zu kodieren und bin dabei auf eine Reihe von Schwierigkeiten gestoßen.
Ich habe etwas, das nicht funktioniert hier, es bedeutet, dass es nicht schließen keine Fehler.
In der Funktion ClosePositions(), seiner Bibliothek b-Positions.mqh, verwendet KimIV einen Aufruf seiner anderen Funktion ClosePosBySelect(), die die Verwendung von ee im Tester verbietet:
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
Für Geschichtstests verwenden Sie seine Bibliothek b-ForTest.mqh
In der Funktion ClosePositions(), seiner Bibliothek b-Positions.mqh, verwendet KimIV einen Aufruf seiner anderen Funktion ClosePosBySelect(), die die Verwendung von ee im Tester verbietet:
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
Für Geschichtstests verwenden Sie seine Bibliothek b-ForTest.mqh
Sie haben meinen Code missverstanden... Übersetzen ins Russische... Wenn NICHT Testmodus UND (EA darf NICHT handeln ODER der Expert Advisor wird gestoppt), dann Schleife abbrechen. Einfach ausgedrückt, sorgt diese Zeile dafür, dass die Schleife verlassen wird, wenn Sie die Schaltfläche "Expert Advisors" in der Symbolleiste drücken.
Guten Abend,
Leider gibt es auch eine Diskrepanz mit dem Array... Wenn die Auftragszählung mit einer Bedingung durchgeführt wird, wenn die Lose größer als 0 sind (Lts>0), werden die Lose einzeln geschlossen (wenn der Gewinn erreicht ist), aber der Gesamtgewinn sollte berücksichtigt werden:
Und bei der Bedingung in der Auftragszählung, wenn die Lose mehr als 1 sind (Lts>1), werden die Lose nicht geschlossen:
Bitte teilen Sie mit, wer den Fehler sehen kann.
Oder vielleicht, Igor, habe ich ein Missverständnis bei der Verwendung Ihrer Funktion?
BuyOrdProf=GetProfitOpenBuyPosInCurrency(OP_BUY); // Funktion aufrufen
Igor, bitte sagen Sie mir, wie ich Ihre Funktion PriceOpenLastPos in den Indikator einfügen kann.
Beim Kompilieren gibt der Editor einen Fehler bei der ersten Klammer und den nachfolgenden Variablen aus.
double PriceOpenLastPos( string sy="", int op=-1, int mn=-1) {
datetime t;
double r=0;
int k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (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();
}
}
}
}
}
}
}
return(r);
}
}
'(' - Funktionsdefinition unerwartet D:\MT4\experts\indicators\Astrea.mq4 (627, 24)
'sy' - Variable nicht definiert D:\MT4\experts\indicators\Astrea.mq4 (632, 7)
usw.
Ich implementiere die Logik der Handelssignalbildung in einem Indikator und sende das generierte Signal über eine globale Variable an den Expert Advisor, um Aufträge zu öffnen/zu schließen.
Ich benötige den Eröffnungskurs eines Auftrags, um einige Entscheidungen zu treffen, also versuche ich, das zu tun. Mein Indikator ist ein dynamischer Indikator und kann nur im Demomodus oder im Visualisierungsmodus eines Testers getestet werden.
Dabei wird nicht der Gesamtgewinn berücksichtigt, sondern der Gewinn der einzelnen Aufträge.
BuyOrdProf=GetProfitOpenBuyPosInCurrency(OP_BUY); // Funktionsaufruf
Falsche Parameterübergabe an die Funktion. Das sollte so sein:
Falsche Parameterübergabe an die Funktion. Das sollte so sein:
Das Hinzufügen einer Bindung an das Symbol im Funktionsaufruf ist nicht hilfreich. Warum wird der Gewinn für jede Position separat gezählt (Bild oben)?