English Русский 中文 Español Deutsch 日本語 Português 한국어 Italiano Türkçe
preview
Création d'un algorithme de market making en MQL5

Création d'un algorithme de market making en MQL5

MetaTrader 5Trading |
63 31
Yevgeniy Koshtenko
Yevgeniy Koshtenko

Qu'est-ce que la liquidité ?

La liquidité des marchés financiers correspond à la « saturation » du marché en argent sous forme d'ordres et de positions. Cela permet aux traders de vendre rapidement des actions (ou des devises) pour des montants importants. Plus la liquidité du marché est élevée, plus il est facile de vendre ou d'acheter un actif pour des montants importants sans pertes significatives dues au slippage. 

Le slippage est le principal fléau des gros acteurs : les plus grands fonds constatent qu’il n’est pas si facile de gérer une position importante, et souvent la transaction se clôture à perte uniquement à cause du « slippage » des ordres. Le glissement d'ordre (le slippage) se produit lorsqu'une transaction est ouverte à un prix et exécutée à un prix différent de celui prévu. Lorsqu'un trader ne dispose que de quelques centaines de dollars, il n'y a généralement pas de problèmes de liquidité (sauf pour les marchés totalement illiquides des cryptomonnaies de troisième ordre). Mais lorsqu'il s'agit de centaines de millions de dollars, il devient difficile d'ouvrir et de fermer une position simultanément. Cela est directement lié à la liquidité du marché.

La liquidité du marché est assurée grâce aux teneurs de marché, ou market makers. Leur principale mission est de maintenir la liquidité. Ces acteurs du marché mettent tout en œuvre pour faciliter au maximum vos transactions, afin qu'il n'y ait pas d'écarts importants dans les cotations et que l'acheteur comme le vendeur reçoivent toujours des prix qui leur conviennent.

Sur un marché sans market maker, on observe très souvent de fortes variations de prix dans une direction, d'énormes fluctuations d'actifs et des écarts de cotation.


Comment fonctionne un market maker, et pourquoi n'est-il pas un « marionnettiste » ?

De nombreux traders sont convaincus que le market maker est une sorte de marionnettiste, un manipulateur qui fait bouger les prix à sa guise, franchit les seuils de déclenchement des ordres stop, trompe la foule avec des ordres stop, etc.

En réalité, le market maker n'a pas besoin de faire perdre la « foule » du tout. Le marché, tel un « groupe », perd de lui-même à cause des spreads, des commissions et des swaps. 

Quant aux évolutions du marché dans la bonne direction, ce n'est pas non plus le rôle d'un market maker. Tout ce qu'un market maker est tenu de faire en vertu de son accord avec la bourse, c'est de fournir un prix d'achat à un acheteur et un prix de vente à un vendeur, ainsi que de compléter la « profondeur du marché » si nécessaire.

Sans market maker, le marché serait complètement différent : nous verrions constamment des écarts de prix, des écarts de cotation, des compressions constantes dans les deux sens, ainsi que d'énormes sauts de prix dans les deux sens. On retrouve encore aujourd'hui tout cela sur les marchés où la présence d'un market maker n'est pas rentable, par exemple sur de nombreux marchés américains à faible capitalisation.


Nouvelles technologies AMM sur le marché des cryptomonnaies

Mais que se passerait-il si nous remplacions un participant par un contrat intelligent ? Autrement dit, que se passerait-il si, au lieu de faire appel à des market makers, nous mettions en place un système automatique pour ajuster l'offre et la demande, ainsi que la cotation générale ?

Voici en gros comment sont apparus les échanges décentralisés (DEX). Ils ont été les premiers à utiliser le mécanisme AMM (organisation automatisée de marché). L'algorithme AMM fonctionne via un pool de liquidités spécial utilisant les ressources des participants pour les transactions entre eux. Le prix et le volume des échanges sont toujours contrôlés par l'algorithme. Cela permet de réunir tous les vendeurs et tous les acheteurs, en principe sans perte pour les participants. Mais en réalité, tous les DEX connaissent d'importantes fluctuations de prix. Vous êtes assuré de perdre un pourcentage important sur l'échange de jetons en cas de volume de transactions élevé.

De plus, cette innovation n'a pas éliminé les manipulations de marché. Il y en a plein sur un DEX. Même les créateurs de tokens sur une plateforme d'échange décentralisée (DEX) peuvent facilement faire monter en flèche la valeur de leurs tokens et encaisser la totalité de la liquidité disponible.

Comment les market makers luttent-ils contre la manipulation des prix ?

Bien que cela ne soit pas de la responsabilité des market makers, ils étouffent souvent dans l'œuf les tentatives de manipulation de cours, lorsque les prix commencent tout juste à être artificiellement gonflés par des participants frauduleux. Dans ces phases initiales, le market maker inonde le joueur d'ordres à cours limité qui tente de faire monter les prix du « marché ». Cela étouffe la demande, si bien que les nouveaux venus dans le secteur des systèmes de pompage se heurtent très souvent au market maker. Mais si la manœuvre est bien planifiée, l'afflux de nombreux ordres de marché, qui font fortement fluctuer le prix, oblige le market maker à quitter temporairement le marché.


Quand les market makers quittent-ils le marché ?

La plupart des teneurs de marché stipulent dans leurs accords avec les bourses qu'ils désactivent leurs algorithmes et quittent le marché pendant les jours fériés, les périodes d'activité anormale et les périodes de publication d'informations importantes. Cela s'explique par la volonté du MM (market maker) de préserver son capital. 

On peut constater que lorsque le market maker quitte le marché, un spread important se crée. Avez-vous constaté comment l'écart se creuse même sur le réseau ECN lors de la publication d'informations mondiales importantes ? Le faible écart habituel entre les cours est obtenu grâce aux efforts des market makers. Par conséquent, sans eux, nous serions confrontés à des conditions de marché très défavorables, notamment à des spreads importants, à des glissements de prix considérables, à des baisses et des pics de prix soudains – autant de joies typiques des marchés les plus sauvages.


Quel est le risque lié aux stocks d'un market maker ?

Beaucoup de gens pensent qu'un market maker ne court aucun risque. Mais ce n'est pas le cas. Le principal risque pour un market maker est le risque lié aux stocks, son inventaire. Ce risque réside dans le fait qu'une position peut évoluer brusquement dans une direction sans qu'il soit possible de s'en défaire et de réaliser un profit sur le spread. Par exemple, lorsqu'une foule paniquée vend un actif, le market maker est contraint de racheter la totalité de l'offre. En conséquence, le prix devient négatif, entraînant des pertes pour le MM. 

Les entreprises tentent d'éviter ce risque en utilisant des équations de centrage de spread spécifiques et en déterminant le prix optimal d'achat et de vente. Mais cela n'est pas toujours réalisable. Même si le prix n'est pas optimal, le rôle du MM est d'assurer la liquidité du marché, et ils doivent accomplir cette mission, même s'ils opèrent temporairement à perte. 

Analyse des données du plus grand market maker au monde : la société de Kenneth Griffin

L’analyse de l’activité du plus grand teneur de marché au monde – Citadel Securities, fondé par Kenneth Griffin – révèle l’importance de son rôle sur les marchés financiers.

Les rapports de l'entreprise font état d'un impact impressionnant : 7 transactions sur 10 sur le marché boursier américain dépendent de la liquidité fournie par ce market maker. Cette activité démontre le rôle important de Citadel Securities dans le maintien de la stabilité et de la disponibilité des liquidités sur ce marché.

Pour évaluer l'ampleur de l'influence de la société de Griffin, on peut mentionner qu'environ 900 millions de lots d'actions américaines transitent chaque jour par ses algorithmes. Ce volume d'échanges important témoigne de la forte activité et de l'influence de l'entreprise sur la bourse américaine.

D'ailleurs, l'évolution de Kenneth Griffin, passant du trading dirigé à la tenue de marché, est très intéressante. La société de Griffin se développe très activement sur les marchés mondiaux, explorant notamment les bourses asiatiques et y fournissant des liquidités.

 

Préparation d'un EA de market maker

Nous avons donc trouvé la théorie. Il est temps de commencer à créer un EA de teneur de marché ! Bien sûr, notre algorithme sera très simple. Nous ne mettrons pas en place de système de trading à spread selon des équations spécifiques. 

Nous allons plutôt implémenter l'algorithme le plus simple qui maintiendra constamment deux ordres à cours limité ouverts : un ordre de vente à cours limité et un ordre d'achat à cours limité.

L'implémentation la plus simple de la tenue de marché en MQL5

Analysons le code de notre algorithme. En-tête du code. Cette section définit les paramètres de base de la stratégie, tels que la taille du lot, les niveaux de profit, le numéro magique de l'EA, les paires de devises sélectionnées pour le trading, etc. :

//+------------------------------------------------------------------+
//|                                                  MarketMaker.mq5 |
//|                                Copyright 2023, Evgeniy Koshtenko |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, Evgeniy Koshtenko"
#property link      "https://www.mql5.com/fr/users/koshtenko"
#property version   "1.00"

#include <Trade\Trade.mqh>        // Include the CTrade trading class

//--- input parameters
input double Lots       = 0.1;    // lot
input double Profit     = 0.1;    // profit
input double BProfit    = 11;     // buy profit
input double SProfit    = 11;     // sell profit
input int StopLoss      = 0;      // stop loss
input int TakeProfit    = 0;      // take profit
input int    Count      = 5;      // number of orders
input int    Delta      = 55;     // delta
input int    Magic      = 123;    // magic number

input bool   BuyLimit   = 1;      // Buy Limit
input bool   SellLimit  = 1;      // Sell Limit

input string Symbol1    = "EURUSD";
input string Symbol2    = "GBPUSD";
input string Symbol3    = "USDCHF";
input string Symbol4    = "USDJPY";
input string Symbol5    = "USDCAD";
input string Symbol6    = "AUDUSD";
input string Symbol7    = "NZDUSD";
input string Symbol8    = "EURGBP";
input string Symbol9    = "CADCHF";
input int MaxOrders = 20; // Max number of orders
CTrade trade;

datetime t=0;
int delta=0;

Elle comprend des paramètres de base tels que le delta entre les ordres, le profit de clôture (total, profit d'achat et profit de vente), le numéro magique de l'EA, l'import de la bibliothèque de trading, ainsi que la sélection des paires de devises pour le trading et la limitation du nombre d'ordres.

Les fonctions d'initialisation et de dé-initialisation sont généralement standard. La fonction OnInit() est appelée au démarrage de l'EA, et OnDeinit() est appelée à sa fin. La fonction OnInit() définit le numéro magique de l'EA et le minuteur de la fonction de trading :

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   // Set a timer with a resolution of 10000 milliseconds (10 seconds) 
   EventSetMillisecondTimer(100000);
   trade.SetExpertMagicNumber(Magic);
//---
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {// Disable timer
   EventKillTimer();
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

Voici les fonctions permettant de compter les ordres ouverts et les positions ouvertes. CountOrders et CountTrades comptent les ordres ouverts et les positions pour un symbole spécifique en tenant compte du numéro magique de l'EA.

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountOrders(string symbol, ENUM_ORDER_TYPE orderType) {
  int count = 0;
  
  for(int i = OrdersTotal()-1; i >= 0; i--) {
      
    ulong ticket = OrderGetTicket(i);
      
    if(!OrderSelect(ticket)) {
      continue;
    }
      
    if(OrderGetInteger(ORDER_TYPE) != orderType) {
      continue;
    }
    
    if(PositionGetString(POSITION_SYMBOL) != symbol ||
       PositionGetInteger(POSITION_MAGIC) != Magic) {
      continue; 
    }
      
    count++;
  }
  
  return count;
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades(string symbol, ENUM_POSITION_TYPE type) {
  int count = 0;
  
  for(int i=PositionsTotal()-1; i>=0; i--) {
    
    ulong ticket=PositionGetTicket(i);
      
    if(!PositionSelectByTicket(ticket)) {
      continue;
    }
    
    if(PositionGetString(POSITION_SYMBOL)==symbol && 
       PositionGetInteger(POSITION_TYPE)==type) {
        
      count++;
    }
  }
  
  return count;
}

Voici les fonctions permettant de supprimer des ordres, de calculer les profits et de clôturer des ordres. DelOrder supprime tous les ordres pour un symbole spécifique à l'aide d'un nombre magique. AllProfit calcule le profit total ou le profit des opérations d'achat/vente pour un symbole spécifique en tenant compte du nombre magique.

//+------------------------------------------------------------------+
//|  Position Profit                                                 |
//+------------------------------------------------------------------+
double AllProfit(string symbol, int positionType = -1) {

  double profit = 0;

  for(int i = PositionsTotal()-1; i >= 0; i--) {

    ulong ticket = PositionGetTicket(i);

    if(!PositionSelectByTicket(ticket)) {
      continue;
    }

    if(PositionGetString(POSITION_SYMBOL) != symbol ||
       PositionGetInteger(POSITION_MAGIC) != Magic) {
      continue;
    }

    if(positionType != -1 && 
       PositionGetInteger(POSITION_TYPE) != positionType) {
      continue;
    }

    profit += PositionGetDouble(POSITION_PROFIT);

  }

  return profit;

}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(string symbol, int positionType = -1) {

  for(int i = PositionsTotal()-1; i >= 0; i--) {

    ulong ticket = PositionGetTicket(i);

    if(!PositionSelectByTicket(ticket)) {
      continue;
    }

    if(PositionGetString(POSITION_SYMBOL) != symbol ||
       PositionGetInteger(POSITION_MAGIC) != Magic) {
      continue;
    }

    if(positionType != -1 && 
       PositionGetInteger(POSITION_TYPE) != positionType) {
      continue;  
    }

    trade.PositionClose(ticket);

  }

}

Enfin, les deux fonctions principales sont la fonction de trading et la fonction de tick. Le module Trade est chargé de placer les ordres d'achat et de vente à cours limité en tenant compte des paramètres spécifiés. OnTimer appelle la fonction Trade pour négocier le symbole sélectionné et affiche les informations de profit pour ce symbole.

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trade(string symb)
  {
   double sl = 0, tp = 0;
   double pr=0;
   double Bid=SymbolInfoDouble(symb,SYMBOL_BID);
  
   if(AllProfit(symb)>Profit && Profit>0)
      CloseAll(symb);
   
   if(AllProfit(symb)>Profit && Profit>0)
      CloseAll(symb);
      
   if(AllProfit(symb,0)>BProfit && BProfit>0)
      CloseAll(symb,0);
  
      for(int i=1; i<=Count; i++)
        {
         if(BuyLimit)
           {
           
            if (StopLoss > 0)
                sl = NormalizeDouble(Bid - (StopLoss) * Point(), _Digits);
            if (TakeProfit > 0)
                tp = NormalizeDouble(Bid + (TakeProfit) * Point(), _Digits);
                
            pr=NormalizeDouble(Bid-(Delta+Step)*_Point*i,_Digits);
            trade.BuyLimit(Lots,pr,symb,sl, tp,0,0,"");
           }
         if(SellLimit)
           {
            
            if (StopLoss > 0)
                sl = NormalizeDouble(Bid + (_Point * StopLoss) * Point(), _Digits);
            if (TakeProfit > 0)
                tp = NormalizeDouble(Bid - (_Point * TakeProfit) * Point(), _Digits);
                
            pr=NormalizeDouble(Bid+(Delta+Step)*_Point*i,_Digits);
            trade.SellLimit(Lots,pr,symb,sl, tp,0,0,"");
           }
         
        }
     
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTimer()
  {
   DelOrder();
   Trade(Symbol1);
   Trade(Symbol2);
   Trade(Symbol3);
   Comment("\n All Profit: ",AllProfit(Symbol1),
           "\n Buy Profit: ",AllProfit(Symbol1,0),
           "\n Sell Profit: ",AllProfit(Symbol1,1));
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+--------+

Voici le code complet de cet EA simple.

Résultats des tests

Lançons donc l'EA avec les paramètres par défaut dans l'environnement de test. Voici les résultats de l'EA pour EURUSD, GBPUSD, EURGBP, USDJPY et EURJPY du 1er février 2023 au 18 février 2024 :

Test EA

Les pertes par rapport aux bénéfices sont très importantes. La perte sur capitaux propres est généralement supérieure au bénéfice annuel. L'EA se comporte de manière assez similaire aux EA de grille classiques. Voici les statistiques des tests :

Statistiques de test

Apparemment, ce robot de trading ne compense en rien les risques encourus. Comme tout algorithme sans niveau de stop, c'est une bombe à retardement. Même si le marché ne présente aucune perte apparente, personne ne peut garantir qu'il ne subira pas un effondrement des devises de 10 à 15% par jour. Personnellement, ces quatre dernières années m'ont appris que tout est absolument possible sur le marché, et que même les scénarios les plus incroyables peuvent se réaliser ; un EA polyvalent doit donc être prêt à toute éventualité. Cet EA ne répond pas à mes critères d'évaluation, j'ai donc décidé de le publier.

Conclusion

Nous avons donc créé un exemple d'algorithme de market maker des plus simples. Bien sûr, cet exemple est illustratif et très simple. De toute évidence, aucun market maker n'a fonctionné de cette manière sur le marché depuis longtemps. Aujourd'hui, leurs algorithmes restent à la pointe de la technologie, utilisent l'apprentissage automatique et les réseaux neuronaux, appliquent l'apprentissage profond basé sur les données en flux continu du carnet d'ordres et prennent en compte de nombreuses variables et caractéristiques de prix. Plus personne ne passe d'ordres au-dessus ou en dessous du prix – cela comporte de sérieux risques liés aux stocks. À l'avenir, il pourrait être judicieux d'expérimenter la création d'un market maker utilisant l'apprentissage automatique, qui déterminera automatiquement le delta optimal entre les ordres.


Traduit du russe par MetaQuotes Ltd.
Article original : https://www.mql5.com/ru/articles/13897

Fichiers joints |
Experts.zip (33.42 KB)
Derniers commentaires | Aller à la discussion (31)
Stanislav Korotky
Stanislav Korotky | 26 janv. 2024 à 16:46
L'algorithme décrit s'applique-t-il uniquement aux comptes de couverture ou existe-t-il une option de compensation ?
qqq
qqq | 5 août 2024 à 10:10
Je suppose qu'il ne s'agit pas d'un simulateur de MM.
Où des ordres de marché et des ordres limités viraux de la foule devraient être générés avec différentes probabilités, et vous tous, tels que les MM, confirmez ou réfutez les mythes sur les teneurs de marché par votre interaction avec cette virtualité.

Vous découvrirez ainsi si vous êtes un "marionnettiste" ou non. Pour ainsi dire - par votre propre expérience, bien que virtuelle.
qqq
qqq | 5 août 2024 à 10:15
JRandomTrader #:

Il y a longtemps, j'étais "teneur de marché" sur l'un des contrats à terme illiquides - jusqu'à un quart de toutes les transactions étaient les miennes. Bien qu'il y ait eu quelques offres puissantes de la part d'un véritable teneur de marché, elles étaient très éloignées des prix réels.

Combien avez-vous mis en banque ?
qqq
qqq | 5 août 2024 à 11:54
"Bien que ce ne soit pas le travail du teneur de marché, il étouffe souvent dans l'œuf les tentatives de Pump&Dump lorsque les prix commencent tout juste à être poussés à la hausse par des participants frauduleux. Dans ces phases initiales, le teneur de marché lance d'énormes quantités d'ordres à cours limité sur l'acteur qui tente de "commercialiser" les prix à la hausse. Cela a pour effet d'éteindre la demande et les débutants dans le domaine de la pampa se cassent souvent les dents sur le teneur de marché. Mais si la pompe est bien planifiée et exécutée conformément au plan, l'afflux de nombreux ordres de marché, qui font fortement bouger les prix, oblige le teneur de marché à quitter le marché pendant un certain temps".

Et, ici, qu'est-ce qui empêchera MM lui-même d'organiser Pump&Dump, ainsi que n'importe quoi d'autre, afin de ne pas être, au moins - en pertes, et au plus - à zéro ! Dans les cas où il a besoin d'apporter la liquidité qu'ils ont déversée sur le marché à +.
Après tout, si votre contrepartie est MM, cela signifie qu'elle est entrée sur le marché.
Et s'il y a un déséquilibre entre l'offre et la demande dans l'appartement, il le compense avec ses liquidités pour la taille du déséquilibre - il entre sur le marché .
Et devinez où ira le prix - contre MM, ou dans la direction de ses ordres ?

Et en général, si une entreprise, une banque ou une personne privée est un MM, alors de quelle motivation de charité s'agit-il ?
Ne riez pas des pantoufles de MM.

La fonction du MM est de rendre le prix attractif pour un petit spéculateur en réduisant l'écart.
En outre - fournir de la liquidité (ce qui, à son tour, réduit la volatilité), y compris pour les petits spéculateurs.
En outre, la quantification des prix (stabilisation des prix) consiste à exclure les petits spéculateurs du marché.

Aussi étrange que cela puisse paraître, "l'éjection des petits spéculateurs" est une "stabilisation des prix". Tout comme dans l'exemple de l'aplatissement et du déséquilibre.
MM a utilisé, sur la base du "rétrécissement de l'écart" - "attractivité du prix", sa liquidité dans l'appartement afin de compenser le déséquilibre. S'il ne l'avait pas utilisée, le prix serait sorti de l'appartement et aurait été plus volatil. En d'autres termes, il a limité la volatilité grâce à ses liquidités. Ensuite, il fait sortir le cours du flat, soit avec un faux mouvement et un retour au flat, soit avec une continuation - sans retour. Cela démolit les stops de ceux dont il était le contre-agent et de ceux qui s'opposaient à ses ordres. Il quitte le marché - avec un bénéfice, eux - avec une perte. Lui, à ce stade, ne sort pas avec un gros bénéfice, c'est un scalpeur, pour ainsi dire (à ce stade). Et ses prises sont les stops de ses contreparties.
Mais il fait sortir le prix des bornes plates pas aussi brutalement qu'il le ferait sans lui, mais avec un retour aux bornes plates et des rebonds, ou avec un retour aux bornes plates.....
En fait... MM organise le flat en injectant ses liquidités et en freinant le mouvement des prix))))))

Mais le fait est qu'il échange sa liquidité avec tous les types d'acteurs.

Donc, si les spreads étroits et la liquidité attirent un petit spéculateur, celui-ci est alors éjecté du marché. Pourquoi avez-vous besoin de MM ?
Quel est, selon vous, son objectif ?
Yevgeniy Koshtenko
Yevgeniy Koshtenko | 7 août 2024 à 12:09
Уроборос entre sur le marché .
Et devinez où le prix ira - contre MM, ou dans la direction de ses ordres ?

Et en général, si une entreprise, une banque ou une personne privée est un MM, alors de quelle motivation de charité s'agit-il ?
Ne riez pas des pantoufles de MM.

La fonction du MM est de rendre le prix attractif pour un petit spéculateur en réduisant l'écart.
En outre - fournir de la liquidité (ce qui, à son tour, réduit la volatilité), y compris pour les petits spéculateurs.
En outre, la quantification des prix (stabilisation des prix) consiste à exclure les petits spéculateurs du marché.

Aussi étrange que cela puisse paraître, "l'éjection des petits spéculateurs" est une "stabilisation des prix". Tout comme dans l'exemple de l'aplatissement et du déséquilibre.
MM a utilisé, sur la base du "rétrécissement de l'écart" - "attractivité du prix", sa liquidité dans l'appartement afin de compenser le déséquilibre. S'il ne l'avait pas utilisée, le prix serait sorti de l'appartement et aurait été plus volatil. En d'autres termes, il a limité la volatilité grâce à ses liquidités. Ensuite, il fait sortir le cours du flat, soit avec un faux mouvement et un retour au flat, soit avec une continuation - sans retour. Cela démolit les stops de ceux dont il était le contre-agent et de ceux qui s'opposaient à ses ordres. Il quitte le marché - avec un bénéfice, eux - avec une perte. Lui, à ce stade, ne sort pas avec un gros bénéfice, c'est un scalpeur, pour ainsi dire (à ce stade). Et ses prises sont les stops de ses contreparties.
Mais il fait sortir le prix des bornes plates pas aussi brutalement qu'il le ferait sans lui, mais avec un retour aux bornes plates et des rebonds, ou avec un retour aux bornes plates.....
En fait... MM organise le flat en injectant ses liquidités et en freinant le mouvement des prix))))))

Mais le fait est qu'il échange sa liquidité avec tous les types d'acteurs.

Donc, si les spreads étroits et la liquidité attirent un petit spéculateur, celui-ci est alors éjecté du marché. Pourquoi avez-vous besoin de MM ?
Quel est, selon vous, son objectif ?


Oui, le prix va aller dans sa direction. Mais il n'a pas non plus besoin de pompes et de décharges brutales. Essayez d'être vous-même un MM sur DEX, et voyez comment le capital est fortement secoué par des pompes et des décharges brutales. Il est bien plus rentable d'avoir un flat stable et de réduire le spread, n'est-ce pas ?

Analyse de l'impact des conditions météorologiques sur les devises des pays agricoles à l'aide de Python Analyse de l'impact des conditions météorologiques sur les devises des pays agricoles à l'aide de Python
Quel est le lien entre la météo et le Forex ? La théorie économique classique a longtemps ignoré l'influence de facteurs tels que les conditions météorologiques sur le comportement du marché. Mais tout a changé. Essayons de trouver des liens entre les conditions météorologiques et la position des devises agricoles sur le marché.
Trouver des modèles de paires de devises personnalisés en Python avec MetaTrader 5 Trouver des modèles de paires de devises personnalisés en Python avec MetaTrader 5
Existe-t-il des schémas répétitifs et des régularités sur le marché du Forex ? J'ai décidé de créer mon propre système d'analyse de modèles en utilisant Python et MetaTrader 5. Une sorte de symbiose entre les mathématiques et la programmation pour conquérir le Forex.
L'Histogramme des prix (Profile du Marché) et son implémentation  en MQL5 L'Histogramme des prix (Profile du Marché) et son implémentation en MQL5
Le Profile du Marché a été élaboré par le brillant penseur Peter Steidlmayer. Il a suggéré l’utilisation de la représentation alternative de l'information sur les mouvements de marché « horizontaux » et « verticaux » qui conduit à un ensemble de modèles complètement différent. Il a assumé qu'il existe une impulsion sous-jacente du marché ou un modèle fondamental appelé cycle d'équilibre et de déséquilibre. Dans cet article, j’examinerai l'Histogramme des Prix - un modèle simplifié de profil de marché, et décrirai son implémentation dans MQL5.
Système d'arbitrage à haute fréquence en Python utilisant MetaTrader 5 Système d'arbitrage à haute fréquence en Python utilisant MetaTrader 5
Dans cet article, nous allons créer un système d'arbitrage qui reste légal aux yeux des courtiers, crée des milliers de prix synthétiques sur le marché du Forex, les analyse et effectue des transactions fructueuses.