Vielleicht findet jemand in der Funktion einen gravierenden Fehler?
Der Compiler gibt keine Fehler oder Warnung an. Im Test wird die Order auch gelegentlich ausgeführt. Es kommt aber wie schon gesagt ganz oft der Fehler 138.
Code:
//+------------------------------------------------------------------+
//| Funktion BUY |
//+------------------------------------------------------------------+
void Func_Buy () {
if(Digits == 3) Multiplier = 100;
if(Digits == 5) Multiplier = 10000;
Verlustgrenze = Kapital / 100 * Risiko;
Abstand = NormalizeDouble((Bid - S1) * Multiplier, Digits);
if(Abstand>150){Abstand=150;}
Verlustgrenze = NormalizeDouble(Verlustgrenze / Abstand,2);
Volumen = NormalizeDouble((Verlustgrenze / 0.10)* 0.01,2);
Stop_Loss = NormalizeDouble(S1 - 4 * Point * 10, Digits);
Take_Profit = NormalizeDouble(Bid + 1 * (Abstand) * Point * 10, Digits);
R1 = NormalizeDouble(R1, Digits);
if(Take_Profit<R1)
{Take_Profit=R1;}
int Ticket = OrderSend(Symbol(),OP_BUY,Volumen,Ask,Slippage,Stop_Loss,Take_Profit,"BUY_MARKET",0,0,clrGreen);
if(Ticket<0)
{
Print("OrderSend failed with error #",GetLastError());
}
else
Print("OrderSend placed successfully");
}