Einzelnen Beitrag anzeigen
  #2 (permalink)  
Alt 30.06.14
Benutzerbild von fxdaytrader
fxdaytrader fxdaytrader ist offline
Premium Mitglied
 
Registriert seit: Dec 2013
Ort: hier und dort
Beiträge: 433
fxdaytrader befindet sich auf einem aufstrebenden Ast
Standard

so könnte man es machen:

Erstmal die ordersend-routine ändern sodaß sl/tp erst nach der erfolgreichen Orderaufgabe gesetzt werden. Weiter sollte man die pips/point-Anpassung nicht vergessen.

im header (bei den externen inputs):

extern int Slippage=3;
int slippagepips;

im init(): slippagepips=Slippage;

hier für BUY:
Code:
BrokerDigitAdjust(Symbol());
double sl = Ask-SLpips*pips2dbl;
double tp = Ask+TPpips*pips2dbl;
bool result=OrderSend2Stage(symb,OP_BUY,lt,ask,Slippage,sl,tp,com,magic,0,Lime);
Code:
bool OrderSend2Stage(string symbol,int type,double lots,double price,int slippage,double sl,double tp,string ocomment,int magic,datetime expiry,color col) {
 bool result=true;
 int ticket;
 RefreshRates();
  while (IsTradeContextBusy()) Sleep(100);
  ticket=OrderSend(symbol,type,lots,price,slippage,0,0,ocomment,magic,expiry,col);
  while (IsTradeContextBusy()) Sleep(100);
   if (!OrderSelect(ticket, SELECT_BY_TICKET)) return(false);
    if (sl!=0.00000 && tp!=0.00000) result = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizePrice(OrderSymbol(),sl),NormalizePrice(OrderSymbol(),tp),OrderExpiration(),CLR_NONE);
    if (sl!=0.00000 && tp==0.00000) result = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizePrice(OrderSymbol(),sl),OrderTakeProfit(),OrderExpiration(),CLR_NONE);
    if (sl==0.00000 && tp!=0.00000) result = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizePrice(OrderSymbol(),tp),OrderExpiration(),CLR_NONE);  
 return(result);
}

void BrokerDigitAdjust(string symbol) {
 int Multiplier = 1;
 int digits=MarketInfo(symbol,MODE_DIGITS);
 if (digits==3 || digits==5) Multiplier = 10;
 if (digits==6) Multiplier = 100;   
 if (digits==7) Multiplier = 1000;
 pips2dbl = Multiplier*MarketInfo(symbol,MODE_POINT);
 Slippage=slippagepips*Multiplier;
}
it build 509 syntax, mögliich daß für die neuesten versionen etwas geändert werden muß. Man könnte sich jetzt auch eine Funktion schreiben welche den sl und tp zurückgibt, bspw. sl = GetSL(Symbol(),Ask,OP_BUY); usw.
__________________
krank im Kopf aber sonst ganz nett
build 509 mql4 editor download