Comment obtenir le "Pourcentage de la marge" de manière programmatique ? - page 6

 
ir0407:
Le pourcentage de la marge n'est pas la garantie calculée. Il ne s'agit que d'un des éléments permettant de calculer la marge. Et le résultat de ce calcul (utilisant les formules du tableau) est renvoyé dans la devise de la marge, qui doit ensuite (si elle diffère de la devise du dépôt) être convertie dans la devise du dépôt.
Tous compris sauf un, quelle est l'essence de ce composant)
 
K-2SO:

Pouvez-vous me suggérer un courtier, s'il vous plaît ? Pour mes tests...
Robo.
 

Je partagerai les tests, et je suis finalement confus par ces formules, qui jusqu'à présent n'ont pas réussi à s'additionner en une seule formule. Trois courtiers différents - trois pourcentages de marge différents - trois formules différentes, dont on pourrait presque dire qu'elles correspondent au résultat. Il s'agit du calcul de la marge sur un ordre déjà placé( !) (BUY) sur l'or.

Comme vous pouvez le constater, le pourcentage de marge est encore parfois important, mais les métacitations n'en ont pas vraiment besoin.

 margin=OrderLots()*contract*OrderOpenPrice()/leverage/100; // метаквоты - процент маржи 100%

 margin=OrderLots()*contract*OrderOpenPrice()*Percentage/100; // инста - процент маржи 1%
            
 margin=(OrderLots()*contract*OrderOpenPrice()*Percentage)/leverage/100;// робо - процент маржи 200%
 
Je pense avoir compris comment la formule générale est censée fonctionner (quand j'ai enfin compris qu'il y a en fait un pourcentage de marge) - les tests ne sont pas partis pour rien. Et oui... La valeur du pourcentage de marge doit absolument être utilisée (même pour une commande déjà passée). Une fois que j'aurai compris comment calculer et obtenir cette valeur, je partagerai mes conclusions sur la formule générale de calcul d'une marge pour un ordre CFD unique, si cela intéresse quelqu'un... Bien que, en principe, tout soit en vue (la dépendance que nous recherchons), dans le code du message ci-dessus.
 
K-2SO:
Je pense avoir compris comment la formule générale devrait fonctionner (quand j'ai enfin réalisé ce qu'est le pourcentage de marge) - les tests n'ont pas été vains. Et oui... La valeur du pourcentage de marge doit absolument être utilisée (même pour une commande déjà passée). Lorsque je comprendrai comment calculer et obtenir cette valeur, je partagerai mes conclusions sur la formule générale de calcul d'une marge pour un ordre CFD unique, si cela intéresse quelqu'un... Bien qu'en principe, tout est en vue (la dépendance que nous recherchons) dans le code du message ci-dessus.

Tout est sur la première page

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Comment obtenir le "pourcentage de marge" de manière programmatique ?

Alexey Viktorov, 2017.06.02 09:42

Bien... Je ne sais pas pourquoi les gens qui essaient de vous aider devraient fantasmer sur ce que vous avez fantasmé ? De toute façon, ce n'est pas la question.

Comment obtenir ce dont vous avez besoin à partir de cette formule ?

La formule elle-même est Margin = Lots *ContractSize*MarketPrice*Pourcentage/100.

Par conséquent, le pourcentage = marge/(Lots *Taille du contrat*Prix du marché/100).

Elle ne figure pas encore dans la liste des fonctions obsolètes. Il produit donc la valeur manquante pour déterminer le pourcentage de marge.

MarketInfo(_Symbol, MODE_MARGINREQUIRED);

Après avoir obtenu toutes les données pour l'heure actuelle et au prix actuel, il est très facile de recalculer la marge qui a été retenue au prix d'ouverture de l'ordre.

Si vous en avez besoin pour mql5, vous devez utiliser

bool  SymbolInfoMarginRate( 
   string             name,                     // символ 
   ENUM_ORDER_TYPE    order_type,               // тип ордера 
   double&            initial_margin_rate,      // коэффициент взимания начальной маржи 
   double&            maintenance_margin_rate   // коэффициент взимания поддерживающей маржи 
   );

Lors de l'ouverture d'un ordre, on prend en considération le prix actuel et le même pourcentage de marge qui ne peut être obtenu que par la formule. Par conséquent, nous devons d'abord définir la marge attendue pour le lot complet au prix actuel en utilisant la fonction suivante

MarketInfo(symbol, MODE_MARGINREQUIRED);

A partir de cette marge, nous calculons le pourcentage de la marge, puis nous calculons la marge pour une commande spécifique. Mais là encore, la marge n'est pas toujours calculée dans la devise du dépôt et est convertie en celle-ci au taux de change en vigueur au moment de l'ouverture de l'ordre, et il n'y a aucun moyen de l'obtenir (taux de change) plus tard dans mql4. En mql5 c'est plus facile, il y a CopyTicks() et vous pouvez obtenir le taux de change au moment de l'ouverture de l'ordre, mais ce n'est pas le langage dont nous parlons ici.

 
Alexey Viktorov:

Mais là encore, la marge n'est pas toujours calculée dans la devise du dépôt et est convertie en celle-ci au taux de change en vigueur au moment de l'ouverture de l'ordre, et il n'y a aucun moyen de l'obtenir (le taux de change) plus tard dans mql4.

Je suis toujours confus à ce stade. Il est clair que MARGINREQUIRED renvoie la valeur dans la monnaie de dépôt, mais de quelle monnaie avons-nous besoin ? Dans la monnaie de la cotation du symbole ?
 
K-2SO:
Je suis toujours confus à ce stade. Il est clair que MARGINREQUIRED renvoie la valeur dans la devise du dépôt. Dans la devise de la cotation du symbole ?

Comparez les 2 photos, dans le premier message et à la page 5 de mon message. Les deux sont des spécifications de l'or, mais dans le premier cas, la devise de la marge est le USD et dans le second le XAU. Dans le premier cas, vous ne pouvez donc rien faire. Dans le second, après avoir reçu la marge dans la devise du dépôt, il faut la convertir en devise de la marge en la multipliant par une cote et l'introduire dans la formule qui permet de calculer le pourcentage de la marge. Sinon, le résultat sera incorrect. En conséquence, nous devrions à nouveau ajouter à la formule

MARGE_DE_LA_DEVISE_SYMBOLE

Devise dans laquelle la marge est calculée

chaîne de caractères

 

Après quelques expériences, je dois admettre qu'ici

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Comment obtenir le "pourcentage de marge" de manière programmatique ?

Alexey Viktorov, 2017.06.02 10:24

L'effet de levier ne fait généralement pas partie de la formule de base Marge = (Lots*Taille du contrat*Prix du marché*Pourcentage)/Levage, je ne l'ai donc pas pris en compte. Pour déterminer sur quoi porte la question, le levier est comme la selle d'une vache. Mais il peut être nécessaire d'aller plus loin, mais cela ne concerne pas la question actuelle...

J'avais tort. L'effet de levier doit être utilisé car la marge

MarketInfo(symbol, MODE_MARGINREQUIRED);

nous l'obtenons par effet de levier.



 
Alexey Viktorov:

Après quelques expérimentations, je dois admettre qu'ici

J'avais tort. L'effet de levier doit être utilisé car la marge

est obtenu en tenant compte de l'effet de levier.

Les tests montrent que lorsque le pourcentage de marge est égal à 1, l'effet de levier n'est pas pris en compte ! Mais à partir de 100 et plus, il est déjà pris en compte. J'aimerais pouvoir trouver un courtier avec un pourcentage de marge de 2 à 99 inclus.

 
K-2SO:

Les tests montrent que lorsque le pourcentage de marge est égal à 1, l'effet de levier n'est pas pris en compte ! Mais lorsqu'il est de 100 et plus, il est déjà pris en compte. J'aimerais pouvoir trouver un courtier dont le pourcentage de marge se situe entre 2 et 99 inclus.

Ouvrez un compte de démonstration pour 5 livres avec un effet de levier de 100 et voyez quel est le pourcentage de marge, par exemple, le même pour l'or ou mieux encore - le rouble ...