Rejoindre la communauté
banner_forum
Devenez membre de la plus grande
communauté francophone sur le Forex
Partagez, échangez et apprenez en gagnant des crédits sur votre compte de trading

EA: Arbitrage entre 2 devises

  • Mikiburger

    Bonjour,

    J'ai programmé un EA pour MT4 basé sur le principe de l'arbitrage entre devises.
    Vous trouverez plus d'info en cherchant sur la toile avec les mots clés "pairs hedge" ou "circle hedging".

    En deux mots l'idée est de prendre position sur 3 paires de devises dans le but d'avoir une neutralité.
    Si on achète sur EURUSD, concrètement on achète de l'euro et on vend du Dollar.

    Par exemple, on réalise un cycle (lot équivalent) de telle manière:
    Achat : EURUSD
    vente : GBPUSD
    vente : EURGBP

    On achète et on vend en même temps la même quantité d'Euro, de Dollar et de Livre Sterling. (votre Broker va adorer)
    On réalise donc un "hedge" parfait ce qui ne donne évidement aucune rentabilité, on est d'accord.

    Mathématiquement:
    EURGBP = EURUSD / GBPUSD
    ou
    EURGBP * GBPUSD / EURUSD = 1

    Mais cette égalité n'est pas parfaite.
    L'indicateur FPI (Fractional Product Inefficiency) illustre cette inégalité (voir pièce jointe).

    La valeur oscille toujours autour de 1.
    Elle s'écarte de temps en temps mais revient immanquablement à 1.

    L'idée sous-jacente est donc d'acheter EURGBP lorsque EURGBP < EURUSD / GBPUSD
    et vendre EURGBP lorsque EURGBP > EURUSD / GBPUSD.

    Comme on a affaire à une oscillation, ce jeu est toujours gagnant, ce n'est qu'une question de temps.

    Malheureusement, comme c'est un jeu entre plusieurs devises, il n'est pas possible de backtester avec MT4.

    J'ai testé en démo pendant plusieurs semaines et ça fonctionne bien. :)

    J'ai ensuite testé en réel mais mon robot ne fonctionnait pas. :(
    Il n'entrait pas en trade. Je ne comprend pas trop pourquoi.

    Pensez-vous que mon Broker ne donne pas les même valeurs en démo qu'en réel ?
    Ou peut être que la fréquence d'actualisation des cours n'est pas la même en démo qu'en réel ?
    Mikiburger a joint une image
    arbitrage-11183
  • Mikiburger — en réponse à Mikiburger dans son message #113360

    Mikiburger, le 09/03/2019 dit :
    L'idée sous-jacente est donc d'acheter EURGBP lorsque EURGBP < EURUSD / GBPUSD et vendre EURGBP lorsque EURGBP > EURUSD / GBPUSD.


    Je m’aperçois que je n'ai pas été assez clair donc voici plus de détails:

    entrée en position:
    si EURGBP < EURUSD / GBPUSD : Acheter EURGBP, vendre EURUSD et acheter GBPUSD
    ou
    si EURGBP > EURUSD / GBPUSD : Vendre EURGBP, acheter EURUSD et vendre GBPUSD

    sortie sur gain (à définir en fonction de la taille des positions)
  • jbaptiste — en réponse à Mikiburger dans son message #113360

    Salut,

    Si ton EA échoue à la prise de position, il doit normalement envoyer un message d'erreur dans l'onglet "expert".
    Grace à ce message tu devrais réussir à savoir ce qu'il ne va pas.
  • riden

    Il est vrai que
    EURUSD / (GBPUSD * EURGBP ) ~~ 1
    de même:
    EURUSD * USDJPY / EURJPY ~~ 1
    GBPUSD * USDJPY / GBP JPY ~~ 1

    Mais lorsque tu entres en position d'achat en EURUSD et USDJPY et en ventre pour EURJPY il ne s'agit pas d'une opération de multiplication et de division c'est plutôt une addition et soustraction.
    soit l'instant t le moment de la prise des 3 positions:
    --> tu vas commencer avec 3 spread plus les slippages (supposont que c'est -6pips)
    --> X = ProfitFlottant(EURUSD_buy) + ProfitFlottant(USDJPY_buy) + ProfitFlottant(EURJPY_sell) ---> on parle des positions prise à l'instant t
    --> on va considérer notre repère j-30 et supposer que 3 positions on été prise à ce jour donc soit
    Y = ProfitFlottant(EURUSD_buy) + ProfitFlottant(USDJPY_buy) + ProfitFlottant(EURJPY_sell)
    "Y" va nous permettre de voir comment va osciller la somme

    --> "Y" ne va pas osciller autour de zéro forcément en plus cette oscillation n'a pas une période déterminée.
    Exemple: "Y" a oscillé autour de -30 avec un max 0 et un min -60. "Y" indique à rentrer en BUY-BUY-SELL lorsque c'est -60<Y<<-30 et en SELL-SELL-BUY lorsque c'est -30<<Y<0. Mais tu peux rester longtemps au-dessous de -30 ou au-dessus. Pendant le temps où les la moyenne de "Y" va varier et l’ampleur de l'oscillation aussi (le max et le min).
    Ce n'est pas aussi simple. Tu n'auras pas un grand DD c'est certain mais tu peux te trouver avec un X négatif pendant des semaines. Je trouve la stratégie intéressante mais il faut la raffiner et l'optimiser.

    Pour le backtest tu peux à travers un EA backtester directement à travers le graphique sans avoir recours à l'outil de backtest de la plateforme (il faut augmenter le nombre de bougies dans le graphique et l'historique de sorte qu'il soit supérieur ou égal au nombre de bougies qu'on va parcourir dans le backtest). De cette façon tu n'as plus l’inconvénient de ne pas pouvoir lancer un backtest sur plusieurs paires en simultané.

    Exemple: j'ai fait un test avec EURUSD + USDJPY - EURJPY ( à l'heure où j'écris ce message)
    repère : iOpen de la 21ème bougie --- H1 ---- avec les différentes valeurs de "Y" pour chaque iOpen (les 20 derniers)
    ---> si on commence avec -6 pips on ne peut rien encaisser pendant 20 heures (dans le cas de cet exemple)
    riden a joint une image
    ea-arbitrage-entre-2-devises-11189
  • riden

    Avec GBPUSD + USDJPY - GBPJPY ça oscille mieux et permet d'encaisser un petit profit de quelquse pips après quelques heures si on est dans le bon sens.
    riden a joint une image
    ea-arbitrage-entre-2-devises-11190
  • Mikiburger

    oui chez moi ça fonctionne bien en démo mais pas en réel.
    As tu essayé en réel ?