Brauchen Sie Hilfe beim Ändern von Skripts
Ergebnis 1 bis 7 von 7

Thema: Brauchen Sie Hilfe beim Ändern von Skripts

  1. #1
    Hallo zusammen,

    Ich habe ein Skript, in dem der anstehende Handel stattfindet. Es setzt den Handel auf vorhergehende hohe und niedrige Preise für Käufe und Verkäufe. Ich möchte, dass dieses Skript modifiziert wird und ein paar Pips im ausstehenden Handel hinzugefügt werden vorherige Kerze ...

    Kann mir jemand bitte sagen, welchen Teil ich ändern muss?

    Vielen Dank

    Eingefügter Code #import stdlib.ex4 string ErrorDescription (int e); #import #include lt; stdlib.mqhgt; #include lt; WinUser32.mqhgt;/- Zu öffnende Aufträge #define PendingOrders 1/Anzahl der ausstehenden Bestellungen, die hinzugefügt werden sollen/- Money-Management #define MoneyManagement 1/Verwenden Sie Money Management #define LotSize 0.1/Wenn nicht, verwenden Sie diese Lose #define RiskPercent 0.5/Risiko für den anfänglichen Handel #define RiskDecrease 0.25/Risikoabnahme für den nächsten Handel/- ATR und Multiplikatoren #define ATRPeriod 30/ATR-Periode zur Verwendung von #define ATRStopMultiplier 2/Multiplikator für den anfänglichen Stop-Loss #define ATROrderMultiplier 0.5/Multiplikator für weitere ausstehende Bestellungen/- Ändern Sie mich nicht. #define ShortName Buy Stop #define MagicNumber 5001 #define Slippage 6 #define Shift 1/- Interne doppelte LastOrderLots = EMPTY_VALUE; double LastOrderPrice; doppeltes DecimalPip;/ ------------------------------------------- ------------------- /| Startfunktion für benutzerdefiniertes Skript/ --------------------------------------- ----------------------- int start () {//Bestätigen Sie, ob (MessageBox (ShortName - ). Möchten Sie (PendingOrders 1 ) BUYSTOP-Aufträge?, Skript, MB_YESNO | MB_ICONQUESTION)! = IDYES) return (1);/Pip value DecimalPip = GetDecimalPip ();/Bars doppelt CLOSE = iClose (Symbol (), 0, Shift); double HIGH = iHigh (Symbol (), 0, Shift); double LOW = iLow (Symbol (), 0, Shift);/-/- Platzieren Sie die erste Bestellung/- if (Bid gt; HIGH) {PlaceOrder (OP_BUY, GetLotSize ()); } else {PlaceOrder (OP_BUYSTOP, GetLotSize (), HIGH); }/-/- Platzieren Sie ausstehende Bestellungen/- für (int it = 0; it lt; PendingOrders; it ) PlaceOrder (OP_BUYSTOP, GetLotSize (), LastOrderPrice iATR (Symbol (), 0, ATRPeriod, Shift) * ATROrderMultiplier);/Hallo! Kommentar (Copyright http://www.pointzero-trading.com);/Tschüss Rückkehr (0); }/ ---------------------------------------------- -------------------- /| Meine Funktionen/ ----------------------------------------- --------------------- ** * Berechnet die Losgröße nach Risiko * @return double *double GetLotSize () {//Lots double l_lotz = LotSize ;/Lotsize und Einschränkungen double l_minlot = MarketInfo (Symbol (), MODE_MINLOT); double l_maxlot = MarketInfo (Symbol (), MODE_MAXLOT); double l_lotstep = MarketInfo (Symbol (), MODE_LOTSTEP); int vp = 0; if (l_lotstep == 0,01) vp = 2; sonst vp = 1;/Money Management anwenden, wenn (MoneyManagement == true) l_lotz = MathFloor (AccountBalance () * RiskPercent100.0)1000.0;/Warten! Prüfen Sie, ob wir pyramiden, wenn (LastOrderLots! = EMPTY_VALUELastOrderLots gt; 0) l_lotz = LastOrderLots * RiskDecrease;/Normalisieren auf Lotschritt l_lotz = NormalizeDouble (l_lotz, vp);/MaxMinlot hier überprüfen if (l_lotz lt; l_minlot) l_lotz = l_minlot; if (l_lotz gt; l_maxlot) l_lotz = l_maxlot;/Tschüss! return (l_lotz); }** * Platziert eine Bestellung * @param int Type * @param double Lotz * @param double PendingPrice *void PlaceOrder (int Type, double Lotz, double PendingPrice = 0) {//Local int err; Farbe l_color; double l_stoploss, l_price, l_sprice = 0; double stoplevel = getStopLevelInPips (); RefreshRates ();/Preis und Farbe für den Handelstyp if (Type == OP_BUY) {l_price = Ask; l_color = Blau; } if (Typ == OP_SELL) {l_price = Gebot; l_color = rot; } if (Typ == OP_BUYSTOP) {l_price = PendingPrice; if (l_price lt; = Ask stoplevel * DecimalPip) l_price = Ask stoplevel * DecimalPip; l_color = LightBlue; } if (Typ == OP_SELLSTOP) {l_price = PendingPrice; if (l_price gt; = Gebotsstopplevel * DecimalPip) l_price = Gebotsstopplevel * DecimalPip; l_color = Lachs; }/Vermeiden Sie Absprachen während (IsTradeContextBusy ()) Sleep (1000); int l_datetime = TimeCurrent ();/Bestellung senden int l_ticket = OrderSend (Symbol (), Typ, Lotz, MyNormalizeDouble (l_price), Slippage, 0, 0,, ​​MagicNumber, 0, l_color);/Rety bei Fehler if (l_ticket == -1) {while (l_ticket == -1 TimeCurrent () - l_datetime lt; 5! IsTesting ()) {err = GetLastError (); if (err == 148) return; Schlaf (1000); while (IsTradeContextBusy ()) Schlaf (1000); RefreshRates (); l_ticket = OrderSend (Symbol (), Typ, Lotz, MyNormalizeDouble (l_price), Slippage, 0, 0,, ​​MagicNumber, 0, l_color); } if (l_ticket == -1) Print (ShortName (OrderSend Error) ErrorDescription (GetLastError ())); } if (l_ticket! = -1) {LastOrderLots = Lotz; LastOrderPrice = l_price; if (OrderSelect (l_ticket, SELECT_BY_TICKET, MODE_TRADES)) {l_stoploss = MyNormalizeDouble (GetStopLoss (Type, PendingPrice)); if (! OrderModify (l_ticket, OrderOpenPrice (), l_stoploss, 0, 0, grün)) Print (ShortName (OrderModify Error) ErrorDescription (GetLastError ())); }}}** * Gibt den ursprünglichen Stoploss zurück. * @Param int Type * @param double ForcedPrice * @return double *double GetStopLoss (int Type, double ForcedPrice = 0) {double l_sl = 0; if (Typ == OP_BUY) l_sl = Ask - iATR (Symbol (), 0, ATRPeriod, Shift) * ATRStopMultiplier - (Ask - Bid); if (Typ == OP_SELL) l_sl = Gebot iATR (Symbol (), 0, ATRPeriod, Shift) * ATRStopMultiplier (Ask - Bid); if (Typ == OP_BUYSTOP) l_sl = ForcedPrice - iATR (Symbol (), 0, ATRPeriod, Shift) * ATRStopMultiplier - (Ask - Bid); if (Typ == OP_SELLSTOP) l_sl = ForcedPrice iATR (Symbol (), 0, ATRPeriod, Shift) * ATRStopMultiplier (Ask - Bid); return (l_sl); }** * Gibt den dezimalen Pip-Wert * @return double zurück*double GetDecimalPip () {switch (Digits) {Fall 5: Rückkehr (0,0001); Fall 4: Rückkehr (0,0001); Fall 3: Rückkehr (0,001); Standard: Rückkehr (0,01); }}** * Normalisiert den Preis * @param double price * @return double *double MyNormalizeDouble (doppelter Preis) {return (NormalizeDouble (price, Digits)); }** * Grundlinie plus Abweichung erhalten * @return double *double getStopLevelInPips () {double s = MarketInfo (Symbol (), MODE_STOPLEVEL) 1.0; if (Digits == 5) s = s10; kehrt zurück); }

  2. #2

    Zitat Zitat von ;
    Hallo an alle, ich habe ein Skript, das den anstehenden Handel abstellt. Es setzt den Handel auf vorhergehende hohe und niedrige Preise für Käufe und Verkäufe. Ich möchte, dass dieses Skript modifiziert wird und ein paar Pips im ausstehenden Handel hinzugefügt werden vorherige kerze ... kann mir bitte jemand sagen, welchen teil ich ändern muss? danke #import stdlib.ex4 string ErrorDescription (int e); #import #include lt; stdlib.mqhgt; #include lt; WinUser32.mqhgt;/- Zu öffnende Bestellungen #define PendingOrders 1/Anzahl ausstehender Bestellungen ...
    shg- Zeile 49 Sie müssen Folgendes hinzufügen: PlaceOrder (OP_BUYSTOP, GetLotSize (), HIGH (15 * DecimalPip));

  3. #3

    Zitat Zitat von ;
    {quote} - Zeile 49 müssen Sie Folgendes hinzufügen: PlaceOrder (OP_BUYSTOP, GetLotSize (), HIGH (15 * DecimalPip));
    Danke, Kumpel ... Schätzen Sie Ihre Hilfe und schnelle Antwort ... Mit besten Grüßen

  4. #4

    Zitat Zitat von ;
    {quote} - Zeile 49 müssen Sie Folgendes hinzufügen: PlaceOrder (OP_BUYSTOP, GetLotSize (), HIGH (15 * DecimalPip));
    Hallo Kumpel, es funktioniert nicht ... heute, wenn ich das Skript so modifiziert habe, wie Sie es sagen ... es ist nicht der richtige Trade platziert ... statt dass der Trade gerade zum aktuellen Preis platziert wird ... führen Sie mich, wenn Sie können .. . Vielen Dank

  5. #5
    2 Attachment (s)
    Zitat Zitat von ;
    Hallo Kumpel, es funktioniert nicht ... heute, wenn ich das Skript so modifiziert habe, wie Sie es sagen ... es ist nicht der richtige Handel ... anstatt es nur auszusetzen, sondern den Handel zum aktuellen Preis zu platzieren kann ... danke
    shg- habe es gerade getestet. Dies ist für 100 Pips oben festgelegt
    https://www.tradingintuitive.com/cry...acci-grid.html
    https://www.tradingintuitive.com/att...1636677425.mq4

  6. #6

    Zitat Zitat von ;
    {quote} - Ich habe es gerade getestet. Dies ist für 100 Pips oberhalb von {image} {file} festgelegt.
    Vielen Dank für Ihre Hilfe. Nun, in (100 * DecimalPip), dachte ich, Decimalpip ist für mein Verständnis und ich habe es nicht in das Skript aufgenommen und danke noch einmal für eure hilfe ...

  7. #7

    Zitat Zitat von ;
    Hallo Kumpel, es funktioniert nicht ... heute, wenn ich das Skript so modifiziert habe, wie Sie es sagen ... es ist nicht der richtige Handel ... anstatt es nur auszusetzen, sondern den Handel zum aktuellen Preis zu platzieren kann ... danke
    gt; gt; gt; statt pending nur den Handel zum aktuellen Preis OP_BUY oder OP_SELL statt pending zu platzieren? Sie haben jedoch einen PlaceOrder (OP_BUY, GetLotSize ()); Stattdessen wird dieser Aufruf ausgeführt, anstatt eine ausstehende Bestellung zu platzieren. Sie haben die Logik überprüft. Und Ihr Fehlermanagement while (l_ticket == -1 TimeCurrent () - l_datetime lt; 5! IsTesting ()) {err = GetLastError (); if (err == 148) return; Schlaf (1000); while (IsTradeContextBusy ()) Schlaf (1000); RefreshRates (); l_ticket = OrderSend (Symbol (), Typ, Lotz, MyNormalizeDouble (l_price), Slippage, 0, 0,, ​​MagicNumber, 0, l_color); } ist nicht klar. Was bedeutet err = GetLastError (); if (err == 148) return; am Anfang des Zyklus?

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
Die tradingintuitive Webseite verwendet Cookies
Wir nutzen Cookies, um Ihnen das Webseitenerlebnis bestmöglich anbieten zu können. Durch weitere Nutzung der Webseite erlauben Sie die Nutzung von Cookies. Für weitere Details und wie Sie ggf. diese Einstellungen verändern können, lesen Sie bitte unsere Datenschutzbestimmung. Lesen Sie mehr