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); }