Alerte dans l’indicateur. Comment insérer une alerte et une flèche dans votre indicateur ?
Market MQL5. Problèmes et erreurs lors de l’installation d’Expert Advisor et solutions
Description
Dans cet article, j’expliquerai mes méthodes de calcul de la taille du lot basée sur un pourcentage (Risque en %) de Marge Libre à travers différentes paires de devises et divers types de dépôts. Autolot ou lot dynamique à partir du solde. RiskManager. Je vous montrerai mon code Autolot.
Commençons :
Concepts de Base :
Tout d’abord, soulignons quelques concepts utilisés dans ce calcul :
Marge Libre ( AccountFreeMargin() ) – fonds qui ne sont pas utilisés comme garantie dans les positions ouvertes. La Marge Libre est calculée en utilisant la formule : Marge Libre = Solde Actuel du Dépôt – Marge Requise pour les Positions Ouvertes. Cet indicateur détermine le nombre de transactions qui peuvent être ouvertes à l’instant présent.
Ask est le prix auquel vous achetez une certaine quantité d’un instrument financier auprès du courtier. Le courtier vous le vend à ce prix. Lors du trading sur le marché Forex, vous rencontrerez ce type de prix partout : du terminal de trading aux rapports boursiers et articles analytiques sur les marchés financiers.
Bid est le prix auquel vous vendez une certaine quantité d’un instrument financier à votre courtier. Le courtier l’achète de vous à ce prix. Lors du trading sur le marché Forex, vous rencontrerez ce type de prix partout où des discussions sur le marché international Forex ont lieu : du terminal de trading et des taux de change sur le site de votre courtier aux rapports boursiers et articles analytiques sur les marchés financiers internationaux.
Effet de Levier est le ratio entre le montant de la garantie et le montant emprunté. Lors de la sélection initiale de l’effet de levier, vous choisissez la taille du levier, qui indique le multiplicateur par lequel le dépôt du Client sera augmenté pour effectuer des opérations de trading sur le marché Forex. Le Client peut sélectionner un effet de levier de 1:1 à 1:500, ce qui signifie que le Client peut trader uniquement avec ses propres fonds ou demander une augmentation de son dépôt jusqu’à 500 fois pour entrer sur le marché avec ce montant. Effet de Levier, en tant que ratio entre le montant avec lequel un trader entre sur le marché et la taille de son dépôt, joue un rôle crucial dans le processus de trading car il permet à un trader d’augmenter significativement son capital.
Paire de Devises est une désignation de deux devises qui forment ensemble un taux de change. La paire de devises sert d’objet pour les transactions financières. Une paire de devises est désignée par les désignations successives des deux devises qui composent la paire, écrites soit ensemble, soit séparées par une barre oblique sous la forme suivante : devise de base / devise de cotation. La devise de base est la première devise achetée et vendue, et la devise de cotation est utilisée pour exprimer le prix de la devise de base. Une paire de devises est le concept fondamental du marché des changes, présent partout dès qu’il concerne ce marché : des rapports de marché au terminal de trading.
Taille du Lot – le volume de la devise de base, de la matière première ou le nombre d’actions spécifié dans la spécification du contrat. La taille du lot dépend du montant de la devise spécifiée dans le contrat et est une unité de mesure pour déterminer la taille du contrat de trading. Un lot a une taille spécifique, qui est utilisée pour déterminer le montant de la devise utilisée pour les transactions financières sur le marché Forex. Pour exécuter une transaction, le Client détermine la taille de la transaction, exprimée en nombre de lots. Le volume d’une transaction de trading indique combien de devises composeront la transaction. Un lot est la taille du contrat, une quantité fixe de devises utilisée dans le trading Forex.
Le taux de change entre deux devises est déterminé par l’interaction de l’offre et de la demande à un moment donné.
Ce processus est connu sous le nom de cotation des devises, et les cotations peuvent être directes ou inversées.
Une cotation directe reflète le prix d’une devise étrangère en unités de la devise nationale.
La plupart des taux de change sont exprimés en cotations directes du dollar américain contre les devises de divers pays.
Par exemple, USD/UAH—30.70 signifie qu’un dollar américain vaut 30,70 hryvnias ukrainiennes,
et USD/CHF—1.0850 indique qu’un dollar américain équivaut à 1,0850 francs suisses.
Il existe également le concept de taux de change croisé, où le dollar américain n’est ni la devise de base ni la devise cotée.
Des exemples incluent EUR/JPY, GBP/CHF, et EUR/GBP.
Aspect Technique
- NormalizeDouble – Arrondit un nombre à virgule flottante à la précision spécifiée.
- MODE_LOTSIZE – Taille du contrat dans la devise de base de l’instrument.
- MODE_LOTSTEP – L’étape pour changer la taille du lot.
- AccountCurrency – Renvoie le nom de la devise pour le compte actuel.
- MathFloor – La fonction renvoie le plus grand entier inférieur ou égal à x.
Essentiel : Pour assurer l’exactitude de tous les calculs, activez tous les symboles dans le panneau “Market Watch” :
Ma Formule de Calcul pour la Devise du Compte
Ma formule de calcul est la suivante :
Dépôt en USD
Dépôt en USD Cotation Directe ()
Lot = Marge Libre * Risque * Effet de Levier / 100 / Taille du Contrat
Dépôt en USD Cotation Inversée()
Lot = Marge Libre * Risque * Effet de Levier / Ask / 100 / Taille du Contrat
Dépôt en USD Taux de Change Croisé :
Option 1 : S’il y a un prix actuel de la devise de base + USD (par exemple, si la paire de règlement est AUDCAD, alors le prix actuel de la devise de base = AUDUSD)
Lot = Marge Libre * Risque * Effet de Levier / (Prix Actuel de la Devise de Base + USD) / 100 / Taille du Contrat
Option 2 : S’il n’y a pas de prix actuel de la devise de base + USD (par exemple, CADJPY)
Lot = Marge Libre * Risque * Effet de Levier / 100 / Taille du Contrat
Dépôt en EUR
Dépôt en EUR Cotation Directe
Lot = Marge Libre * Risque * Effet de Levier / 100 / Taille du Contrat
Dépôt en EUR Taux de Change Croisé :
Prix actuel = EUR + devise de cotation (par exemple, si la paire de règlement est AUDCAD, alors le prix actuel est la devise de cotation = EURAUD)
Lot = Marge Libre * Risque * Effet de Levier / (prix actuel EUR + devise de cotation) / 100 / Taille du Contrat
Dépôt en UAH et Autres
Dépôt en UAH Cotation Inversée (par exemple, USDUAH)
Lot = MathFloor(Marge Libre * Risque * Effet de Levier / 100 / Prix Actuel / Taille du Contrat / Lot Step / 20) * Lot Step
Dépôt en UAH Croisé (par exemple, EURGBP)
Prix actuel = MarketInfo(StringSubstr(Symbol(), 0, 3) + UAH + StringSubstr(Symbol(), 6), MODE_BID);
si(pr != 0) Lot2 = MathFloor(Marge Libre * Risque * Effet de Levier / Prix Actuel / 100 / Taille du Contrat / Lot Step) * Lot Step;
sinon Lot = MathFloor(Marge Libre * Risque * Effet de Levier / 100 / Taille du Contrat / Lot Step) * Lot Step;
L’ordre de ces fonctions a été déterminé en calculant les paramètres sur différents dépôts.
Si vous avez des suggestions pour ces calculs, veuillez partager vos fonctions Autolot lors de la commande de programmation.
Ou Freelance : Programmation Personnalisée sur MetaTrader et MQL ! Terminer?
Variables Externes Fonction de Calcul Autolot :
Lots | Lot fixe pour l’ouverture d’une position. |
RiskLotType TypeAutolot | Type de Calcul Autolot : BALANCE (Risque à partir du Solde) – Autolot est calculé à partir du solde actuel. Le calcul du lot est basé sur le solde du compte. S’il y a des positions ouvertes sur le compte, le lot suivant sera approximativement le même car le solde ne diminue pas en raison du nombre de positions ouvertes actuelles ! FREEMARGIN (Risque à partir de la Marge Libre) – Le calcul standard du lot à partir de la marge libre actuelle est que plus il y a de positions ouvertes sur le compte, plus le lot calculé pour la prochaine position est petit. Cela est dû au fait qu’en ouvrant une position, la marge libre diminue, de sorte que chaque nouvelle position ouverte a un lot plus petit lors du calcul de l’Autolot. Type de Calcul de Risque pour l’Option RiskLot : Modes disponibles : RiskLotType = 0, // Risque à partir de la Marge Libre RiskLotType = 1, // Risque à partir du Solde |
DynamicLot | Un lot dynamique, Autolot, pour une position ouverte. Vous pouvez activer le calcul du lot dynamique en tant que pourcentage de la marge libre et d’autres facteurs. Calcul de Notre Autolot : Formule et code : https://expforex.com/fr/my-autolot-secrets-dynamiclot-autolot/#eb-table-content-4 |
DynamicLotStopLoss | Risque à partir du SL – Calcule le lot automatique en tenant compte du Stop Loss. La perte maximale en pourcentage du solde lors de la clôture d’une transaction au Stop Loss. Lors du calcul du lot, notre Expert Advisor prend en compte le stop loss au moment de l’ouverture de la transaction. Si la transaction se clôture au stop loss, la perte de cette transaction sera égale à un pourcentage du solde au moment de l’ouverture de la transaction. Important ! Si votre stop loss est modifié après l’ouverture de la transaction, la taille du lot de la transaction ne peut pas être modifiée. À la clôture de la transaction, la perte peut être plus ou moins. Important ! Si vous utilisez un Trailing Stop, le Stop Loss de la transaction change à chaque tick, mais la taille du lot ne peut pas être modifiée. Formule et code : https://expforex.com/fr/my-autolot-secrets-dynamiclot-autolot/#eb-table-content-5 |
LotBalancePcnt RiskLot LotBalancePercent | Pourcentage pour Autolot. Le pourcentage pour la fonction lot dynamique (Autolot). Si RiskLot = 0, alors le LOT de la transaction (Volume) sera calculé selon le paramètre Lot. Si RiskLot n’est pas égal à 0, alors une transaction au terminal client sera ouverte avec un lot en tant que pourcentage de la marge libre du client (Autolot). |
RiskRate | Le taux de votre devise par rapport au dollar (ou à la devise de votre compte). Par défaut, RiskRate = 0, ce qui signifie que l’Expert Advisor essaiera de trouver le taux correct dans le Market Review. Pour que l’Autolot fonctionne bien avec toutes les paires de devises, vous devez activer “Afficher Toutes les Paires de Devises” dans le Market Watch. |
MaxLot | Le lot maximum qu’un Expert Advisor peut ouvrir lors du calcul d’un Autolot et du Martingale pour la première position principale. |
Martin | Martingale. La multiplication standard du lot de la dernière position fermée en perte. Si Martin = 1, alors le martingale ne s’active pas (Lots fixes). Si Martin = 0, alors l’Expert Advisor ne peut pas ouvrir la position suivante. Si Martin = 2, alors le premier lot = 0,1, le deuxième lot = 0,2, et ainsi de suite : 0,4 – 0,8 – 1,6 – 3,2 – 6,4….. Si Martin = 0,5, alors le premier lot = 1, le deuxième lot = 0,5, et ainsi de suite : 0,25 – 0,125. |
Avez-vous besoin d’un code ?
Calcul Autolot Fonction de Code :
input double Lots=0.01; //Lots --> Lot fixe pour les positions et ordres ouverts
input bool DynamicLot=false; //DynamicLot --> Calcul du lot à partir de la marge libre
input bool DynamicLotStopLoss=false; //DynamicLotStopLoss --> Calcul du lot à partir du StopLoss et de la marge libre
input double LotBalancePercent=1; //LotBalancePercent --> Pourcentage pour le calcul du lot
extern double RiskRate=0; //RiskRate --> Taux de change du symbole pour calculer le lot en devise du dépôt
input double MaxLot=999; //MaxLot --> Lot maximum lors de l'ouverture des positions
double GetSizeLot(double ll=1) // La fonction retourne la taille du lot
{
string Author = "Auteur du modèle de fonction : www.expforex.com";
string lotcalc;
double pr;
string Valdepo = AccountCurrency();
// Si le MM est activé, alors déterminer la taille du lot
double Lot2, MinLots, MaxLots;
int lotdig;
if (MarketInfo(Symbol(), MODE_LOTSTEP) == 0.01) lotdig = 2; else lotdig = 1;
if (Valdepo == "USD")
{
if (StringSubstr(Symbol(), 0, 3) == "USD")
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else if (StringSubstr(Symbol(), 3, 3) == "USD")
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / Ask / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else
{
pr = MarketInfo(StringSubstr(Symbol(), 0, 3) + "USD", MODE_ASK);
if (pr != 0)
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / pr / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
}
}
if (Valdepo == "EUR")
{
if (StringSubstr(Symbol(), 0, 3) == "EUR")
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else
{
pr = MarketInfo("EUR" + StringSubstr(Symbol(), 0, 3), MODE_BID);
if (pr != 0)
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() * pr / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
}
}
if (Valdepo == "UAH")
{
if (StringSubstr(Symbol(), 0, 3) == "USD")
Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else if (StringSubstr(Symbol(), 3, 3) == "USD")
Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePcnt * AccountLeverage() / Ask / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else
{
pr = MarketInfo(StringSubstr(Symbol(), 0, 3) + "USD", MODE_ASK);
if (pr != 0)
Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePcnt * AccountLeverage() / pr / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else
Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
}
}
MinLots = MarketInfo(Symbol(), MODE_MINLOT);
MaxLots = MaxLot;
lotcalc = "Autolot=" + Lot2;
if (!DynamicLot) Lot2 = Lots;
if (Lot2 < MinLots) Lot2 = MinLots;
if (Lot2 > MaxLots) Lot2 = MaxLots;
lotcalc = lotcalc + " MinLots=" + MinLots + " LOT=" + NormalizeDouble(Lot2, lotdig);
Print(lotcalc);
return (NormalizeDouble(Lot2, lotdig));
}
Fonction de Calcul Stoploss Autolot :
Si vous souhaitez ajouter la fonctionnalité de Stop Loss Autolot à votre EA, vous pouvez télécharger notre code :
StopLosssd = Stop Loss en points
Variables Externes :
Lots = 0,1 ; // Lot fixe
DynamicLotStopLoss = // vrai/faux
LotBalancePcnt (RiskLot) = 20 ; // % de la marge libre
Fonction :
double GetSizeLotStopLoss(double StopLosssd=1) // La fonction retourne la taille du lot { string Author = "Auteur du modèle de fonction : www.expforex.com"; string Valdepo = AccountCurrency(); // Si le MM est activé, alors déterminer la taille du lot double MinLots; int lotdig; if (MarketInfo(Symbol(), MODE_LOTSTEP) == 0.01) lotdig = 2; else lotdig = 1; double Free = AccountFreeMargin(); double LotVal = MarketInfo(Symbol(), MODE_TICKVALUE); // Coût de 1 pip pour 1 lot double Min_Lot = MarketInfo(Symbol(), MODE_MINLOT); double Max_Lot = MarketInfo(Symbol(), MODE_MAXLOT); double Step = MarketInfo(Symbol(), MODE_LOTSTEP); double Lot = MathFloor((Free * LotBalancePcnt / 100) / (StopLosssd * LotVal) / Step) * Step; MinLots = MarketInfo(Symbol(), MODE_MINLOT); if (Lot < MinLots) Lot = MinLots; return (NormalizeDouble(Lot, lotdig)); }
Questions ?
Si vous avez des questions, n’hésitez pas à les poser. Nous ne vendons pas de cochon dans un sac.
Chacun de nos produits peut être testé avant l’achat.
Nous apprécions votre intérêt et votre soutien pour nos produits et nous nous efforçons de maintenir des normes de haute qualité.
Merci d’être avec nous !
Avez-vous une question ?
6 responses to “Mes secrets d’Autolot. Lot dynamique ou Autolot.”
-
I want to be able to double whatever lot size that is being copied from the master onto the client.. How do I do that with settings… so no matter what every new position the client with be 2x that.. master opens a trade of .03, then it will be copied to client as .06.
-
I want to be able to double whatever lot size that is being copied from the master onto the client.. How do I do that with settings… so no matter what every new position the client with be 2x that.. master opens a trade of .03, then it will be copied to client as .06.
-
I want to be able to double whatever lot size that is being copied from the master onto the client.. How do I do that with settings… so no matter what every new position the client with be 2x that.. master opens a trade of .03, then it will be copied to client as .06.
-
I want to be able to double whatever lot size that is being copied from the master onto the client.. How do I do that with settings… so no matter what every new position the client with be 2x that.. master opens a trade of .03, then it will be copied to client as .06.
-
I want to be able to double whatever lot size that is being copied from the master onto the client.. How do I do that with settings… so no matter what every new position the client with be 2x that.. master opens a trade of .03, then it will be copied to client as .06.
This post is also available in: English Українська Portuguese Español Deutsch Chinese Русский Français Italiano Türkçe 日本語 한국어
Leave a Reply