Zitat:
Zitat von saro2018
....
|
Code:
//+------------------------------------------------------------------+
//| saro2018.mq4 |
//+------------------------------------------------------------------+
#property strict
int StopLoss =10;
int TakeProfit =10;
int Slippage =2;
double Lot =0.01;
int LastTyp=-1;
int Magic=0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
if(Digits()==5 || Digits()==3)//+------------------------------------------------------------------+
{ //| @traderdoc prüfung |
TakeProfit*=10; //+------------------------------------------------------------------+
StopLoss*=10;
Slippage *=10;
}
//prüfung
//prüfung
//prüfung
//prüfung
//u.s.w
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
//prüfung
//prüfung
//prüfung
//prüfung
//u.s.w
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//prüfung
//prüfung
//prüfung
//prüfung
//u.s.w
//---
if(OrdersTotal()==0)
{
if(isCloseLastPosByStopLoss())
{
if(LastTyp==0)
{
if(OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,NormalizeDouble(OrderOpenPrice()+StopLoss*Point(),Digits()),NormalizeDouble(OrderOpenPrice()-TakeProfit*Point(),Digits()),"Sell",Magic,0,clrGreen)) Print("OK Sell");
else Print(GetLastError());
}
if(LastTyp==1)
{
if(OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,NormalizeDouble(OrderOpenPrice()-StopLoss*Point(),Digits()),NormalizeDouble(OrderOpenPrice()+TakeProfit*Point(),Digits()),"Buy",Magic,0,clrGreen)) Print("OK Buy");
else Print(GetLastError());
}
}
}
}
//+------------------------------------------------------------------+
bool isCloseLastPosByStopLoss()
{
int Pos=-1;
datetime Zeit=0;
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()<2)
{
if(Zeit<OrderCloseTime())
{
Zeit=OrderCloseTime();
Pos=i;
LastTyp=OrderType();
}
}
}
}
}
if(OrderSelect(Pos,SELECT_BY_POS,MODE_HISTORY))
{
if(NormalizeDouble(OrderClosePrice(),5)==NormalizeDouble(OrderStopLoss(),5))
{
return(True);
}
}
return(False);
}
//+------------------------------------------------------------------+
prüfen MarketInfo(Symbol(),MODE_STOPLEVEL)
prüfen, erlaubt Brocker sofort SL,TP senden
oder SL,TP=0, und dann OrderModify
nicht vergessen "traderdoc
prüfung" sonst beißt wieder