Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 13.05.16
DariusK DariusK ist offline
Neues Mitglied
 
Registriert seit: May 2012
Beiträge: 11
DariusK befindet sich auf einem aufstrebenden Ast
Standard SL über EA setzen -zeitverzögert

Hallo MT4 profis

ich habe vor 12 Jahren c++ gelernt, damals war ich motiviert und habe programme für MT4 geschrieben. Paar Jahre habe ich leider nichts mehr geschrieben. Nun möchte ich wieder in die Programmierung rein, da es ja für mich riesen spass macht.Außerdem ist man ja etwas stolz ein programm zu schreiben, was tatzächlich funktioniert. Zu meinem Problem.
Ich habe ein EA, dass es ein SL setzt. Soweit so gut. Möchte aber über zweiten Programm nochmals mit einer kleiner Verzögerung z.B. 5 sec. um 5 Pips nachsetzten. Dazu habe ich ein EA gefunden und schon etwas verändert, er war frei zugänglich :;-). Leider funktioniert es nicht immer. Deshalb die Verzögerung im Programm. ..was muß ich hier ändern.

extern bool MTakeProfit=true;
extern bool MStopLoss=true;
extern double TakeProfit=30;
extern double StopLoss=30;
extern int magicNumber = 0;

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{

int StopMultd=10;
double TP=NormalizeDouble(TakeProfit*StopMultd,Digits);
double SL=NormalizeDouble(StopLoss*StopMultd,Digits);

//-------------------------------------------------------------------+
//Check open orders
//-------------------------------------------------------------------+
if(OrdersTotal()>0){
for(int i=1; i<=OrdersTotal(); i++) // Cycle searching in orders
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // If the next is available
{
if((MTakeProfit==true)&&(TakeProfit>0)&&(OrderMagi cNumber()== magicNumber)){ // m tp

// Calculate take profit
double tpb=NormalizeDouble(OrderOpenPrice()+TP*Point,Digi ts);
double tps=NormalizeDouble(OrderOpenPrice()-TP*Point,Digits);

Comment("Modifying take profit");
if((OrderType()==OP_BUY)&&(OrderTakeProfit()==0)&& (OrderSymbol()==Symbol())){ OrderModify(OrderTicket(),0,OrderStopLoss(),tpb,0, CLR_NONE); }
if((OrderType()==OP_SELL)&&(OrderTakeProfit()==0)& &(OrderSymbol()==Symbol())){ OrderModify(OrderTicket(),0,OrderStopLoss(),tps,0, CLR_NONE); }

} // m tp

if((MStopLoss==true)&&(StopLoss>0)&&(OrderMagicNum ber()== magicNumber)){ // m sl

// Calculate stop loss
double slb=NormalizeDouble(OrderOpenPrice()-SL*Point,Digits);
double sls=NormalizeDouble(OrderOpenPrice()+SL*Point,Digi ts);

Comment("Modifying stop loss");
if((OrderType()==OP_BUY)&&(OrderStopLoss()==0)&&(O rderSymbol()==Symbol())){ OrderModify(OrderTicket(),0,slb,OrderTakeProfit(), 0,CLR_NONE); }
if((OrderType()==OP_SELL)&&(OrderStopLoss()==0)&&( OrderSymbol()==Symbol())){ OrderModify(OrderTicket(),0,sls,OrderTakeProfit(), 0,CLR_NONE); }

}// m sl
Comment("");
}
}
}
//----
int Error=GetLastError();
if(Error==130){Alert("Wrong stops. Retrying."); RefreshRates();}
if(Error==133){Alert("Trading prohibited.");}
if(Error==2){Alert("Common error.");}
if(Error==146){Alert("Trading subsystem is busy. Retrying."); Sleep(500); RefreshRates();}

//----------
return(0);
}
//+-----------------------------------END-------------------------------+

int init()
{
//----
Alert(":-)");
//----
return(0);
}


Danke für EUre Hilfe...