Prix par tuyau - page 5

 

Gordon

Que voulez-vous dire par"exécution instantanée"? (il est sous-entendu que ce n'est pas la même chose que 'Market Execution')..."

MT4 Server semble faire référence (vous le verrez dans sa liste déroulante d'ouverture d'ordre manuelle) à la possibilité de définir les stops dans l'ouverture d'ordre comme "Instant Execution" ; et "Market Execution" lorsqu'ils doivent être définis à 0 et modifiés.

@SDC et 1005philip

"Ne serait-il pas plus simple d'utiliser Symbol() dans toutes les références au symbole ? Ainsi, même si le serveur du courtier a entré EURUSD sous le nom de mooncheese, cela n'aura aucune importance tant que l'EA saura que EURUSD s'appelle mooncheese.

Lorsque le nom du symbole est modifié par le courtier, cela nécessite d'ouvrir un nouveau graphique auquel vous ajouterez votre EA.

CB

 
cloudbreaker:

Le serveur MT4 semble faire référence (vous le verrez dans sa liste déroulante d'ouverture d'ordre manuelle) à la possibilité de définir les stops dans l'ouverture d'ordre comme "Exécution instantanée" ; et "Exécution au marché" lorsqu'ils doivent être définis à 0 et modifiés.

Le menu déroulant change effectivement lorsqu'on se connecte à un compte qui n'accepte que les stops à 0. Je n'avais jamais remarqué cela. Merci.
 
SDC:

Ne serait-il pas plus simple d'utiliser Symbol() dans toutes les références au symbole ? Ainsi, même si le serveur du courtier a entré EURUSD sous le nom de mooncheese, cela n'aura aucune importance tant que l'EA saura que EURUSD s'appelle mooncheese.

Wow ! le sujet a pris de l'ampleur et compte maintenant 42 messages, c'est un record...

Si cela ne vous dérange pas.... reprendre là où je m'étais arrêté...

SDC, si je ne me trompe pas, Phillip exposait sa fonction personnalisée pour produire TickValue, indépendamment, par opposition au simple appel de la MarketInfo prédéfinie. Bien sûr, appeler MODE_TICKVALUE sur Symbol() est la chose logique la plus simple à faire. Mais à part démontrer/provoquer où/comment la TickValue a obtenu sa valeur. Je peux me tromper mais je pense que cela a l'avantage de synthétiser une/des paire(s) exotique(s) qu'un courtier particulier peut ne pas proposer. Nous pouvons permuter toutes les bases/compteurs qui sont disponibles. Je n'ai pas d'exemple sous la main. Mais je suis presque sûr que ce que les courtiers ont à offrir n'est pas une permutation complète des bases/comptoirs disponibles. Je ne fais qu'explorer ce que Phillip a posté. Il se peut que ce ne soit pas utile, à moins que l'on ait besoin de faire du hedge/arbitrage ou autre chose...

 

Je serais heureux de partager davantage le code que j'ai ici si vous y trouvez de l'intérêt. Honnêtement, j'ai supposé que c'était juste un chemin banal/routinier que la plupart des gens avaient déjà parcouru au cours de leurs propres aventures de codage, donc je ne voulais pas insulter l'intelligence de quiconque en supposant que c'était quelque chose de nouveau pour la communauté. (De plus, mon code n'est pas exactement ce que je considère comme étant digne d'être publié dans la mesure où il se trouve sur mon disque dur, faisant potentiellement plus de mal que de bien dans de mauvaises mains et je ne veux vraiment pas que quelqu'un perde de l'argent à cause de mon style de commentaire médiocre, etc).

L'avantage (je le vois plus comme "la nécessité") d'être capable de calculer le tickvalue à partir des fondamentaux n'est pas tant pour la couverture/arbitrage (bien qu'il pourrait certainement être exploité là aussi) mais plutôt pour quelque chose de beaucoup plus simpliste. Dans mon cas, je trouve cela nécessaire pour le calcul de l'équité à risque, le placement de stoploss, etc.

(également, notez : la valeur marketinfo pour MODE_TICKVALUE est strictement basée sur le prix d'offre de la paire de devises, et non sur le prix de demande, en tant que telle, la valeur tickinfo du marché n'est en fait techniquement correcte que pour une utilisation avec des calculs qui dépendent du prix d'offre, comme la valeur takeprofit d'une position longue ou le stoploss d'une position courte... encore une fois, la divergence est mineure, et naturellement, cela ne fait aucune différence pour les paires de devises dans lesquelles la devise du compte est la contre-devise, comme EURUSD, etc.)

Le problème de l'utilisation de l'info-marché Tickvalue est qu'elle n'est valable que pour les prix actuels du marché. La valeur du tick dépend du prix du marché pour toutes les paires de devises sauf celles dont la devise du compte est la contre devise. (La tickvalue de l'USDJPY est différente si l'USDJPY = 99,00 ou 98,00, etc.)

La raison de la création de paires "synthétiques" comme vous les appelez est que pour les paires de devises croisées, la valeur du tick dépend du prix de deux paires de devises. Le symbole négocié ainsi que la paire de devises formée par la devise du compte et celle de la contre-paire de devises du symbole négocié.

Un exemple. Disons que la dénomination de votre compte est USD et que vous voulez trader l'EURGBP. La valeur de la position EURGBP une fois que vous l'aurez ouverte dépendra du prix du marché de l'EURGBP ainsi que du prix du marché de la GBPUSD.

Vous pouvez ouvrir une position longue sur l'EURGBP à 0,8500 et elle peut rester à ce même prix toute la journée, mais votre transaction sera sous-évaluée si la GBPUSD a suivi une tendance à la baisse pendant ce temps. (c'est aussi la raison pour laquelle vous avez peut-être lu un ou deux articles de moi auparavant dans lesquels j'ai déclaré que la couverture est nécessaire, mais peu pratique, lorsque vous négociez des paires de devises si vous cherchez à gérer votre risque).

Dans mon cas, j'aime déterminer par programme les paires de devises qui font le pont entre la devise du compte et la paire de devises croisées, d'où l'utilisation de la formation de paires "synthétiques".

 
1005phillip:

Je serais heureux de partager une partie du code que j'ai ici si vous y trouvez de l'intérêt.

Oui. Ce serait génial... ! S'il vous plaît, joignez-le ou envoyez-moi un message si vous le souhaitez. Merci Phillip...

L'avantage (je le vois plutôt comme "la nécessité") d'être capable de calculer le tickvalue à partir des fondamentaux n'est pas tant pour le hedging/arbitrage (bien qu'il pourrait certainement être exploité là aussi) mais plutôt pour quelque chose de beaucoup plus simpliste. Dans mon cas, je trouve cela nécessaire pour calculer l'equity at risk, le placement des stoploss, etc.

(également, notez : la valeur marketinfo pour MODE_TICKVALUE est strictement basée sur le prix d'offre de la paire de devises, et non sur le prix de demande, en tant que telle, la valeur tickinfo du marché n'est en fait techniquement correcte que pour une utilisation avec des calculs qui dépendent du prix d'offre, tels que la valeur takeprofit d'une position longue ou le stoploss d'une position courte... encore une fois, la divergence est mineure, et naturellement cela ne fait aucune différence pour les paires de devises dans lesquelles la devise du compte est la contre-devise, comme EURUSD et ainsi de suite).

Est-ce que cela implique que l'autre côté de la transaction, c'est-à-dire l'information de marché de la position courte (prix de la demande), aura des divergences si elle est calculée indépendamment ?

Le problème de l'utilisation de l'info-marché Tickvalue est qu'elle n'est valable que pour les prix actuels du marché. La valeur du tick dépend du prix du marché pour toutes les paires de devises sauf celles dont la devise du compte est la contre devise. (La tickvalue de l'USDJPY est différente si l'USDJPY = 99,00 ou 98,00, etc.)

La raison de la création de paires "synthétiques" comme vous les appelez est que pour les paires de devises croisées, la valeur du tick dépend du prix de deux paires de devises. Il s'agit à la fois du symbole négocié et de la paire de devises formée par la devise du compte et celle de la contre-paire de devises du symbole négocié.

Oui, cela est clairement décrit dans le Livre mql4. Depuis, j'ai toujours considéré les TickValuesdes paires de devises croisées comme "flottantes".

Un exemple. Disons que la dénomination de votre compte est USD et que vous voulez négocier l'EURGBP. La valeur de la position EURGBP une fois que vous l'aurez ouverte dépendra du prix du marché de l'EURGBP ainsi que du prix du marché du GBPUSD.

Vous pourriez ouvrir une position longue sur l'EURGP à 0,8500 et elle pourrait rester à ce même prix toute la journée, mais votre transaction sera sous-évaluée si le GBPUSD a suivi une tendance à la baisse pendant ce temps. (c'est aussi la raison pour laquelle vous avez peut-être lu un ou deux articles de moi auparavant dans lesquels j'ai déclaré que la couverture est nécessaire, mais peu pratique, lorsque vous négociez des paires de devises si vous cherchez à gérer votre risque).

Je n'ai jamais vu les choses sous cet angle ! Je dois réfléchir à ce s'more..... :)

Dans mon cas, j'aime déterminer par programme les paires de devises qui font le pont entre la devise du compte et la paire de devises croisées, d'où l'utilisation de la formation de paires "synthétiques".

Une question (stupide peut-être) : Avez-vous déjà rencontré une paire qui n'a pas d'USD comme base/contre-pied mais qui existe sous forme de croisement ?


 
gordon:

Malheureusement, la dénomination de MODE_TICKSIZE et MODE_TICKVALUE ajoute une deuxième définition à Tick (ce qui, je suppose, est la source de la confusion...). La définition du Tick dans ce contexte est la suivante : un Tick est la plus petite variation de prix possible pour le symbole en question:

  • MODE_TICKSIZE - la taille de ce changement en termes de prix (la documentation indique "Tick size in points", mais c'est évidemment inexact).
  • MODE_TICKVALUE - la valeur de cette variation dans la devise de dépôt du compte (calculée par le courtier sur le serveur).
Commentaires :
  1. Un 'Point' (MODE_POINT) est la plus petite variation de prix possible sur la taille gauche du point décimal pour le symbole en question. Ce n'est PAS la même chose que MODE_TICKSIZE. Techniquement : MODE_TICKSIZE>=MODE_POINT, bien qu'ils soient presque toujours égaux.
  2. Un "Pip" est une convention, quelque chose sur lequel nous sommes tous d'accord. Il ne s'agit pas d'une propriété mathématique du symbole ou d'une propriété du serveur MT4. Ainsi, par exemple, avec un courtier à 4 chiffres pour EURUSD, un Pip est de 1 point, mais pour un courtier à 5 chiffres, un Pip est de 10 points...
  3. Il y a une bonne discussion sur la façon de déterminer automatiquement la taille d'un Pip en points ici -> https://www.mql5.com/en/forum/124692.
  4. MODE_TICKSIZE peut varier, bien que cela soit extrêmement rare (Point est fixe par contre). CB a une méthode pour gérer ces changements ici -> https://www.mql5.com/en/forum/109552/page3#195878.

Si je peux offrir ce qui a été mon interprétation jusqu'à présent - en ajoutant à ce que Gordon a très bien exposé ci-dessus.

  • Point : se termine toujours par 1. C'est un facteur de conversion du rapport que nous appelons 'prix'.
  • MODE_TICKSIZE : La plus petite unité de mouvement de prix en points.
  • MODE_TICKVALUE : Valeur actuelle de la devise de la contrepartie en conversion vers son ratio de base.
 

cameofx:

Point : se termine toujours par 1. C'est un facteur de conversion du ratio que nous appelons 'prix'.
Pour ajouter une précision au "presque toujours" de Gordon, je ne peux pas penser immédiatement à un instrument forex où ce n'est pas vrai, mais c'est rarement vrai lorsque les courtiers offrent des métaux, des indices, etc. Par exemple, sur le contrat d'or d'Alpari, la TICKSIZE est de 0,05 (et le Point est de 0,01). Pour autant que je sache, MarketInfo(Symbol(),MODE_POINT) = MathPow(10, -MarketInfo(Symbol(), MODE_DIGITS))
 
cameofx:

Oui. Ce serait génial... ! S'il vous plaît, joignez-le ou envoyez-moi un message si vous le souhaitez. Merci Phillip...


Inclus dans le fichier rar ci-joint. Je suis sûr que vous aurez des questions sur l'utilisation, n'hésitez pas.


cameofx:

Est-ce que cela implique que l'autre côté de la transaction, c'est-à-dire l'information de marché du vendeur (prix de l'offre), aura des divergences si elle est calculée indépendamment ?



C'est exact. Mais le pourcentage d'erreur est simplement l'écart en points divisé par le prix demandé (~0,02%-0,05% selon la paire de devises)... cela n'a d'importance que si vous voulez tenir compte du moindre centime.


cameofx:

Je ne l'ai jamais vu de cette façon ! Je dois réfléchir à ce s'more.... :)


J'ai inclus un fichier excel dans le fichier rar ci-joint dans l'espoir de vous aider dans votre réflexion.

cameofx:

Une question (stupide peut-être) : avez-vous déjà rencontré une paire qui n'a pas l'USD comme base/contrepartie mais qui existe en tant que croisement ?



Dans l'état actuel de votre question, la réponse facile est oui - chaque croisement sans USD répond à votre critère. Mais je pense que vous vouliez poser une question différente - à savoir, ai-je rencontré un courtier qui propose une paire de devises croisées et qui, en même temps, ne propose pas la paire de devises requise qui contient la contre devise de la paire croisée et la devise de la dénomination du compte ?

La réponse à cette question est non, et pour une bonne raison, car un courtier ne peut tout simplement pas le faire. La raison pour laquelle un courtier ne peut pas le faire est qu'il est lié par les mêmes connexions de prix fondamentales des équations détaillées ici... en d'autres termes, il doit avoir accès aux mêmes informations de prix afin de calculer et de rapporter les évaluations de vos positions en devises croisées.

Par exemple, disons que vous avez un compte libellé en euros et que vous achetez un lot de GBPUSD. La devise de contrepartie du GBPUSD est l'USD. Ainsi, pour calculer votre profit/perte sur votre position GBPUSD, votre courtier (et vous) devez également connaître le prix de l'EURUSD. (l'EUR est la devise de votre compte, l'USD est la devise de contrepartie de la paire croisée sur laquelle vous avez ouvert une position).

Si le courtier ne propose pas l'EURUSD comme paire, le terminal MT4 ne pourra pas calculer les pertes et profits flottants de votre position sur une base tick-by-tick. Par conséquent, vous ne trouverez jamais un courtier vous offrant la possibilité de négocier une paire croisée (par rapport à la dénomination de votre compte) sans offrir également la paire de devises primaire qui contient la devise de votre compte.
 
jjc:
Pour ajouter une précision au "presque toujours" de Gordon, je ne peux pas penser immédiatement à un instrument de change où ce n'est pas vrai, mais c'est rarement vrai lorsque les courtiers proposent des métaux, des indices, etc. Par exemple, sur le contrat d'or d'Alpari, la TICKSIZE est de 0,05 (et le Point est de 0,01). Pour autant que je sache, MarketInfo(Symbol(),MODE_POINT) = MathPow(10, -MarketInfo(Symbol(), MODE_DIGITS))
D'accord sur les deux points. Je n'ai jamais vu un cas où MODE_POINT et MODE_DIGITS ne correspondaient pas à cette formule.
 
cameofx:
Point : Se termine toujours par 1.
"Un 'Point' (MODE_POINT) est le plus petit changement de prix possible", il est donc évident qu'il doit se terminer par un 1.
MODE_TICKSIZE : La plus petite unité de mouvement de prix en points.

Comme je l'ai déjà dit, bien que la documentation indique "Tick size in points", cela est évidemment inexact. C'est aussi en termes de prix.

MODE_TICKVALUE : Valeur actuelle de la devise de la contrepartie en conversion vers son ratio de base.

Cette définition n'est pas claire... (peut-être que l'anglais n'est pas votre langue maternelle ?).
Raison: