Ja gut, dann hast Du die alte Struktur genommen mit start().
Diese Zeile sollte dann doch besser so lauten:
for(Zaehler_History=OrdersHistoryTotal()-1;Zaehler_History>=0;Zaehler_History--)
und hier steckt ein typisches Fehlerchen drin:
OrderSend(Symbol(),OP_BUY,HandelsLots,Ask,2,Ask-
StopLoss*Point,Ask+
TakeProfit*Point,EAName,MagicNumber,0,Green);
adäquat hier:
OrderSend(Symbol(),OP_SELL,HandelsLots,Bid,2,Bid+
StopLoss*Point,Bid-
TakeProfit*Point,EAName,MagicNumber,0,Red);
Wenn da nicht vorher unter init() entschieden wird, ob es sich um einen 4-oder 5-Digitbroker handelt, dann würden jetzt bei 5-Digitbroker aus den 50 Pips StopLoss in den Variablen plötzlich 5 Pips werden, was verdammt knapp sein kann. (und aus der Slippage 0,2 Pips)
Daher sollte immer in init() stehen:
Code:
Slippage = 2;
M = 1;
if (MarketInfo(Symbol(), MODE_PROFITCALCMODE) == 0) { // gilt nur für Währungspaare
if (Digits == 3 || Digits == 5) M = 10;
}
Pt = M*Point;
Slippage *= M;
und dann entsprechend:
OrderSend(Symbol(),OP_BUY,HandelsLots,Ask,Slippage ,NormalizeDouble(Ask-StopLoss*Pt, Digits),NormalizeDouble(Ask+TakeProfit*Pt, Digits),EAName,MagicNumber,0,Green);
Zusätzlich Slippage angepaßt und die SL- und TP-Werte zur Sicherheit auf entsprechende Kommastellen normiert (da kann sonst einiges in die Hose gehen und den berühmten Fehler 130 produzieren).
traderdoc