... in diesem Teil des Codes ist ein Problem mit neuen Kompilierung (Fehler ---> 'MarketInfo' - illegale switch Ausdruckstyp) vielleicht war es alles OK, bis das Update auf MT4 build 600+ ... aber seitdem funktioniert es nicht mehr.
Könnten Sie also bitte eine neuere Version posten ... wenn Sie natürlich noch da sind.
Ich denke, wenn Sie wechseln
switch ( MarketInfo( strSymbol, MODE_DIGITS ) )
zu
int dig=MarketInfo( strSymbol, MODE_DIGITS ) ;
switch ( dig )
... in diesem Teil des Codes ist ein Problem mit neuen Kompilierung (Fehler ---> 'MarketInfo' - illegale switch Ausdruckstyp) vielleicht war es alles OK, bis das Update auf MT4 build 600+ ... aber seitdem funktioniert es nicht mehr.
Könnten Sie also bitte eine neuere Version posten ... wenn Sie natürlich noch da sind.
"Die Werte von Expression und Parametern können nur Werte vom Typ int sein. Der Ausdruck kann eine Konstante, eine Variable, ein Funktionsaufruf oder ein Ausdruck sein. Jede Variante 'case' kann durch eine Integer-Konstante, eine Zeichenkonstante oder einen konstanten Ausdruck gekennzeichnet sein. Ein konstanter Ausdruck kann keine Variablen oder Funktionsaufrufe enthalten."
Sebastien Pelle: In meinem anderen EA, ist es so geschrieben:
double lot = MathCeil(AccountFreeMargin() * Risk_Percent / 1000) /
Die freie Marge hat nichts mit Ihrem Risiko zu tun. Es ist der Stop Loss Ihres Brokers (50% Ihres Kontos).
Sie hätten den gesamten Thread lesen und nicht posten sollen. Zusammengefasst:
Sie platzieren den Stopp dort, wo er sein muss - wo der Grund für den Handel nicht mehr gültig ist. Wenn Sie z.B. an einer Unterstützung handeln, wird der Stop unterhalb der Unterstützung platziert.
Kontostand * Prozent/100 = RISIKO = OrderLots * (|OrderOpenPrice - OrderStopLoss| * DeltaPerLot+ CommissionPerLot) (Beachten Sie, dass OOP-OSL den SPREAD einschließt und DeltaPerLot in der Regel etwa $10/Pip beträgt, aber die Wechselkurse des Paares gegenüber Ihrer Kontowährung berücksichtigt).
Verwenden Sie NICHT TickValue allein - DeltaPerLot
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
... in diesem Teil des Codes ist ein Problem mit neuen Kompilierung (Fehler ---> 'MarketInfo' - illegale switch Ausdruckstyp) vielleicht war es alles OK, bis das Update auf MT4 build 600+ ... aber seitdem funktioniert es nicht mehr.
Könnten Sie also bitte eine neuere Version posten ... wenn Sie natürlich noch da sind.
Ich denke, wenn Sie wechseln
switch ( MarketInfo( strSymbol, MODE_DIGITS ) )zu
Es wird gut kompiliert
... in diesem Teil des Codes ist ein Problem mit neuen Kompilierung (Fehler ---> 'MarketInfo' - illegale switch Ausdruckstyp) vielleicht war es alles OK, bis das Update auf MT4 build 600+ ... aber seitdem funktioniert es nicht mehr.
Könnten Sie also bitte eine neuere Version posten ... wenn Sie natürlich noch da sind.
https://book.mql4.com/operators/switch
"Die Werte von Expression und Parametern können nur Werte vom Typ int sein. Der Ausdruck kann eine Konstante, eine Variable, ein Funktionsaufruf oder ein Ausdruck sein. Jede Variante 'case' kann durch eine Integer-Konstante, eine Zeichenkonstante oder einen konstanten Ausdruck gekennzeichnet sein. Ein konstanter Ausdruck kann keine Variablen oder Funktionsaufrufe enthalten."
Wieder einmal haben Sie eine einfachere und bessere Lösung gefunden.
In meinem anderen EA ist es so geschrieben:
extern double Risk_Percent = 3;
extern int StopLoss = 50;
//+------------------------------------------------------------------+
{
double lot = MathCeil(AccountFreeMargin() * Risk_Percent / 1000) / 100;
if(lot<MarketInfo(Symbol(),MODE_MINLOT))lot=MarketInfo(Symbol(),MODE_MINLOT);
if(lot>MarketInfo(Symbol(),MODE_MAXLOT))lot=MarketInfo(Symbol(),MODE_MAXLOT);
return (MathMin(NormalizeDouble(lot,PipMultiplier),MaxLotSize));
}
//+------------------------------------------------------------------+
if(_Digits==5 || _Digits==3)PipMultiplier=10;
else PipMultiplier=1;
slippage=Slippage*PipMultiplier;
if(_Digits<4)
{
point=0.01;
}
else
{
point=0.0001;
}
return(0);
//+------------------------------------------------------------------+
double lot = MathCeil(AccountFreeMargin() * Risk_Percent / 1000) /