Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie lässt sich am besten feststellen, ob ein Handel abgesichert ist?
Der Fehler 139 (ERR_ORDER_LOCKED) tritt bei dem Versuch auf, eine Order zu verarbeiten, die gerade vom Broker bearbeitet wird. Dies geschieht in der Regel, wenn eine ausstehende Order, ein Stop-Loss, ein Take-Profit oder der Ablauf einer Order ausgelöst wird (auf der Brokerseite) und im selben Moment versucht wird, eine Verarbeitung auf der Benutzerseite durchzuführen. Der Fehler hängt nicht mit der Absicherung zusammen
{Zitat} Entschuldigung, ich war mir nicht sicher, da einige Händler die Begriffe Sperren/Entsperren verwenden, um Hedging-/Unhedging-Aufträge zu beschreiben (z. B. hier).
... oder Einfrieren/Auftauen... fast immer ein Zeichen einer übermäßigen Hebelwirkung. Wenn Sie (ich predige übrigens nicht, wenn ich das sage) entgegengesetzte Befehle verwenden, ohne Closeby zu verwenden, wäre es mir eine Ehre, Ihr IB zu sein
https://www.tradingintuitive.com/attachments/1529172125.png
https://www.tradingintuitive.com/attachments/1529172125.png
NespkrSpain
16-06-2024 14:18,
... sowieso wegen der gesperrten Bestellungen... es geht darum, dass die Bestellung gesperrt wird... mit einem Fehlercode 139 ERR_ORDER_LOCKED
Entschuldigung, ich war mir nicht sicher, da einige Händler die Begriffe “Sperren/Entsperren� verwenden, um Hedging-/Unhedging-Aufträge zu beschreiben (z. B. hier).
{Zitat} Ich verwende für meine gesamte Codierung den Metaeditor/Compiler Build 509, daher bin ich mit einigen der von Ihnen verwendeten Syntax nicht vertraut. Ich weiß zum Beispiel nicht genau, was ChartID() macht. Außerdem bin ich mir nicht sicher, was Sie erreichen wollen. und es ist schwer zu verstehen, wie Sie einige der anderen Variablen verwenden, ohne den Rest des EA-Codes zu sehen. Und was sind gesperrte Bestellungen? Der Begriff ist mir noch nie begegnet. Nur Sie wissen genau, was Sie mit Ihrem EA erreichen möchten. Ich kann Ihnen nur vorschlagen, dass Sie Ihren Code testen und sehen ...
Oh! Ich verstehe das vollkommen...keine Probleme. Ich habe mich nur auf die Verwendung globaler Variablen bezogen ... sowieso auf die gesperrten Bestellungen ... es geht darum, dass die Bestellung gesperrt wird ... jedenfalls mit dem Fehlercode 139 ERR_ORDER_LOCKED, danke für die prompte Antwort.
NespkrSpain
16-06-2024 15:25,
Glaubst du, dass das funktionieren wird? Allerdings bin ich mir nicht sicher, ob gesperrte Bestellungen ausgeschlossen werden können.
Ich erstelle meine gesamte Codierung mit dem Metaeditor/Compiler Build 509, daher bin ich mit einigen der von Ihnen verwendeten Syntax nicht vertraut. Ich weiß zum Beispiel nicht genau, was ChartID() macht. Außerdem bin ich mir nicht sicher, was Sie erreichen wollen. und es ist schwer zu verstehen, wie Sie einige der anderen Variablen verwenden, ohne den Rest des EA-Codes zu sehen. Und was sind gesperrte Bestellungen? Der Begriff ist mir noch nie begegnet. Nur Sie wissen genau, was Sie mit Ihrem EA erreichen möchten. Ich kann Ihnen nur empfehlen, Ihren Code zu testen und zu prüfen, ob er die gewünschten Ergebnisse liefert. Tut mir leid, dass ich Ihnen nicht weiterhelfen kann.
1 Anhang(e)
Ich muss zugeben, dass ich nicht 100 % sicher bin, was Sie erreichen möchten, aber haben Sie über die Verwendung von GlobalVariables nachgedacht? ....
Hallo Hanover... Glauben Sie, dass das funktionieren wird? Allerdings bin ich mir nicht sicher, ob gesperrte Bestellungen ausgeschlossen werden können. Grüße..
https://www.tradingintuitive.com/forex-brokers/147-cent-account-low-spreads-micro-lots-broker.html
olmo.red
16-06-2024 15:56,
1 Anhang(e) Danke!! Ich verwende Ihr StrToNumber tatsächlich bereits, um die Ticketnummern zu analysieren, die ich in die Hedge-Kommentare eingegeben habe (zusammen mit vielen Ihrer anderen Funktionen, sie sind großartig!). Aber im Grunde denke ich, dass ich eine Lösung habe, die so funktioniert: � Es gibt eine Schleife, die alle aktiven Trades betrachtet � von dieser Lücke aus rufe ich im Grunde eine andere Lücke auf, die eine weitere Schleife hat und Parameter aus der ersten Orderauswahl mit den Orders in der vergleicht zweite Ordnung wählen Sie wie folgt aus:
https://www.tradingintuitive.com/crypto-trading/541-programming-ea-gts-pro.htmlAllerdings gefällt mir Ihre Vorstellung von globalen Variablen für diese Aufgabe. Ich bin damit einverstanden, dass das Überschreiben des Bestellkommentars bei teilweisem Schließen sehr chaotisch ist, also füge ich das einfach nicht hinzu. Vielleicht sollte ich mir deine Idee genauer ansehen
NespkrSpain
16-06-2024 16:12,
Ich muss zugeben, dass ich nicht 100 % sicher bin, was Sie erreichen möchten, aber haben Sie über die Verwendung von GlobalVariables nachgedacht? Wenn Sie Ihren Handel beispielsweise absichern (und ganz spontan), könnten Sie so etwas tun: GlobalVariableSet(@Hedge_ NumberToStr(PrimaryTicketNum,Z10), SecondaryTicketNum); und, wenn Sie einen Querverweis in die andere Richtung benötigen: GlobalVariableSet(@Hedge_ NumberToStr(SecondaryTicketNum,Z10), PrimaryTicketNum); Daher würden Sie mit einem GV namens etwa @Hedge_0000001001 mit einem Wert von 1002 und einem GV mit dem Namen etwa @Hedge_0000001002 mit einem Wert von 1001 enden (NumberToStr ist eine Funktion, die ich für meinen eigenen Gebrauch geschrieben habe � siehe diesen Thread oder die von pips4life). Build 600 Update hier. Oder Sie könnten sich etwas �“hnliches ausdenken......) Wenn Sie später herausfinden möchten, ob eine Bestellung abgesichert ist: HedgedTicketNum = GlobalVariableGet(@Hedge_ NumberToStr(TicketNum,Z10)); Wenn HedgedTicketNum dann 0 enthält, ist die Bestellung TicketNum nicht abgesichert, andernfalls wird HedgedTicketNum auf die Ticketnummer ihrer Schwesterbestellung gesetzt. Gelegentlich möchten Sie möglicherweise eine Haushaltsführung durchführen, d. h. die OrdersHistory durchlaufen und für jedes GV-Paar ein GlobalVariableDel() ausführen, nachdem beide Bestellungen endgültig geschlossen wurden. Ich verwende GVs häufig, da (im Gegensatz zu anderen Variablen und Arrays) über mehrere EAs/Charts hinweg auf sie zugegriffen werden kann und sie auch dann intakt bleiben, wenn ein EA entfernt oder ein Diagramm geschlossen wird usw. Ich versuche zu vermeiden, den OrderComment mit diesem Typ zu füllen an Informationen, da diese von MT4 überschrieben werden können, z.B. Wenn Sie eine Bestellung teilweise schließen, werden die Kommentare der alten und neuen Bestellung vollständig überschrieben. Es tut mir leid, wenn ich Ihre Anforderung falsch verstanden habe.
olmo.red
16-06-2024 16:25,
Danke!! Ich werde mir das genauer ansehen. Ich denke, was ich brauche, ist eine Handelsfunktionslücke, die die gesamte Handelslogik übernimmt, dann eine Checkifhedged-Leere, und wenn ich prüfen muss, ob sie abgesichert ist, führe ich einfach eine weitere Schleife aus, um OrderTicket() mit allen anderen zu vergleichen
Giuditta91
16-06-2024 16:39,
Ich kann die Absicherung mit OrderSelect auswählen und das OrderTicket() des Handels finden, den es abgesichert hat, ganz einfach kaufen, indem ich mir nur den OrderComment() der Absicherung ansehe.
Sie haben die wesentliche Idee, die ich oben zitiert habe. Ich würde einfach eine Liste der Ticketnummern und ihrer Absicherungen in einem zweidimensionalen Array führen. In Ihrer init()-Funktion durchsuchen Sie alle offenen Aufträge nach dem OrderComment, der angibt, welcher Auftrag gegen was abgesichert ist, und füllen das Array mit diesen Informationen, der ursprünglichen Ticketnummer in Spalte 0 und der Sicherungsticketnummer in Spalte 1. Wenn die Liste Da davon auszugehen ist, dass die Liste relativ groß ist, empfiehlt es sich, sie zu sortieren, da dies später das Durchsuchen der Liste erleichtert. Sie können eine Gruppe kleiner Hilfsfunktionen erstellen, um die verschiedenen Vorgänge zusammenzufassen, die in dieser Liste ausgeführt werden müssen. Zum BeispielHedgeCreateList() � erstellt zunächst die Liste HedgeAdd( int OrigTicket, int HedgeTicket) � fügt der Liste ein Ticket/Hedge-Paar hinzu HedgeRemove( int OrigTicket ) � entfernt ein Ticket/Hedge-Paar aus der Liste bool IsHedged ( int Ticket ) � gibt true zurück, wenn Ticket eine Absicherung usw. hat
olmo.red
16-06-2024 16:57,
Okay... das bringt mein Gehirn zum Schmelzen, es muss einen besseren Weg geben, das zu machen?!
Ich möchte Trades absichern. Wenn ich die Absicherung platziere, gebe ich die Ticketnummer des ursprünglichen Handels zusammen mit “Absicherung� in den Kommentar zur Absicherung ein. Ich möchte lediglich in der Lage sein, entweder die Absicherung ODER den ursprünglichen Handel auszuwählen und mithilfe von Orderselect-Funktionen anstelle von Long-Lots == Short-Lots usw. zu bestimmen, ob er abgesichert ist oder nicht.
Ich kann die Absicherung mit OrderSelect auswählen und das OrderTicket() des Handels finden, den es abgesichert hat, ganz einfach kaufen, indem ich mir nur den OrderComment() der Absicherung ansehe.
Aber was ich wirklich gerne tun würde, ist die Möglichkeit, einen beliebigen Handel auszuwählen und festzustellen, ob er abgesichert ist. Die ursprünglichen Trades enthalten keine Informationen über die Absicherungen, daher denke ich, dass ich eine verschachtelte Schleife erstellen muss, die einen Trade auswählt und ihn dann erneut durchläuft und die Parameter mit seinen eigenen vergleicht, aber ich bin mir nicht sicher, wie ich das machen soll.
Um vielleicht zu verdeutlichen, was ich tun möchte, finden Sie hier eine Demo dessen, was ich nicht tun kann, da die Verwendung einer einzelnen Schleife bedeutet, dass man sie nicht mit anderen Trades vergleichen kann, aber wirklich, wenn Sie sich einen besseren Weg vorstellen können, dies zu tun, dann ich Ich bin auf jeden Fall ganz Ohr!!
Im Codebeispiel gilt dies für den Fall, dass beide Trades aktiv sind, sodass Sie alle Trades gleichzeitig durchsuchen können. Das wäre ein schönes Ergebnis, das ich nicht lösen kann
Eingefügter Code int j=OrdersTotal()-1; for( int i=j;igt;=0;i--) { if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true ) (OrderMagicNumber()==MagicNumber) (OrderSymbol()==Pair)){/order select if(StringFind(OrderComment(),Hedge)gt;=0) { int ScalpTicket = StrToNumber(OrderComment());}/StrToNumber ist eine Funktion, die alle nicht numerischen Zeichen entfernt if((StringFind(OrderComment( ),Hedge)gt;=0) (StringFind(OrderTicket(),IntegerToString(ScalpTic ket))gt;=0)){ Print(Sie können alle Trades gleichzeitig durchsuchen);} if((StringFind(OrderComment(),Hedge) gt;=0) (StringFind(OrderTicket(),IntegerToString(ScalpTic ket))gt;=0)){ Print(Hedge gefunden, aber nicht Scalp);} if((StringFind(OrderComment(),Hedge)lt;0) ( StringFind(OrderTicket(),IntegerToString(ScalpTick et))gt;=0)){ Print(Kopfhaut gefunden, aber nicht abgesichert);} }//End Order Select }//Ende der Schleife
Powered by vBulletin® Version 4.2.5 Copyright ©2026 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.