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

 
Alexey Viktorov:

Quel emmerdeur... Vérifiez comment vous comptez.

GOLD chez metaquotes (pourcentage de marge - 1, effet de levier -300), CFD

2017.06.05 21:57:42.015 Script gold_test_vik2 GOLD,H4: removed
2017.06.05 21:57:42.000 gold_test_vik2 GOLD,H4: uninit reason 0
2017.06.05 21:57:42.000 gold_test_vik2 GOLD,H4: ******** AccountMargin = 19188.75 USD
2017.06.05 21:57:42.000 gold_test_vik2 GOLD,H4: ******** Процент маржи 300 Маржа ордера GOLD 0.05 = 19188.75
2017.06.05 21:57:42.000 gold_test_vik2 GOLD,H4: initialized

Sur les croisements et les positions verrouillées, les calculs sont également erronés, mais personnellement je m'en moque, et je vois que votre script ne le gère tout simplement pas... Je ne pense pas que cela vaille la peine, si toutes les difficultés rencontrées jusqu'à présent sont en tout cas liées au calcul du pourcentage de marge et de la garantie pour au moins un ordre CFD.

p.s. Je commence aussi à penser que ce n'est pas une coïncidence si les développeurs n'ont pas donné un accès direct au pourcentage de marge :D

 

Pouvez-vous partager votre expérience sur la façon d'ouvrir une démo sur MetaQuote-Demo avec un effet de levier de 300 ? J'ai un maximum de 100...


GOLD sur MetaQuote-Demo

2017.06.06 09:07:32.780 Data Folder: D:\MetaTrader 4\Programming
2017.06.06 09:07:32.780 Windows 7 Home Premium (x64 based PC), IE 11.00, UAC, 4 x AMD FX-4170 Quad-Core Processor , RAM: 10402 / 12255 Mb, HDD: 31535 / 244198 Mb, GMT+03:00
2017.06.06 09:07:32.780 MetaTrader 4 build 1090 started (MetaQuotes Software Corp.)

Impression

2017.06.06 09:09:25.812 test GOLD,H1: ******** AccountMargin = 160.95 USD
2017.06.06 09:09:25.812 test GOLD,H1: ******** Процент маржи 1 Маржа ордера GOLD 0.05 = 160.9525

Captures d'écran



 
Alexey Viktorov:

Pouvez-vous partager votre expérience sur la façon d'ouvrir une démo sur MetaQuote-Demo avec un effet de levier de 300 ? J'ai un maximum de 100...


Oups... Je me suis embrouillé dans les terminaux avec ces tests. Celui-ci était insta, autrement correct, GOLD, pourcentage de marge - 1, levier 300, captures d'écran ci-dessus...

Désolé !

 
ir0407:
Le pourcentage de marge n'est pas un dépôt calculé. Il ne s'agit que de l'une des composantes du calcul de la marge. Le résultat de ce calcul (selon les formules du tableau) revient dans la devise de la marge, qui doit ensuite (si elle est différente de la devise du dépôt) être convertie dans la devise du dépôt.

Et c'est quelque chose sur lequel je n'arrive pas non plus à mettre le doigt. Par exemple, nous prenons une formule :

Lots*Contract_Size/Leverage

Où, Lots - c'est le lot dans la devise de base de l'instrument et le contrat - également dans la devise de base, et ensuite, si nécessaire, multiplier la devise de base à la devise cotée par le taux de change. Et avec tout cela, le résultat est obtenu dans la monnaie de la marge. Comment cela ?

 
K-2SO:

Et c'est quelque chose sur lequel je n'arrive pas non plus à mettre le doigt. Par exemple, nous prenons une formule :

Où, Lots - c'est le lot dans la devise de base de l'instrument et le contrat - également dans la devise de base, et ensuite, si nécessaire, multiplier la devise de base à la devise cotée par le taux de change. Et avec tout cela, le résultat est obtenu dans la monnaie de la marge. Comment cela se fait-il ?

Cette formule

Lots*Contract_Size/Leverage

est valable pour le calcul de la marge pour les devises USD***.


Tout d'abord, nous déterminons le prix que nous devons convertir dans la devise du dépôt.

Si le nom de l'instrument commence par la devise de dépôt, dans ce cas USD, alors le prix n'est pas pris en considération.

Si l'ordre est OP_BUY, nous avons besoin du prix de l'offre.

Si l'ordre est OP_SELL alors Ask

double price = stringFind == 0 ? 1 : type%2 == OP_BUY ? bid : ask;
percentage = NormalizeDouble(
                             margin          // Маржа получена в валюте депозита с учётом плеча
                           /(contractSize    // Размер контракта в базовой валюте
                            *price           // Умножаем на текущую цену и получаем в валюте депозита
                            /100)            // Это для того чтобы коэффициент перевести в проценты
                           *(calcMode == 0 ? leverage : 1) // Это получено методом научно-технического тыка.
                                    // Если способ расчёта 0 - Forex; то надо учесть плечо
                                    //                     1 - CFD; то плечо не учитывается
                                    //                     2 - Futures; 3 - CFD на индексы НЕ проверялись, их у меня нету...
                           , 0);
orderMargin = (orderLots         // правильно, в базовой валюте
              *contractSize      // и это тоже в базовой
              *orderOpenPrice    // а вот тут переводим в валюту депозита
              *percentage/100)   // у меня слов не хватает чтобы объяснить что это такое, но видимо очень нужное.
             /(calcMode == 0 ? leverage : 1);  // Это тоже получено методом научно-технического тыка.

J'espère avoir expliqué les choses clairement...

 
Alexey Viktorov:

J'espère que j'ai été clair...

Hum... Je pense que nous parlons encore de choses différentes. J'ai juste décidé d'essayer de clarifier non pas la méthode de calcul de la marge (pas les calculs), mais comment il se fait qu'à la sortie de la formule de calcul de la marge, où nous ne travaillons pratiquement pas avec la monnaie de la marge, nous obtenons le résultat exactement dans la monnaie de la marge. C'est du moins ce que j'ai compris du message deir0407. Et c'est pour cela que j'ai donné la formule de calcul la plus simple, où il n'y a pas encore de comptabilité entre guillemets....

Pour le reste (la méthode de l'intuition), j'ai également tout essayé, mais j'ai constaté qu'une solution unique n'a pas encore été trouvée. J'ai mélangé les courtiers, mais les résultats - non, c'est-à-dire sur insta votre dernière option avec les paramètres ci-dessus, produit toujours des chiffres cosmiques aussi bien : https://www.mql5.com/ru/forum/193833/page8#comment_5243991.

p.s. Mais merci pour les commentaires ! De toute façon, je comprends la façon de penser, les calculs décrits par vous).

 
K-2SO:

Erm... Je pense que nous parlons encore de choses différentes. J'ai juste décidé d'essayer de clarifier non pas la méthode de calcul de la marge (pas les calculs), mais comment il se fait que le résultat de la formule de calcul de la marge, où nous ne travaillons pratiquement pas avec la monnaie de la marge, nous obtenons le résultat dans la monnaie de la marge. C'est du moins ce que j'ai compris du message deir0407. Et c'est pour cela que j'ai donné la formule de calcul la plus simple, où il n'y a pas encore de comptabilité entre guillemets....

Pour le reste (la méthode de l'intuition), j'ai également tout essayé, mais j'ai constaté qu'une solution unique n'a pas encore été trouvée. J'ai mélangé les courtiers, mais les résultats - non, c'est-à-dire sur insta votre dernière option avec les paramètres ci-dessus, produit toujours des chiffres cosmiques aussi bien : https://www.mql5.com/ru/forum/193833/page8#comment_5243991.

p.s. Mais merci pour les commentaires ! Quoi qu'il en soit, je comprends la façon de penser, les calculs que vous avez décrits).

Je ne veux même pas ouvrir une démo sur Insta. Si ce n'est pas difficile, dans le débogueur on peut montrer quelles sont les valeurs intermédiaires obtenues. Comme sur ma capture d'écran


 
Alexey Viktorov:

Je ne veux même pas ouvrir une démo sur insta. Si vous le voulez bien, vous pouvez montrer dans le débogueur les valeurs intermédiaires que vous obtenez. Comme sur ma capture d'écran



Encore une fois, ma malchance ! Apparemment, lors de l'analyse de votre code, j'ai dû modifier quelque chose (j'ai oublié de le retourner) et c'est pourquoi une telle erreur s'est produite. Maintenant (juste au cas où) j'ai recopié l'original - correctement et sur insta compte. Je vais le tester avec d'autres courtiers alors.
 

Chapeau bas, vous avez presque réussi ! Chez les trois courtiers examinés précédemment, avec des pourcentages de marge différents, le calcul pour l'or (pour les ordres dans un sens) est correct.

Mais le script échoue toujours avec les exotiques. Je me suis arrêté au courtier fxcm. Le pourcentage de marge pour l'or est de 70000, pour les paires de devises conventionnelles est de 130, la devise de la marge semble être l'USD. Je n'ai pas non plus vu de signes de correction nulle part ! (. Je cherche moi-même la clé depuis deux jours et, en fait, je cherche maintenant une réponse à la question suivante : comment se fait-il qu'en calculant les devises de base et leurs taux avec les devises de cotation, on obtienne une devise de marge... Peut-être est-ce cela, ou peut-être est-ce le fait que ce courtier prend en compte le pourcentage de la marge même pour les paires de devises normales.

Ici vous pouvez télécharger le terminal ru.files.fm/u/xfezz883#_ , le décompresser, l'exécuter en utilisant le fichier exe, faire une démo...

 
K-2SO:

Chapeau bas, vous avez presque réussi ! Chez les trois courtiers examinés précédemment, avec des pourcentages de marge différents, le calcul pour l'or (pour les ordres dans un sens) est correct.

Mais le script échoue toujours avec les exotiques. Je me suis arrêté chez le courtier fxcm. Le pourcentage de marge pour l'or est de 70000, pour les paires de devises conventionnelles est de 130, la devise de la marge semble être l'USD. Je n'ai pas non plus vu de signes de correction nulle part ! (. Je cherche moi-même la clé depuis deux jours et, en fait, je cherche maintenant une réponse à la question suivante : comment se fait-il qu'en calculant les devises de base et leurs taux avec les devises de cotation, on obtienne une devise de marge... Peut-être est-ce cela, ou peut-être est-ce le fait que ce courtier prend en compte le pourcentage de la marge même pour les paires de devises normales.

Vous pouvez télécharger le terminal ici ru.files.fm/u/xfezz883#_ , le décompresser, l'exécuter en utilisant le fichier exe, lancer la démo...

Le calcul des croix n'est pas un problème. Il vous suffit de prendre une cotation, qui se traduit de la monnaie de marge à la monnaie de dépôt.

Par exemple, le prix de l'EURJPY

double price = stringFind == 0 ? 1 : type%2 == OP_BUY ? bid : ask;

Si votre dépôt est en USD, vous devez utiliser EURUSD. Si vous calculez CADJPY, vous devez utiliser USDCAD. Ici, nous devons voir comment ajouter la devise du dépôt à la devise de la marge, nous ne devons pas simplement l'entrer dans la liste.

Les compteurs ne sont pas si difficiles à obtenir grâce à MarketInfo(symbol, MODE_MARGINHEDGED). Le seul problème est de trouver d'abord de la contre-monnaie, puis d'en décomposer une partie avec de la contre-monnaie, et le reste - en entier...

En général, je considère que le seul avantage de cet article est que le trader connaît à l'avance la marge qui sera prise lorsque l'ordre en suspens sera activé et qu'il peut supprimer l'ordre en suspens s'il n'est pas suffisant à temps pour éviter les erreurs. J'ai déjà eu du mal avec cela en plaçant un EA sur le marché.