... dans cette partie du code il y a un problème avec la nouvelle compilation (error ---> 'MarketInfo' - illegal switch expression type) peut-être tout était OK jusqu'à la mise à jour de MT4 build 600+ ... mais depuis lors il ne fonctionne plus.
Donc, pourriez-vous s'il vous plaît poster une version plus récente ... si bien sûr vous êtes toujours là.
Je pense que si vous changez
switch ( MarketInfo( strSymbol, MODE_DIGITS ) )
en
int dig=MarketInfo( strSymbol, MODE_DIGITS ) ;
switch ( dig )
... dans cette partie du code il y a un problème avec la nouvelle compilation (error ---> 'MarketInfo' - illegal switch expression type) peut-être que tout était OK jusqu'à la mise à jour de MT4 build 600+ ... mais depuis cela ne fonctionne plus.
Donc, pourriez-vous s'il vous plaît poster une version plus récente ... si bien sûr vous êtes toujours là.
" Les valeurs de l'Expression et des Paramètres ne peuvent être que des valeurs de type int. L'Expression peut être une constante, une variable, un appel de fonction ou une expression. Chaque 'cas' de variation peut être marqué par une constante entière, une constante de caractère ou une expression constante. Une expression constante ne peut pas inclure de variables ou d'appels de fonction."
Sebastien Pelle: Dans mes différents EA, c'est écrit comme ceci :
double lot = MathCeil(AccountFreeMargin() * Risk_Percent / 1000) /
La marge libre n'a rien à voir avec votre risque. C'est le stop loss de votre courtier (50% de votre compte).
Vous auriez dû lire l'intégralité du fil de discussion et ne pas poster. En résumé :
Vous placez le stop là où il doit être - là où la raison de la transaction n'est plus valable. Par exemple, si vous négociez un rebond de support, le stop passe sous le support.
Solde du compte * pourcentage/100 = RISQUE = Lots d'ordres * (|OrderOpenPrice - OrderStopLoss| * DeltaPerLot+ CommissionPerLot) (Note OOP-OSL inclut le SPREAD, et DeltaPerLot est généralement autour de 10 $/pip mais il prend en compte les taux de change de la paire par rapport à la devise de votre compte).
N'utilisez PAS TickValue par lui-même - DeltaPerLot
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
... dans cette partie du code il y a un problème avec la nouvelle compilation (error ---> 'MarketInfo' - illegal switch expression type) peut-être tout était OK jusqu'à la mise à jour de MT4 build 600+ ... mais depuis lors il ne fonctionne plus.
Donc, pourriez-vous s'il vous plaît poster une version plus récente ... si bien sûr vous êtes toujours là.
Je pense que si vous changez
switch ( MarketInfo( strSymbol, MODE_DIGITS ) )en
La compilation sera correcte
... dans cette partie du code il y a un problème avec la nouvelle compilation (error ---> 'MarketInfo' - illegal switch expression type) peut-être que tout était OK jusqu'à la mise à jour de MT4 build 600+ ... mais depuis cela ne fonctionne plus.
Donc, pourriez-vous s'il vous plaît poster une version plus récente ... si bien sûr vous êtes toujours là.
https://book.mql4.com/operators/switch
" Les valeurs de l'Expression et des Paramètres ne peuvent être que des valeurs de type int. L'Expression peut être une constante, une variable, un appel de fonction ou une expression. Chaque 'cas' de variation peut être marqué par une constante entière, une constante de caractère ou une expression constante. Une expression constante ne peut pas inclure de variables ou d'appels de fonction."
Une fois de plus, vous proposez une solution plus simple et meilleure.
Dans mon EA différent, c'est écrit comme ceci :
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) /