Einzelnen Beitrag anzeigen
  #2 (permalink)  
Alt 22.12.14
traderdoc traderdoc ist offline
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.873
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Code:
int Slippage = 3;
double Pt;
int M;

M = 1;
if (MarketInfo(Symbol(), MODE_PROFITCALCMODE) == 0) {
   if (Digits == 3 || Digits == 5) M = 10;
   if (Digits == 6) M = 100;   
   if (Digits == 7) M = 1000;
   Pt = Point*M;
} else Pt = 1.0;

int BuyStop_Preis = Ask + (PipDifferenz*Pt);
int BuyStop_StopLoss = Ask + ((PipDifferenz - StopLoss)*Pt);
int BuyStop_TakeProfit = Ask + ((PipDifferenz + TakeProfit)*Pt);
int SellStop_Preis = Bid - (PipDifferenz*Pt);
int SellStop_StopLoss = Bid - ((PipDifferenz + StopLoss)*Pt);
int SellStop_TakeProfit = Bid - ((PipDifferenz - TakeProfit)*Pt);
  
Slippage *= M;

void OpenBuyStop() {
   int ticket, tries;
   tries = 0;
   if (!GlobalVariableCheck("InTrade")) {
      while (tries < 3) {
         GlobalVariableSet("InTrade", CurTime()); // set lock indicator
         ticket =OrderSend(Symbol(), OP_BUYSTOP, Lots, BuyStop_Preis, Slippage, BuyStop_StopLoss, BuyStop_TakeProfit, "EA Order", 0, 0, Red);
         if (ticket > 0) {
            Alert("BuyStop eröffnet, Ticket ="+ticket);
            GlobalVariableDel("InTrade"); // clear lock indicator
            break;
         } else {
            Alert("Fehler bei der BuyStop -Aufgabe aufgetreten! (Fehlernummer: "+ErrorDescription(GetLastError()) + " BuyStop @ "+BuyStop_Preis + " SL @ " + BuyStop_StopLoss + " TP @" + BuyStop_TakeProfit);
            tries++;
         }
      }
   }
}

void OpenSellStop() {
   int ticket, tries;
   tries = 0;
   if (!GlobalVariableCheck("InTrade")) {
      while (tries < 3) {
         GlobalVariableSet("InTrade", CurTime()); // set lock indicator
         ticket = OrderSend(Symbol(), OP_SELLSTOP, Lots, SellStop_Preis, Slippage, SellStop_StopLoss, SellStop_TakeProfit, "EA Order", 0, 0, Red);
         if (ticket > 0) {
            Alert("SellStop eröffnet, Ticket ="+ticket);
            GlobalVariableDel("InTrade"); // clear lock indicator
            break;
         } else {
            Alert("Fehler bei der SellStop-Aufgabe aufgetreten! (Fehlernummer: "+ErrorDescription(GetLastError()) + " BuyStop @ " + SellStop_Preis + " SL @ " + SellStop_StopLoss + " TP @" + SellStop_TakeProfit);
            tries++;
         }
      }
   }
}
Über M, Digit, Point und Pt wird automatisch festgestellt, ob mit einem 4- oder 5-Digitbroker gehandelt wird. Das ist für die Festlegung des SL, TP und der Slippage eminent wichtig!
Die Slippage war vorher fix mit 1 angegeben. Bei einem 5-Digitbroker hätte das bedeutet, dass nur eine Slippage von 0.1 Pip möglich gewesen wäre - viel zu wenig.
Die Magicnumber wurde als 0 eingesetzt.
Falls Order geöffnet wurde - kurze Alertmeldung und dann mit break Sprung aus der while-Schleife.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.