Friday 10 November 2017

Forex Error 130


Fixing Error 130 - MT4 Dies sind keine Lösungen für das Problem. Ich verstehe, was das Problem ist, ich weiß nicht, wie es Code, es zu lösen. Ich bekomme Fehler 130 wegen der Tatsache, dass meine offenen Preis auf meine Kauf-Stop ist zu meinem aktuellen Preis zu schließen. Wenn der Preis weiter steigen wird nie gefüllt. Was Im wundernd gibt es eine Weise, den geöffneten Preis durch X-Betrag zu erhöhen, wenn dieses geschieht, bis es gefüllt wird Die zwei Verbindungen und Hunderte jener 62000 Verbindungen enthalten die Lösung, aber Sie erklären mir, dass sie nicht. Wie kommt Er dir die Lösung. Es ist direkt vor Ihren Augen. Problem scheint zu sein, dass Sie jemanden brauchen, um die Arbeit für Sie zu tun. Viel Glück, aber das ist nicht der Weg zu lernen, wie man Code. Ein Tipp für Sie: Um den Fehler 130 für Ihren Buystop-Auftrag zu vermeiden, gehen Sie wie folgt vor: a) erhalten Sie den Stoplevel von Ihrem Broker b) vergleichen Sie den Marktpreis (Ask) Stoplevel mit Ihrem kalkulierten BuyStop-Preis. Wenn Market-Preis Stoplevel gt BuyStop-Preis, Set BuyStop-Preis Marktpreis Stoplevel Buffer-x, dann wird die OrderSend funktionieren, ohne dass Fehler 130 Buffer-x muss von Ihnen selbst definiert werden und wenn angewendet, muss es in Punkten sein, nicht In Pips. Mitglied seit: Apr 2016 Status: Junior Member 1 Post Hallo Ich habe diese ea codiert unten bitte jemand mir helfen, in Bezug auf diese laute Störung 130 ltinvalid stopsgt // -------------------- ---------------------------------------------- // soubra2003v2. 0.mq4 // Copyright 2016, soubra2003 // mql5 / de / users / soubra2003 // ------------------------------ ------------------------------------ Eigenschaft copyright quotCopyright 2016, soubra2003v2.0quot Eigenschaft link quotonesoubraquot Eigenschaft Version quot2 .00quot Eigenschaftsbeschreibung quot - Dieses EA tauscht als unten Beschreibung: quotale Beschreibungsbeschreibung 1) Kaufzustand: Der ausstehende Auftrag wird als höherer Preis von prev festgelegt. Kerze Abstand durch user. quot Eigenschaft Beschreibung zitiert 2) Verkaufsbedingung: Der bevorstehende Auftrag wird als niedrigerer Preis von prev eingestellt. 3) Updates von Kauf / Verkauf ausstehende Bestellungen werden in der Regel mit jeder neuen Kerze open. quot Eigenschaft Beschreibung 4) Was ist neu: Trailing Stop, brechen auch amp Money Management. quot Eigenschaft strict Include ltstdlib. mqhgt input string sep3 quot --------------------- Money Mgmt Einstellungen ------------------ --- quot // MM Optionen gtgtgtgtgtgtgtgt Eingabe bool MM falsch // Money Management Eingang doppelt CalcAmount 100 // Betrag für AUTO Loseintrag doppelt CalcLot 0.01 // Auto Losgröße jeder Betragseingang doppelt LotSize 0.10 // Losgröße (Fixed) Eingang String sep1 quot --------------------- Handelseinstellungen --------------------- // Handelsoptionen gtgtgtgtgtgtgtgt doppeltverschalteten orderdistance 10 // Entfernung (Nach Prev. High Amp Unten Prev. Low) extern double buystoploss 50 // Kaufen Stop-Loss-extern double sellstoploss 50 // Sell Stop Loss extern double buytakeprofit 100 // Kaufen Take Profit extern double Selltakeprofit 100 // Verkauf Take Profit-Eingang int Slippage 5 input string sep2 quot --------------------- Break Even amp T. Stop -------- ------------- quot // Break Even Verstärker T. Stop gtgtgtgtgtgtgt Eingang bool BreakEven true // Break Even Status Eingang double BreakEvenStart 5.0 // Break Even Start Eingang double BreakEvenValue 1.0 // Break Even Value Eingang bool TrailingStop true // Trailing Stop Statuseingabe doppelt TrailingStopVal 10.0 // Trailing Stop Wert Eingabe String sep4 quot --------------------- Weitere Einstellungen ----- ---------------- quot // Ein anderer Optionen gtgtgtgtgtgtgtgt Eingabestring tradescommentquotsoubra2003Version 2.0quot // Trades Kommentar Eingabefarb buyarrowcolor clrBlue // Kaufen Pfeil Farbe Eingabefarb sellarrowcolor clrRed // Verkaufen Pfeil Farbe Eingang Farbe deletearrowcolor clrYellow // löschen Pending Order Pfeilfarbe Eingangsfarbe modifyarrowcolor clrWhite // Modified Auftrag Pfeilfarbe // --- int slippage5 int buymagicnumber821454145 int sellmagicnumber192545451 Doppel tradepointPoint Doppel prevcdlhigh Doppel prevcdllow Doppel buyprice Doppel sellprice int buyticketno int sellticketno Doppel Lots Doppel StopSprdLevel Börsen & Märkte (Symbol (), MODESTOPLEVEL) Börsen & Märkte (Symbol (), MODESPREAD) Doppel BrokerMinLot Börsen & Märkte (Symbol (), MODEMINLOT) Doppel BrokerMaxLot Börsen & Märkte (Symbol (), MODEMAXLOT) prevcdlhigh High1 prevcdllow Low1 buypriceprevcdlhighorderdistancetradepoint sellpriceprevcdllow-orderdistancetradepoint if (buystoplossgt0) buystoplossbuyprice-buystoplosstradepoint sonst buystoplossNULL if (buytakeprofitgt0) buytakeprofitbuypricebuytakeprofittradepoint sonst buytakeprofitNULL if (sellstoplossgt0) sellstoplosssellpricesellstoplosstradepoint sonst sellstoplossNULL if (selltakeprofitgt0) selltakeprofitsellprice-selltakeprofittradepoint sonst selltakeprofitNULL if (NewBar ()) Closealle () Closealle () if (buycounter ()) Bildwiederholraten () int tktbuy OrderSend ( Symbol (), OPBUYSTOP, Grundstück, buyprice, Rutschen, buystoploss, buytakeprofit, tradescomment, buymagicnumber, NULL, buyarrowcolor) if (tktbuylt0) drucken (quotOrder fehlgeschlagen mit Fehler: quot, Errordescription (GetLastError ())) else Print (quotOrder platziert successfullyquot ) if (sellcounter ()) Bildwiederholraten () int tktsell OrderSend (Symbol (), OPSELLSTOP, Grundstück, sellprice, Rutschen, sellstoploss, selltakeprofit, tradescomment, sellmagicnumber, NULL, sellarrowcolor) if (tktselllt0) drucken (quotOrder mit Fehler fehlgeschlagen: quot , Errordescription (GetLastError ())) else Print (quotOrder platziert successfullyquot) Kommentar (quot Zurück Kerze-quot, NormalizeDouble (prevcdlhigh, Digits), quot Ausstehende Kauforder quot, NormalizeDouble (buyprice, Ziffern), quotnquot, quot Zurück Candle Sollte Niedrige Quote, NormalizeDouble (prevcdllow, Ziffern), Pending Sell Order Sollte quotiert werden, NormalizeDouble (Verkaufspreis, Ziffern), quotnquot, quot ---------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Quotnquot, Trailing Stop-Status: quot, TrailingStop, quotnquot, quot ------------------------------------ ------------ quot, quotnquot, quot Broker Stop Out quot, AccountStopoutLevel (), quotnquot, quot Broker Stopp Niveau quot, StopSprdLevel, quotnquot, quot Broker Max Lot erlaubt quot, BrokerMaxLot, quotnquot, quot Broker Min Lot erlaubt quot, BrokerMinLot) // --- // BuyTrailingStop () for (int cnt10 cnt1ltOrdersTotal () CNT1) int ticketselectOrderSelect (CNT1, SELECTBYPOS) if (OrderStopLoss () NULL ampamp Ordertype () ltOPSELL ampamp OrderSymbol () Symbol () ampamp OrderMagicNumber () buymagicnumber) if (Ordertype () OPBUY) if (Trailingstop ampamp TrailingStopValgt0) Bildwiederholraten () bool ticketmodify OrderModify (OrderTicket (), OrderOpenPrice (), OrderStopLoss () (TrailingStopValtradepoint), OrderTakeProfit (), 0, modifyarrowcolor ) If (ticketmodify) Drucken (quotTStop: Auftrag kann nicht geändert werden. quot, Errordescription (GetLastError ())) else Drucken (quotTrailing Stopp Done. quot) // SellTrailingStop () for (int cnt20 cnt2ltOrdersTotal () cnt2) int ticketselectOrderSelect (cnt2, SELECTBYPOS) if (OrderStopLoss () NULL ampamp Ordertype () ltOPSELL ampamp OrderSymbol () Symbol () ampamp OrderMagicNumber () sellmagicnumber) if (Ordertype () OPSELL) if (Trailingstop ampamp TrailingStopValgt0) Bildwiederholraten () int ticketmodify OrderModify (OrderTicket (), OrderOpenPrice (), OrderStopLoss () - (TrailingStopValtradepoint), OrderTakeProfit (), 0, modifyarrowcolor) if (ticketmodify) drucken (quotTStop. Bestellen kann nicht geändert werden quot, Errordescription (GetLastError ())) else drucken (quotTrailing Stopp Done. quot) // BuyBreakEven () for (int CNT3 0 CNT3 lt OrdersTotal () CNT3) int ticketselect OrderSelect (CNT3, SELECTBYPOS) if (Ordertype () lt OPSELL ampamp OrderSymbol () Symbol () ampamp OrderMagicNumber () buymagicnumber) if (Ordertype () OPBUY) if (BreakEvenStart gt 0 ampamp Breakeven) Bildwiederholraten ( ) int ticketmodify OrderModify (OrderTicket (), OrderOpenPrice (), OrderOpenPrice () (BreakEvenValuetradepoint), OrderTakeProfit (), 0, modifyarrowcolor) if (ticketmodify) drucken (quotBreak Selbst: Bestellung nicht geändert werden kann, quot, Errordescription (GetLastError ()) ) else Print (quotBreak Auch Platziert Successfuly. quot) // SellBreakEven () for (int CNT4 0 CNT4 lt OrdersTotal () CNT4) int ticketselect OrderSelect (CNT4, SELECTBYPOS) if (Ordertype () lt OPSELL ampamp OrderSymbol () Symbol () ampamp OrderMagicNumber () sellmagicnumber) if (Ordertype () OPSELL) if (BreakEvenStart gt 0 ampamp Breakeven) Bildwiederholraten () int ticketmodify OrderModify (OrderTicket (), OrderOpenPrice (), OrderOpenPrice () - (BreakEvenValue Tradepoint), OrderTakeProfit (), 0 , Modifyarrowcolor) if (ticketmodify) Print (quotBreak Even: Auftrag kann nicht geändert werden, quot, ErrorDescription (GetLastError ())) else Print (quotBreak Even Placed Successfuly. quot) // ------------ -------------------------------------------------- ---- // Experten schließen Funktion // --------------------------------------- --------------------------- void closeall () für (int i0 iltOrdersTotal () i) int selectOrderSelect (i, SELECTBYPOS, MODETRADES) if (OrderSymbol () Symbol ()) if (Ordertype () OPBUYSTOP Ordertype () OPSELLSTOP) if (OrderMagicNumber () buymagicnumber OrderMagicNumber () sellmagicnumber) Bool deleteOrderDelete (OrderTicket (), deletearrowcolor) if (löschen) drucken (quotOrder fehlgeschlagen entfernt werden Err Beschr,: quot, Errordescription (GetLastError ())) else Print (quotOrder Hat Removed. quot gewesen) OrderSend Fehler 130 Fehler beim öffnen Lange Order: 130 Hier ist der Code, der von einem Fachberater modifiziert wurde, dass Trades ohne Fehler öffnen können . Also Im nicht sicher, warum Im erhalten diese Fehler. if (BarCloseltBollingerLower ampamp trendlt0) // Preis Schließen kleiner ist als die Bollinger oberen Zeile // if (trendlt0) // Trend ist nach unten ticketOrderSend (Symbol (), OPBUY, Grundstück, fragen, 3, Ask-Trailingstop, 0, quotCounter Trend : Lange Auftrag Placedquot, 16384,0, Grün) // lange offen, um if (ticketgt0) if (OrderSelect (Ticket, SELECTBYTICKET, MODETRADES)) drucken (quotBUY geöffnet, um quot, OrderOpenPrice (.)) sonst Print (quotError Öffnung LONG bestellen ., GetLastError ()) return (0) return (0) Überprüfen Sie, ob Ihr Stoppwert korrekt ist, und wenn immer noch ein Problem, Normalisiert. Print (quot ---------------------------------- Stoppwert ist quot, Ask-TrailingStop) ticketOrderSend (Symbol ( ), OPBUY, Lots, Ask, 3, Ask-TrailingStop, 0, quotCounter Trend: Lange Bestellung Placedquot, 16384,0, Grün) // Open Lange Bestellung Ihr Ask könnte sagen, 1.340 auf dem EUR / USD zum Beispiel. Was ist der Wert Ihres TrailingStop. Es muss etwas wie 0,0010 oder 0,0020 oder 0,0011 oder 0,133 oder etecetera sein. Sie versuchen, 0.0001s zu subtrahieren und nicht ganze Zahlen wie 10, 20, 11 usw. Wenn Sie möchten, dass TrailingStop eine Ganzzahl ist, die ein Benutzer eingibt, z. B. 10, dann müssen Sie es 0.0010 zuerst machen, um zu subtrahieren Es von Ask. Sie können dies durch Folgendes tun: TrailingStop Point. Zeigen Sie auf den EURUSD 0.0001. So können Sie Ihren Code ändern, um die folgenden: Ask - (TrailingStop Point), die die gleiche wie Ask-TrailingStop Point ist. Unten ist Code aus einem meiner Skripte, so können Sie sehen, wie man dies tun kann. Bitte versuchen Sie es zu einem späteren Zeitpunkt noch einmal. Möchten Sie sich anmelden, bevor Sie eine Bestellung aufgeben, können Sie sich mit uns in Verbindung setzen . Die Aufträge werden gemäß den in den Bestellmerkmalen und in Anlage 3 beschriebenen Regeln geändert. Function OrderModify () Mit der Funktion OrderModify () werden Handelsanforderungen zum Ändern von Markt - und ausstehenden Bestellungen gebildet. Die Funktion ändert die Parameter des Marktes und der ausstehenden Aufträge. Die Funktion gibt TRUE zurück, wenn der Handel erfolgreich ausgeführt wird. Ansonsten gibt es FALSE zurück. Ticket - die eindeutige Nummer des Auftrags. Preis - der neu angeforderte Preis einer ausstehenden Bestellung oder der neue offene Preis für einen Marktauftrag. Stoploss - der neue Wert von StopLoss. Takeprofit - der neue Wert von TakeProfit. Ablauf - die Auslaufzeit eines ausstehenden Auftrags. Arrowcolor - die Farbe der Pfeile zur Modifizierung von StopLoss und / oder TakeProfit im Diagramm. Wenn dieser Parameter nicht verfügbar ist oder sein Wert gleich dem von CLRNONE ist, werden die Pfeile nicht im Diagramm angezeigt. Hinweis: Sie können offenen Preis und Ablauf nur für ausstehende Bestellungen ändern. Wenn Sie als Funktionsparameter unveränderte Werte übergeben, erzeugt das Terminal den Fehler 1 (ERRNORESULT). Es kann eine Einschränkung für die Anwendung der Ablaufzeit auf ausstehende Bestellungen auf einigen Handelsservern gesetzt werden. In diesem Fall wird der Fehler 147 (ERRTRADEEXPIRATIONDENIED) generiert, wenn Sie versuchen, einen Wert ungleich Null in den Parametern des Ablaufs zu erstellen. Änderung von Market Orders Eine Standard Market Order enthält zwei Stop Orders - StopLoss und TakeProfit. Sie beauftragen, die Bestellung auf die angeforderten Preise zu schließen, um Verluste zu stoppen und Gewinne zu fixieren. Eine Änderung von Marktaufträgen kann nützlich sein, um die angeforderten Preise von Stop-Orders entweder aufgrund neuer berechneter Werte, die im Programm oder auf der Händlerinitiative erzielt wurden, zu ändern. Das Client-Terminal verfügt über ein eigenes Werkzeug zur Modifikation von StopLoss: Trailing Stop. Es erlaubt dem Programm, den Level von StopLoss entsprechend der Rate in einem bestimmten festen Abstand zu ändern (siehe MetaTrader 4 Cleitn Terminal Benutzerhandbuch). Die Auftragsänderungsfunktion OrderModify () erweitert die Modifikationskapazitäten erheblich: Die angeforderten Preise beider Stopaufträge können in Richtung Marktpreis geändert oder gelöscht werden. Eine Beschränkung für die Änderung der Marktordnung ist die minimal zulässige Distanz zwischen dem Stoppauftrag und dem Marktpreis, die vom Handelszentrum festgelegt wird (siehe Bestellmerkmale und Anforderungen und Einschränkungen in Making Trades). Wenn das Programm versucht, die Position eines Stop-Auftrags so zu ändern, dass es näher am Markt liegt als der zulässige Mindestabstand, wird diese Trade-Anfrage vom Client-Terminal zurückgewiesen und die Ausführung der Funktion OrderModify () wird Fehler (Fehler 130). Deshalb sollten Sie einen speziellen Block in Ihrem Programm, die diese Einschränkung in Betracht ziehen wird. Beispiel eines einfachen Expertenberaters, der StopLosses aller Marktaufträge modifiziert, für die der Abstand zwischen dem angeforderten Preis von StopLoss und dem Marktpreis größer als der voreingestellte ist (modifystoploss. mq4). Das obige Programm ist ein Expert Advisor. Bei Bedarf können Sie die Auftragsänderungsfunktion einfach in einem Skript realisieren. Allerdings wäre es nicht sehr nützlich, ein normales Skript in diesem Beispiel zu verwenden, da das Skript seine Operationen beenden würde, nachdem der Handel abgeschlossen wurde. Die Verwendung eines Skripts wäre sinnvoll, wenn das Programm eine einmalige Ausführung einer Operation, zum Beispiel Öffnen oder Schließen von Aufträgen, realisiert. In diesem Fall wurden jedoch eine Aufgabe gelöst, die eine ständige Kontrolle über die Situation erfordert: die Position einer Stoppreihenfolge ändern, wenn eine bestimmte Bedingung erfüllt ist, nämlich wenn der Abstand zwischen der Marktrate und dem angeforderten Wert der Stoppreihenfolge liegt Einen vorgegebenen Wert überschreitet (in unserem Fall 10 Punkte). Für eine langfristige Nutzung ist es viel bequemer, eine EA zu schreiben, die für die Ausführung bei jedem Zecken gestartet wird und aufhört, nur nach der direkten Anweisung durch den Benutzer zu arbeiten. Der Algorithmus des obigen EA modifystoploss. mq4 ist sehr einfach. Die Hauptberechnungen werden im Zyklus der Suche in den Aufträgen durchgeführt (Block 2-9). Der Auftrag wird sowohl auf dem Markt als auch in den ausstehenden Aufträgen durchsucht (der Parameterpool im Funktionsaufruf OrderSelect () ist nicht explizit angegeben). Im Block 2-3 werden ausstehende Aufträge und Aufträge für ein anderes Symbol für die ausgewählten Aufträge herausgefiltert, der Wert von StopLoss ermittelt. Block 3-9 stellt einen Zyklus zur Modifikation der ausgewählten Reihenfolge dar. In Block 3-4 wird der neue aktuelle Wert der Grenzstrecke ermittelt (Ihr Makler kann diesen Wert jederzeit ändern). In Block 4-5 wird die Notwendigkeit, die ausgewählte Ordnung (die gegenwärtig im Zyklus für verarbeitet wird) zu modifizieren, sowie ein neuer Wert von StopLoss berechnet. Wenn die aktuelle Bestellung nicht geändert werden muss, beendet das Programm den Zyklus, während er am Ende von Block 4-5 liegt, und diese Reihenfolge wird nicht modifiziert (in Block 5-6). Wenn die Reihenfolge jedoch geändert werden muss, wird die Steuerung an Block 5-6 übergeben, in dem die notwendigen Parameter berechnet und die Funktion OrderModify () aufgerufen wird, die eine Handelsanfrage bildet. Wenn ein Trade erfolgreich abgeschlossen wird, beendet der Operator-Break in Block 6-7 die Ausführung des Zyklus, während das Ende der laufenden Iteration des Auftrags-Suchzyklus endet (die nächste Bestellung beginnt mit der Verarbeitung zu beginnen Nächste Iteration). Wenn der Trade nicht erfolgreich ausgeführt wird, werden die Fehler bearbeitet. Wenn ein Fehler entpuppt sich nicht kritisch, das Programm wiederholen, um einen Handel zu machen. Wenn jedoch der Fehler als kritisch eingeschätzt wird, wird die Steuerung außerhalb des Änderungszyklus für die Verarbeitung der nächsten Reihenfolge (im Zyklus für) übergeben. Sie sollten eine kleine Funktion beachten, die sich auf die Änderung der Marktaufträge bezieht. Function OrderModify () setzt neue Preiswerte für beide Stop-Orders gleichzeitig. Die Notwendigkeit, den Mindestabstand einzuhalten, betrifft jedoch nur die Stoppreihenfolge, deren neuer Wert sich von der aktuellen unterscheidet. Wenn der neue Wert derselbe bleibt wie der aktuelle, kann der Stopauftrag in jedem Abstand vom Marktpreis liegen, während die entsprechende Trade-Anfrage als richtig betrachtet wird. Zum Beispiel haben wir eine Market Order Buy eröffnet zum Preis von 1.295467, mit den folgenden Stop-Aufträgen: StopLoss 1.2958 und TakeProfit 1.2960. Der Mindestabstand des Maklers beträgt 5 Punkte. Für den Marktpreis Bid 1.2959 ergeben sich die Voraussetzungen für eine Änderung der Bestellung, nämlich für die Platzierung von StopLoss 1.2949 (Bid - 10 Punkte). Um die Funktion OrderModify () auszuführen, sollten Sie auch einen neuen Wert von TakeProfit angeben. Unsere EA ändert nicht die Position von TakeProfit, deshalb setzen wir ihren aktuellen Wert in der Funktion: TakeProfit 1.2960. Trotz der Tatsache, dass der neue Sollwert von TakeProfit 1.2960 nahe dem Marktpreisgebot liegt (nur 1 Punkt, dh weniger als der erlaubte Mindestabstand von 5 Punkten), unterscheidet sich dieser Wert nicht vom aktuellen Wert von TakeProfit 1.2960, So dass die Handelsanfrage als richtig betrachtet und auf dem Server ausgeführt wird (im Allgemeinen kann die Anforderung abgelehnt werden, aber aus anderen Gründen). Feige. 102 und 103 repräsentieren die Ergebnisse einer erfolgreichen Modifikation in einer solchen Situation. Feige. 102. Alarmfenster und Symbolfenster, wie sie bei Änderung einer Bestellung von EA modifystoploss. mq4 erscheinen, wenn der Marktzins in der Nähe des angeforderten Wertes von TakeProfit liegt. Wir sehen in Abb. 103, dass die Änderung in den neuen Wert von StopLoss 1.2949 führte und der aktuelle Preis Bid 1.2959 war in einem Abstand von 1 Punkt aus dem Wert von TakeProfit. Es ist gesondert zu beachten, dass weder Markt noch ausstehende Aufträge modifiziert werden sollten), abgesehen von der Marktsituationsanalyse. Eine solche Modifikation kann nur sinnvoll sein, wenn sich der Marktzins schnell und in eine Richtung bewegt, was nach wichtigen Neuigkeiten passieren kann. Jedoch, wenn Sie auf einem quotnormalquot Markt handeln, muss die Entscheidung über die Notwendigkeit, Bestellungen zu ändern, auf der Grundlage der Marktkriterien vorgenommen werden. Im Expertenratgeber modifystoploss. mq4. Wir verwenden auch ein Kriterium (StopLoss ist weiter vom Marktpreis als wir wollen), auf dessen Grundlage das Programm beschließt, Aufträge zu ändern. Dieses Kriterium ist jedoch zu einfach und schwierig, um ein Kriterium zu sein, das die Marktsituation kennzeichnet. Änderung anstehender Aufträge Die Anpassung anstehender Aufträge weicht geringfügig von der der Marktaufträge ab. Der wesentliche Unterschied ist, dass es möglich ist, den angeforderten Preis der Bestellung selbst zu ändern. Sie müssen die Regeln beibehalten, die die Position eines ausstehenden Auftrags in Bezug auf den Marktpreis und die Stopaufträge in Bezug auf den angeforderten Auftragspreis beschränken (siehe Bestellmerkmale und Anforderungen und Einschränkungen beim Making Trades). Gleichzeitig werden alle Charakteristiken des anstehenden Auftrags als neu angefordert betrachtet, unabhängig davon, welche Vorgeschichte der verwandten Ereignisse gespeichert ist. Angenommen, wir haben eine ausstehende Bestellung BuyStop 1.2030 mit StopLoss 1.2025 und TakeProfit 1.2035. Der Makler hat die Mindestentfernung als 5 Punkte festgelegt. Es ist leicht zu sehen, dass die Stopaufträge innerhalb des erlaubten Bandes liegen, so dass jede Änderung des geforderten offenen Preises der Bestellung die notwendige Modifikation mindestens eines der Stopaufträge zur Folge hat. Wenn jedoch eine Handelsanforderung gebildet wird, die den angeforderten Auftragspreis ändern wird, wobei die Werte von Stopaufträgen dieselben bleiben, betrachtet das Client-Endgerät diese Anforderung als eine falsche und sendet sie nicht zur Ausführung an den Server. Wenn die Anforderung beispielsweise die folgenden Werte angibt: BuyStop 1. 2028, StopLoss 1.2025 und TakeProfit 1.2035, ist diese Anforderung falsch, obwohl die Werte ihrer Stop-Aufträge nicht geändert wurden: In diesem Fall brechen die Anforderungen die Regel von Wobei der Mindestabstand zwischen dem geforderten offenen Preis und dem Preis eines der Stopaufträge eingehalten wird (siehe Anforde - rungen und Einschränkungen in Making Trades). Lets sehen, wie ein Skript aussehen kann, das einen ausstehenden Auftrag modifiziert, um seinen angeforderten Preis dem Marktpreis auf eine bestimmte vordefinierte Distanz zu approximieren. Läßt den Abstand als 10 Punkte einstellen. Um den zu ändernden Auftrag anzugeben (es gibt mehrere ausstehende Aufträge im Fenster), verwenden wir den Preis, bei dem das Skript an das Symbolfenster angehängt wurde. Beispiel eines einfachen Skripts, das einen ausstehenden Auftrag modifiziert, dessen angeforderter offener Preis näher am Skript-Anhangspreis liegt als die Preise anderer ausstehender Aufträge (modifyorderprice. mq4). Der Abstand zwischen dem Marktpreis und dem angeforderten Preis des ausstehenden Auftrags wird in der Variablen Tral festgelegt. Die Variable WinPrice enthält den Wert des Preises, bei dem das Skript an das Symbolfenster angehängt wurde. In dem Zyklus der Suche in Ordnungen (Block 2-5) werden die Charakteristika der Reihenfolge, die der Skriptbefestigungsstufe am nächsten liegt, berechnet. Block 6-13 stellt den Zyklus der Schließungsaufträge dar. In Block 8-9 wird entschieden, ob die gewählte Reihenfolge geändert werden muss. Bei Bedarf werden hier die neuen Werte des angeforderten Stoppauftrags berechnet. Die Änderung der Bestellung wird mit der Funktion OrderModify () in Block 10-11 angefordert. Fehler werden in Block 11-13 bearbeitet. Der Block 8-9 besteht aus vier ähnlichen Blöcken, in denen die in der Anfrage verwendeten neuen Werte berechnet werden. Lets betrachten die für die Bestellung SellLimit: Die neuen Parameter der Bestellung werden nur berechnet, wenn der aktuelle Preis Preis ist weiter vom aktuellen Marktpreis Gebot als die gewünschte Entfernung TS. Wenn es so ist, wird die Kontrolle an den Körper des Betreibers weitergegeben, wenn der neue offene Preis der Bestellung, NewPrice, berechnet wird. Die neuen Werte von StopLoss und TakeProfit werden nur für Werte ungleich Null berechnet. Der Abstand zwischen dem angeforderten Auftragspreis und jedem Preis des Halteauftrags bleibt gleich. Beispielsweise wird SellLimit bei 1.2050, seinem StopLoss 1.2073 und seinem TakeProfit 1. 2030 platziert. Angenommen, die Berechnungen ergeben den neuen offenen Preis in Höhe von 1.2040. In diesem Fall werden die neuen Werte der Stopp-Aufträge wie folgt lauten: StopLoss 1.2063, TakeProfit 1. 2020. Die Programmoperationen führen also dazu, dass die Reihenfolge Quoten für die Quoten geändert wird - alle drei Basisparameter (Open Price, StopLoss und TakeProfit) ) Gleichzeitig nach unten und halten einen Abstand zwischen ihnen. Am Ende von Block 8-9 werden die neuen Werte von Stop-Aufträgen auf negative Werte überprüft. Diese Überprüfung ist sinnvoll, wenn ein zuvor platzierter (von einem anderen Programm oder manuell) Stopauftrag nahezu Null war, zum Beispiel nur 1 Punkt über Null. Wenn in diesem Fall der Auftrag um mehr als einen Punkt nach unten verschoben wird, wird der neue Preis eines der Stop-Aufträge negativ. Wenn dieser Wert in einer Handelsanforderung angegeben wurde, wird die Anforderung vom Client-Terminal zurückgewiesen. Wir müssen auf einen Nachteil solcher Programme - sowohl Scripts als auch Expert Advisors - hinweisen. Das Programm modifyorderprice. mq4 oben ist in seiner Handlungsentscheidung stark eingeschränkt. Der zu ändernde Auftrag kann nur in eine Richtung bewegt werden - in Richtung des Marktzinses, wobei seine Stop-Aufträge strikt quanorquote zu dem Auftrag erfolgen. Dieses Programm ist nicht auf die Änderung des angefragten Auftragspreises in der Richtung anders als der Marktpreis angepasst. Die Möglichkeit, die Position eines separaten Stopp-Auftrags zu ändern, wird auch nicht im Programm realisiert. Die obige Beschränkung wird zunächst durch die Menge der verwendeten Kontrollen bestimmt. In diesem Programm gibt es nur eine Kontrolle über die Art - die Stelle, an der das Skript an das Symbolfenster angehängt wurde. Mit diesem Parameter kann der Händler bestimmen, welche Reihenfolge geändert werden soll. Allerdings ist dies die gesamte Initiative der Nutzer. Um effizienter arbeiten zu können, benötigt der Benutzer zusätzliche Werkzeuge, die es ihm ermöglichen, andere Parameter von Aufträgen zu beeinflussen. Diese Aufgaben können mit MQL4 sehr effizient gelöst werden. Allerdings müssen Sie einen anderen, mehr quotintellectualquot Algorithmus für diesen Zweck verwenden. Es ist möglich, ein Programm zu erstellen, das Ihren Handel automatisiert und Aufträge entsprechend Ihren Wünschen ändert. Sie können in einem solchen Programm zB grafische Objekte als zusätzliche Controlling-Werkzeuge für den manuellen Handel einsetzen.

No comments:

Post a Comment