Int OrderSenden (String - Symbol, Symbol int cmd, Operation doppelte Lautstärke, doppelte doppelte Sperrung, doppelte Stoplosung, doppelte Stopp - Verlängerung, doppelte Takeprofit Farbe) in Symbol für den Handel. In der Betriebsart. Es kann eine beliebige der Handelsoperationsaufzählung sein. In Anzahl der Lose. In Höchstpreisrückgang für Kauf - oder Verkaufsaufträge. In der Stoppdämpfung Ebene. In Take Gewinn-Ebene. In Bestellung Kommentartext. Der letzte Teil des Kommentars kann vom Server geändert werden. In Auftrag magische Zahl. Kann als benutzerdefinierter Bezeichner verwendet werden. In Auftragslaufzeit (nur für ausstehende Bestellungen). In Farbe des Öffnungspfeils auf der Tabelle. Wenn Parameter fehlt oder CLRNONE-Wert ist, wird der Öffnungspfeil nicht im Diagramm gezeichnet. Gibt die Nummer des Tickets zurück, das dem Auftrag vom Handelsserver zugewiesen wurde, oder -1, falls er fehlschlägt. Um zusätzliche Fehlerinformationen zu erhalten, muss man die GetLastError () - Funktion aufrufen. Bei Eröffnung einer Market Order (OPSELL oder OPBUY) können nur die aktuellen Preise von Bid (für den Verkauf) oder Ask (zum Kauf) als offener Preis verwendet werden. Wenn die Operation mit einer von der aktuellen abweichenden Sicherheit ausgeführt wird, muss die Funktion MarketInfo () mit dem Parameter MODEBID oder MODEASK verwendet werden, damit die letzten Quotes für diese Sicherheit erhalten werden können. Berechneter oder unnormalisierter Preis kann nicht angewendet werden. Wurde im Preisfaden nicht der angeforderte offene Preis angegeben oder nach der Anzahl der Nachkommastellen nicht normiert, so wird der Fehler 129 (ERRINVALIDPRICE) generiert. Wenn der angeforderte offene Preis vollständig veraltet ist, wird der Fehler 138 (ERRREQUOTE) unabhängig vom Schlupfparameter erzeugt. Wenn der angeforderte Preis nicht aktuell ist, aber in dem Thread vorhanden ist, wird die Bestellung zum aktuellen Preis und nur dann geöffnet, wenn der aktuelle Preis innerhalb des Bereichs des Preisrutschens liegt. StopLoss und TakeProfit Ebenen können nicht zu nah an den Markt. Die minimale Distanz der Stopppegel in Punkten kann mit der Funktion MarketInfo () mit dem Parameter MODESTOPLEVEL ermittelt werden. Bei fehlerhaften oder unnormalisierten Stoppniveaus wird der Fehler 130 (ERRINVALIDSTOPS) erzeugt. Ein Nullwert von MODESTOPLEVEL bedeutet entweder das Fehlen jeglicher Einschränkungen für die minimale Distanz für Stop Loss Take Profit oder die Tatsache, dass ein Trade-Server einige externe Mechanismen für die dynamische Niveauregelung verwendet, die nicht im Client-Terminal übersetzt werden können. Im zweiten Fall kann GetLastError () den Fehler 130 zurückgeben, weil hier MODESTOPLEVEL tatsächlich quotfloating ist. Bei der Platzierung einer ausstehenden Bestellung kann der offene Preis nicht zu nahe am Markt sein. Die minimale Entfernung des ausstehenden Marktpreises aus dem aktuellen Markt kann man mit der Funktion MarketInfo () mit dem Parameter MODESTOPLEVEL erreichen. Im Falle eines falschen offenen Preises einer ausstehenden Bestellung wird der Fehler 130 (ERRINVALIDSTOPS) generiert. Die Anwendung der ausstehenden Auftragslaufzeit kann in einigen Handelsservern deaktiviert werden. Wenn in diesem Fall ein Wert ungleich Null im Ablaufparameter angegeben wird, wird der Fehler 147 (ERRTRADEEXPIRATIONDENIED) generiert. Auf einigen Handelsservern kann der Gesamtbetrag offener und ausstehender Aufträge begrenzt werden. Wenn diese Grenze überschritten wurde, wird keine neue Bestellung geöffnet (oder kein ausstehender Auftrag wird platziert) und der Handelsserver gibt den Fehler 148 (ERRTRADETOOMANYORDERS) zurück. -------------------------------------------------- ---------------- Scriptprogramm-Startfunktion --------------------------------- ------------------------------------ void OnStart () --- erhalten minimale Stop-Ebene double minstoplevel MarketInfo (Symbol (), MODESTOPLEVEL) Drucken ("Minimum Stop Levelquot, minstoplevel, quotquotquot) doppelter Preis Ask --- berechnete SL - und TP-Preise müssen normalisiert werden Double Stoploss NormalizeDouble (Bid - minstoplevel Punkt Ziffern) double takeprofit NormalizeDouble (Bid minstoplevel Point Ziffern) --- Platz Markt bestellen, um zu kaufen 1 Los int Ticket OrderSend (Symbol (), OPBUY, 1, Preis, 3, Stoploss, takeprofit, quotMy orderquot, 16384,0, clrGreen) if (ticketlt0) Print (quotOrderSend fehlgeschlagen Ich habe eine EA, die funktioniert gut für mich, aber ich versuchte, es ein wenig zu ändern, aber nicht schaffen, um es zu funktionieren. Alles, was ich tun möchte, ist, einen Auftrag mit einem nachlaufenden Stop zu öffnen. Das Problem ist, dass die schleppende Haltestelle für jeden Handel unterschiedlich ist (abhängig von der Höhe der aktuellen Kerze). Es gibt immer einen Ordnungsfehler 130, was bedeutet, daß der Stopverlust zu nahe ist. Das ist nicht möglich, weil ich täglich tausche und der Stopverlust immer mindestens 100 Pips beträgt. Ich vermute, das Problem könnte sein, dass es irgendwie immer den nachlaufenden Stopp 0 berechnet, denn der nachlaufende Stopp wird immer direkt nach dem Handel berechnet und die Ordermodify-Funktion wird danach gestartet. Aber ich habe versucht, die nachlaufende Stop 150 zum Beispiel und es gibt mir immer noch, dass Fehler (aber dieses Mal nur manchmal). Wenn jemand helfen könnte, würde ich mich wirklich freuen. Thx hier ist der Code (es ist nicht ganz, es würde nicht hier passen) Ich denke, Sie haben zu normalisieren Ausdrücke "Bid - Trailingstop Pointquot und quot fragen Trailingstop Pointquot, weil Trailingstop doppelt ist. Roger: Ich denke, Sie haben zu normalisieren Ausdrücke "Bid - Trailingstop Pointquot und quot fragen Trailingstop Pointquot, weil Trailingstop doppelt ist. Das Problem muss woanders sein. Aber danke trotzdem -) das Problem muss woanders sein. Aber danke trotzdem -) Schwer zu sicher sein, weil Sie sagen, Sie havent gepostet den gesamten Code. Jedoch, durch das Aussehen von ihm, ist Trailingstop nicht eine statische oder globale Variable. Sein erklärt im quotbullishquot Abschnitt. Daher wird sein Wert zum Zeitpunkt der Bestellung gesetzt werden, aber nicht danach bestehen bleiben. Bei nachfolgenden Aufrufen von start (), wenn ein Auftrag geändert wird, sollte die Variable "Trailingstop" Null enthalten. Daher wird der Aufruf von OrderModify () versuchen, den Stopp auf Ask 0 Point oder Bid 0 Point zu setzen. Versuchen Sie, ein Slippage anders als Null und überprüfen Sie, dass 100 Punkte ist, was Sie denken und nicht 10 Punkte auf einer 5 Dezimalstelle Plattform. Drucken Sie die Werte direkt nach dem Handel zu sehen, sie sind korrekt vielleicht Indikator zurückkehren dodgy Werte manchmal.
Comments
Post a Comment