Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1250

 
Artyom Trishkin :

Je ne l'ai pas examiné - je ne peux malheureusement pas vous le dire.

Je vais vous expliquer. J'espère que ça a un sens.

Voici l'explication :

Je négocie EURUSD et AUDJPY dans MT5. Les deux ont une marge comptabilisée comme indiqué dans la barre d'outils MT5. Je vais partager l'image.

Premier trade sur EURUSD :

J'ai vendu avec le lot = 1. Marge de manœuvre = 235,31.

Je négocie maintenant sur AUDJPY :

J'ai vendu au lot = 1. J'ai pris un appel de marge = 144,24.

Et la marge totale indiquée dans ToolBox = 379,55.

La boîte à outils, comme vous pouvez le voir, montre la marge totale utilisée par les symboles EURUSD et AUDJPY.

J'en viens maintenant à ma question.

Je veux savoir quelle est la marge de la marge totale utilisée par l'EURUSD. Je ne comprends pas les calculs pour cela. Je sais que la réponse devrait être = 235.31

Mais avec OrderCalcMargin (), j'obtiens des réponses différentes. Parfois la fonction renvoie 235,23, parfois 235,01. Mais c'est la mauvaise réponse. Je veux savoir comment je peux calculer la marge utilisée pour un symbole particulier. Dans mon exemple, dites-moi comment je peux calculer la marge utilisée par EURSD ou AUDJPY.

Note :

La réponse OrderCalcMargin () donne parfois la réponse correcte pour EURUSD. Mais si je veux calculer la marge pour AUDJPY, c'est toujours différent.

Maintenant, dites-moi si j'ai bien compris.

J'ai cette question et j'ai essayé de l'expliquer à tout le monde sur le forum, mais personne ne peut comprendre. C'est moi qui essaie à nouveau.

Je vais réessayer si ça n'a toujours pas de sens.

@ Artyom Trishkin, faites-moi savoir. Je compte sur vous pour me donner une solution.

 
jaffer wilson:

Je vais vous expliquer. J'espère que ça a un sens.

Voici l'explication :

Je négocie EURUSD et AUDJPY dans MT5. Les deux ont une marge comptabilisée comme indiqué dans la barre d'outils MT5. Je vais partager l'image.

Premier trade sur EURUSD :

J'ai vendu avec le lot = 1. Marge de manœuvre = 235,31.

Je négocie maintenant sur AUDJPY :

J'ai vendu au lot = 1. J'ai pris un appel de marge = 144,24.

Et la marge totale indiquée dans ToolBox = 379,55.

La boîte à outils, comme vous pouvez le voir, montre la marge totale utilisée par les symboles EURUSD et AUDJPY.

J'en viens maintenant à ma question.

Je veux savoir quelle est la marge de la marge totale utilisée par l'EURUSD. Je ne comprends pas les calculs pour cela. Je sais que la réponse devrait être = 235.31

Mais avec OrderCalcMargin (), j'obtiens des réponses différentes. Parfois la fonction renvoie 235,23, parfois 235,01. Mais c'est la mauvaise réponse. Je veux savoir comment je peux calculer la marge utilisée pour un symbole particulier. Dans mon exemple, dites-moi comment je peux calculer la marge utilisée par EURSD ou AUDJPY.

Note :

La réponse OrderCalcMargin () donne parfois la réponse correcte pour EURUSD. Mais si je veux calculer la marge pour AUDJPY, c'est toujours différent.

Maintenant, dites-moi si j'ai bien compris.

J'ai cette question et j'ai essayé de l'expliquer à tout le monde sur le forum, mais personne ne peut comprendre. C'est moi qui essaie à nouveau.

Je vais réessayer si ça n'a toujours pas de sens.

@ Artyom Trishkin, faites-moi savoir. Je compte sur vous pour me donner une solution.

Des valeurs très importantes à calculer dans votre cas :

  1. La devise dans laquelle le compte est libellé
  2. Quel était le taux de change au moment où vous avez ouvert la position ?

À titre d'exemple, le calcul de la marge pour AUDJPY implique AUDUSD et USDJPY. Quel était le taux de change AUDJPY au moment où vous avez ouvert la position, personne ne le saura jamais. Vous pouvez seulement essayer de calculer via la marge actuelle. Cela a été mentionné dans le fil de discussion dont je vous ai donné le lien. Pour être honnête, il n'en dit pas grand-chose, mais il y a quelque chose dans les codes.

À chaque instant, ces taux changent et vous obtenez donc des valeurs de marge différentes. Calculer le rapport entre la marge actuelle et le prix d'ouverture de la position et appliquer ce coefficient pour calculer la marge de la position ouverte. Vous devez faire des expériences. Je ne me souviens pas de l'algorithme de calcul exact.

Mais je ne pense pas que quiconque vous donnera une solution toute faite.

 
Alexey Viktorov :

Des valeurs très importantes pour le calcul dans votre cas :

  1. La devise dans laquelle le compte est libellé
  2. Quel était le taux de change au moment où vous avez ouvert la position ?

À titre d'exemple, le calcul de la marge AUDJPY implique AUDUSD et USDJPY. Quel était le taux de change AUDJPY au moment où vous avez ouvert la position, personne ne le saura jamais. Vous pouvez seulement essayer de calculer via la marge actuelle. Cela a été mentionné dans le fil de discussion dont je vous ai donné le lien. Pour être honnête, il n'en dit pas grand-chose, mais il y a quelque chose dans les codes.

À chaque instant, ces taux changent et vous obtenez donc des valeurs de marge différentes. Calculer le rapport entre la marge actuelle et le prix d'ouverture de la position et appliquer ce coefficient dans le calcul de la marge pour la position ouverte. Vous devez faire des expériences. Je ne me souviens pas de l'algorithme de calcul exact.

Mais je ne pense pas que quiconque vous donnera une solution toute faite.

Oui, je comprends. Mais je constate que la ToolBox MT5 calcule exactement sans modifier la marge. Alors quelle logique utilise la MT5 ToolBox ? Pourriez-vous nous éclairer à ce sujet ?

 

Question : comment attribuer une valeur à différentes variables via les arguments d'une fonction. S'il n'y a qu'un seul argument, on peut le renvoyer et lui attribuer une valeur, mais s'il y en a deux, que faut-il faire ?

int x,x1,x2,x3=1,x4,x5;
void OnStart()
{
x=2;
F(x,x1,x2);
Print ("x1= ",x1," x2= ",x2);
x=5 ;
F(x,x4,x5);
Print ("x4= ",x4," x5= ",x5);
return;
}

int F(int ArgX, int ArgX1, int ArgX2)
{
ArgX1=ArgX + x3;
ArgX2=ArgX - x3;
return ArgX1;
}

//результат
2020.09.09 15:10:10.561 TestS EURUSD,H1: x4= 0 x5= 0
2020.09.09 15:10:10.561 TestS EURUSD,H1: x1= 0 x2= 0
Документация по MQL5: Основы языка / Операции и выражения / Операции присваивания
Документация по MQL5: Основы языка / Операции и выражения / Операции присваивания
  • www.mql5.com
Побитовые операции производятся только с целыми числами. При выполнении операции логический сдвиг представления y вправо/влево на x бит используются младшие 5 двоичных разрядов значения x, старшие разряды отбрасываются, то есть сдвиг производится на 0-31 бит.
 

Valery, peut-être que ça fera l'affaire :

void  F(int &ArgX, int &ArgX1, int &ArgX2)
 
Aleksei Stepanenko:

Valery, peut-être que ça fera l'affaire :

Exact, liens, appersand si je ne me trompe pas.

2020.09.09 15:18:33.572 TestS EURUSD,H1 : x4= 6x5= 4

2020.09.09 15:18:33.572 TestS EURUSD,H1 : x1= 3x2= 1

Merci)))


 
C'est vrai ! Transmission au lien.
 
Valeriy Yastremskiy:

Question : comment attribuer une valeur à différentes variables via les arguments d'une fonction. S'il n'y a qu'un seul argument, on peut le renvoyer et lui attribuer une valeur, mais s'il y en a 2, qu'en est-il ?

Qu'est-ce que c'est ?

void start()

Il était une fois, il y a très, très longtemps. que les mammouths ont mangé. Et puis ils l'ont mis. C'est ce que je pense ?

 
Artyom Trishkin:

Qu'est-ce que c'est ?

Il était une fois... que les mammouths avaient l'habitude de manger. Et puis ils l'ont mis. C'est ce que je pense ?

Ne jugez pas, j'ai écrit le script à la main. Et un contrôle strict permet de sauter les anciennes fonctions. Bien sûr, je n'écris pas mon scénario de cette façon. En outre, il existe des constructeurs. )))))

Corrigé)
 
Chers collègues, bonne journée à tous. Il y a cinq robots de trading avec différents symboles magiques qui ouvrent des positions sur le marché au prix d'ouverture d'une nouvelle barre et ils ont tous les mêmes conditions d'entrée. Les sorties sont différentes.
Parfois, je ferme les cinq positions manuellement.
Et puis, comment avec un effort minimal pour organiser un algorithme pour l'ouverture d'une nouvelle position sur le marché, mais pas sur la prochaine barre - le commerce sur M1, mais sur consécutifs différents, c'est-à-dire sur 1 m1 ouvert le premier qui a eu le temps, sur la deuxième m1 ouvert à partir d'eux la deuxième qui a eu le temps, etc à 5.
Je pense que la question se résume à la suivante : en tant qu'option, comment attribuer une minute de l'heure d'ouverture du marché pour sa comparaison ultérieure avec les minutes () de la ffi standard ? Et bien sûr, s'il y a déjà une position sur le marché à cette minute, alors retour ().
Raison: