English Русский 中文 Español Deutsch 日本語 Português Italiano
preview
MQL5에서 마켓 메이킹 알고리즘 만들기

MQL5에서 마켓 메이킹 알고리즘 만들기

MetaTrader 5트레이딩 |
28 31
Yevgeniy Koshtenko
Yevgeniy Koshtenko

유동성이란 무엇일까요?

금융 시장의 유동성은 주문과 포지션의 형태로 시장에 자금이 "촘촘히 포화"된 상태를 의미합니다. 이를 통해 트레이더들은 주식(또는 통화)을 대량으로 빠르게 매도할 수 있습니다. 시장 유동성이 높을수록 슬리피지로 인한 손실 없이 자산을 대량으로 매매하기가 더 쉬워집니다. 

슬리피지는 대형 투자자들에게 가장 큰 골칫거리입니다: 대형 펀드들은 대규모 포지션을 관리하는 것이 쉽지 않으며 슬리피지 때문에 손실을 보고 거래를 청산하는 경우가 많습니다. 슬리피지는 거래가 특정 가격으로 시작되었지만 예상 가격과 다른 가격으로 체결될 때 발생합니다. 트레이더가 단 몇백 달러만 가지고 있을 때는 일반적으로 유동성 문제가 발생하지 않습니다(단, 유명하지 않은 암호화폐의 경우처럼 시장 유동성이 극도로 낮은 경우는 예외입니다). 하지만 수억 달러 규모의 거래를 다룰 때는 포지션을 동시에 개설하고 청산하는 것이 어렵습니다. 이는 시장 유동성과 직접적으로 관련됩니다.

시장 유동성은 마켓 메이커들 덕분에 채워집니다. 그들의 주요 임무는 유동성을 유지하는 것입니다. 이들은 여러분이 최대한 원활하게 거래할 수 있도록 모든 노력을 기울입니다. 호가 사이에 차이가 크게 발생하지 않고 매수자와 매도자 모두에게 항상 유리한 가격으로 거래할 수 있도록 해 줍니다.

마켓 메이커가 없는 시장에서는 가격이 한 방향으로 급격하게 흐르고 자산 가격의 변동폭이 크며 커다란 호가의 차이가 발생하는 경우가 매우 흔합니다.


마켓 메이커는 어떻게 작동하며 "꼭두각시 조종자"가 아닌 이유는 무엇인가요?

많은 트레이더들은 마켓 메이커가 마치 꼭두각시 조종자처럼 가격을 마음대로 움직이고 손절매 수준을 무너뜨리고 군중을 속여 손절매 주문을 유도하는 등의 행위를 한다고 확신합니다.

사실 마켓 메이커는 "군중"이 손해를 보게 할 필요가 전혀 없습니다. 시장의 "군중"은 스프레드, 수수료 및 스왑으로 인해 스스로 손실을 봅니다. 

시장이 바람직한 방향으로 움직이도록 하는 것 또한 마켓 메이커의 역할이 아닙니다. 마켓 메이커가 거래소와의 계약에 따라 해야 할 의무는 매수자에게 매수 호가를, 매도자에게 매도 호가를 제공하고 필요한 경우 비어 있는 "시장 심도"를 채우는 것뿐입니다.

마켓 메이커가 없다면 시장은 완전히 달라질 것입니다. 가격 격차, 호가 격차, 양방향으로의 지속적인 가격 급등락, 그리고 양방향으로의 엄청난 가격 변동이 끊임없이 발생할 것입니다. 이러한 현상은 마켓 메이커가 참여해 봤자 수익성이 없는 시장, 예를 들어 많은 미국 페니 주식 시장에서 여전히 찾아볼 수 있습니다.


암호화폐 시장의 새로운 AMM 기술

마켓 메이커를 스마트 계약으로 대체하면 어떻게 될까요? 다시 말해 마켓 메이커 대신 공급과 수요, 그리고 전반적인 가격을 자동으로 조절하는 시스템을 구축하면 어떨까요?

이것이 바로 탈중앙화 거래소(DEX)가 등장하게 된 대략적인 배경입니다. 그들은 AMM(자동 시장 조성) 메커니즘을 최초로 사용했습니다. AMM 알고리즘은 참가자들의 자원을 활용하여 참가자들 간의 거래를 위한 특별한 유동성 풀을 통해 작동합니다. 거래 가격과 볼륨량은 항상 알고리즘에 의해 제어됩니다. 이를 통해 모든 매도자와 모든 매수자를 연결할 수 있으며 참가자들에게 손실이 발생하지 않을 것으로 예상할 수 있습니다. 하지만 현실에서는 모든 탈중앙화 거래소(DEX)에는 엄청난 가격 변동폭이 존재합니다. 거래량이 많은 경우 토큰 교환에서 상당한 비율의 손실을 볼 가능성이 매우 높습니다.

게다가 이러한 혁신에도 불구하고 시장 조작은 완전히 사라지지 않았습니다. DEX에는 그런 것들이 아주 많습니다. 탈중앙화 거래소(DEX)에서 토큰을 생성하는 사람도 쉽게 자신의 토큰 가격을 부풀려 전체 토큰 유동성 풀을 현금화할 수 있습니다.

마켓 메이커는 가격 조작에 어떻게 대처할까요?

이는 마켓 메이커의 책임은 아니지만 마켓 메이커는 사기성 참가자들이 가격을 부풀리기 시작할 때 가격 조작의 시도를 초기에 차단하는 경우가 많습니다. 이러한 초기 단계에서 마켓 메이커는 시장 가격을 끌어올리려는 참여자에게 엄청난 양의 리밋 주문을 쏟아붓습니다. 이로 인해 수요가 사라지므로 펌핑 전략에 새로 뛰어든 사람들은 마켓 메이커와의 경쟁에서 크게 고전하는 경우가 많습니다. 하지만 펌핑 전략이 잘 짜여 있다면 수많은 시장 주문이 쏟아져 가격을 강력하게 움직이면서 마켓 메이커가 일시적으로 시장에서 이탈할 수밖에 없도록 합니다.


마켓 메이커는 언제 시장에서 철수하는가?

대부분의 마켓 메이커는 거래소와의 계약서상 휴일, 비정상적인 활동 기간 및 중요한 뉴스 발표 기간에는 자신들의 알고리즘을 중단하고 시장에서 철수한다고 명시합니다. 이는 마켓 메이커가 자신의 자본을 보존하려 하기 때문입니다. 

확대된 스프레드를 보면 마켓 메이커가 시장에서 이탈하는 것을 바로 알 수 있습니다. 강력한 글로벌 뉴스 발표가 있을 때 ECN에서도 스프레드가 얼마나 커지는지 보셨나요? 일반적으로 스프레드가 좁은 것은 마켓 메이커들의 노력 덕분입니다. 따라서 이들이 없다면 우리는 스프레드의 확대, 큰 가격 변동, 급격한 하락과 급등 등과 같은 예측 불가능한 열악한 거래 환경에 직면하게 될 것입니다.


마켓 메이커의 재고 위험이란 무엇인가요?

많은 사람들은 마켓 메이커가 전혀 위험을 감수하지 않는다고 생각합니다. 하지만 이는 사실이 아닙니다. 마켓 메이커의 주요 위험은 재고 위험입니다. 이러한 위험은 포지션이 한 방향으로 급격하게 움직일 때 이를 청산하여 스프레드로 수익을 낼 수 없다는 사실에 있습니다. 예를 들어 사람들이 열광적으로 자산을 매도할 때 마켓 메이커는 공급량 전체를 사들일 수밖에 없습니다. 결과적으로 가격이 하락되면 마켓 메이커는 손실을 입게 됩니다. 

기업들은 특수한 스프레드 중심적인 방정식을 사용하고 매수 및 매도에 대한 최적 가격을 결정함으로써 이러한 위험을 피하려고 노력합니다. 하지만 이것이 항상 가능한 것은 아닙니다. 가격이 최적이 아니더라도 마켓 메이커의 역할은 시장에 유동성을 공급하는 것이며 일시적으로 손실을 감수하더라도 이러한 역할을 반드시 수행해야 합니다. 

세계 최대 마켓 메이커인 케네스 그리핀의 회사 기록을 분석해 보면 다음과 같습니다.

세계 최대 마켓 메이커인 케네스 그리핀이 설립한 시타델 증권의 활동을 분석해 보면 금융 시장에서 이 회사의 역할이 얼마나 중요한지 분명해집니다.

회사 보고서에 따르면 그 영향은 매우 인상적입니다: 미국 주식 시장 거래의 10건 중 7건은 이 마켓 메이커가 제공하는 유동성에 달려 있습니다. 이러한 활동은 시타델 증권이 해당 시장의 안정성과 유동성 확보에 있어 중요한 역할을 수행하고 있음을 보여줍니다.

그리핀의 회사가 미치는 영향력의 규모를 평가해보면 매일 약 9억 주에 달하는 미국 주식이 해당 회사의 알고리즘을 통해 거래된다는 점을 확인할 수 있습니다. 이와 같은 엄청난 거래량은 해당 회사가 미국 증권 거래소에서 보여주는 높은 활동성과 영향력을 반영합니다.

그건 그렇고 케네스 그리핀이 거래를 포착하고 마켓 메이킹으로 전환한 과정은 매우 흥미롭습니다. 그리핀의 회사는 글로벌 시장으로 매우 적극적으로 확장하고 있으며 아시아 거래소를 적극적으로 탐색하고 유동성을 제공하고 있습니다.

 

마켓 메이커 EA 준비하기

그래서 우리는 그 이론을 알아냈습니다. 이제 마켓 메이커 EA 개발을 시작할 시간입니다! 물론 우리의 알고리즘은 매우 간단할 것입니다. 우리는 특별한 공식에 따라 스프레드 트레이딩을 구축하지는 않을 것입니다. 

대신 매도 지정가 주문과 매수 지정가 주문 이렇게 두 개의 지정가 주문을 항상 열어두는 가장 간단한 알고리즘을 구현할 것입니다.

MQL5에서 마켓 메이킹을 구현하는 가장 간단한 방법

우리 알고리즘의 코드를 분석해 봅시다. 코드 윗 부분. 이 섹션에서는 앗 크기, 수익 수준, EA 매직 넘버, 거래에 사용할 통화쌍 등 전략의 기본 매개변수를 설정합니다.

//+------------------------------------------------------------------+
//|                                                  MarketMaker.mq5 |
//|                                Copyright 2023, Evgeniy Koshtenko |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, Evgeniy Koshtenko"
#property link      "https://www.mql5.com/en/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;

여기에는 주문 간 델타, 청산 수익(총액, 매수 이익 및 매도 이익), EA 매직 넘버, 거래 라이브러리 가져오기와 같은 기본 설정은 물론 거래할 통화 쌍 선택 및 주문 수 제한과 같은 기능이 포함되어 있습니다.

초기화 및 초기화 해제 함수는 일반적인 표준입니다. OnInit() 함수는 EA가 시작될 때 호출되고 OnDeinit() 함수는 EA가 종료될 때 호출됩니다. OnInit() 메서드는 EA 매직 넘버와 거래 함수 타이머를 설정합니다.

//+------------------------------------------------------------------+
//| 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("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

다음은 미체결 주문 및 미체결 포지션을 계산하는 함수입니다. CountOrders와 CountTrades는 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;
}

다음은 주문 삭제, 수익 계산 및 주문 청산 함수입니다. DelOrder는 특정 심볼에 대한 모든 주문을 매직 넘버를 사용하여 삭제합니다. AllProfit은 매직 넘버를 고려하여 특정 종목에 대한 총 수익 또는 매수/매도 거래 수익을 계산합니다.

//+------------------------------------------------------------------+
//|  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);

  }

}

마지막으로 두 가지 주요 함수는 거래 함수와 틱 함수입니다. Trade는 지정된 매개변수를 고려하여 리밋 매수 및 매도 주문을 제출하는 책임을 맡습니다. OnTimer는 선택된 심볼을 거래하는 Trade 함수를 호출하고 해당 심볼의 수익 정보를 표시합니다.

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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));
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+--------+

이것이 바로 이 간단한 EA의 전체 코드입니다.

테스트 결과

그럼 기본 설정으로 테스터에서 EA를 실행해 보겠습니다. 다음은 2023년 2월 1일부터 2024년 2월 18일까지 EURUSD, GBPUSD, EURGBP, USDJPY 및 EURJPY에 대한 EA 결과입니다.

EA 테스트

수익 대비 손실 규모가 매우 큽니다. 일반적으로 자기자본 감소는 연간 수익보다 큽니다. 이 EA는 일반적인 그리드 EA와 크게 다르지 않게 작동합니다. 다음은 테스트 통계입니다.

테스트 통계

이 EA는 위험에 대한 보상을 전혀 해주지 않는 것 같습니다. 스탑 레벨이 없는 알고리즘들처럼 시한폭탄과 같습니다. 손실이 보이지는 않지만 있음에도 불구하고 누구도 시장이 하루 10~15%씩 통화 가치가 폭락하는 사태를 겪지 않을 것이라고 장담할 수는 없습니다. 개인적으로 지난 4년간 시장에서는 어떤 일이든 가능하며 상상조차 하기 힘든 시나리오도 현실이 될 수 있다는 것을 경험했습니다. 따라서 다재다능한 EA(투자 분석가)는 모든 상황에 대비해야 합니다. 이 EA는 제 평가 기준에 부합하지 않습니다. 그래서 공개하기로 결정했습니다.

결론

자, 이제 가장 간단한 마켓 메이커 알고리즘의 예시를 만들어 보았습니다. 물론 이 예시는 설명을 위한 것이며 매우 간단합니다. 분명한 얘기지만 시장에서 이런 식으로 활동한 마켓 메이커는 단 한 명도 없었습니다. 오늘날 그들의 알고리즘은 시대의 흐름에 발맞춰 머신러닝과 신경망을 활용하고 주문장 내 스트리밍 데이터를 기반으로 딥러닝을 적용하며 다양한 변수와 가격의 특성을 고려합니다. 이제는 아무도 가격보다 높거나 낮게 주문을 넣지 않습니다. 이는 재고 위험으로 이어지기 때문입니다. 다음에는 머신러닝을 활용하여 주문 간 최적의 델타를 스스로 결정하는 마켓 메이커를 만들어보는 실험을 해보는 것이 당연할 것입니다.


MetaQuotes 소프트웨어 사를 통해 러시아어가 번역됨.
원본 기고글: https://www.mql5.com/ru/articles/13897

파일 첨부됨 |
Experts.zip (33.42 KB)
최근 코멘트 | 토론으로 가기 (31)
Stanislav Korotky
Stanislav Korotky | 26 1월 2024 에서 16:46
설명한 알고리즘은 헤징 계좌에만 적용되나요, 아니면 상계 옵션이 있나요?
qqq
qqq | 5 8월 2024 에서 10:10
다른 확률을 가진 군중의 바이러스 시장 및 지정가 주문이 생성되어야하며, 이러한 모든 MM -이 가상과의 상호 작용을 통해 시장 조성자에 대한 신화를 확인하거나 반박해야합니다.

따라서 여러분은 자신이 "꼭두각시"인지 아닌지를 알 수 있습니다. 말하자면 가상이긴 하지만 직접 경험하는 것입니다.
qqq
qqq | 5 8월 2024 에서 10:15
JRandomTrader #:

오래 전에 저는 비유동성 선물 중 하나에서 '시장 조성자'로 활동했는데, 전체 거래의 최대 4분의 1이 제 것이었습니다. 실제 마켓 메이커의 강력한 입찰이 있었지만 실제 가격과는 거리가 멀었습니다.

얼마를 투자했나요?
qqq
qqq | 5 8월 2024 에서 11:54
"마켓 메이커의 업무는 아니지만, 사기성 참여자에 의해 가격이 막 상승하기 시작할 때 종종 펌프 앤 덤프 시도를 차단합니다. 이러한 초기 단계에서 마켓 메이커는 가격을 상승시키려는 플레이어에게 엄청난 양의 지정가 주문을 던집니다. 이는 수요를 소멸시키고, 팜파 비즈니스의 초보자는 시장 조성자에 대해 이빨을 부러뜨리는 경우가 많습니다. 그러나 펌프가 잘 계획되고 계획에 따라 실행되면 많은 시장 주문이 유입되어 가격을 강력하게 움직이면 마켓 메이커는 잠시 동안 시장을 떠나야 합니다."

그리고 여기서, MM 자신이 펌프 앤 덤프뿐만 아니라 다른 어떤 것도 최소한 손실이 나지 않고 기껏해야 0이 되지 않도록 구성하는 것을 막는 것은 무엇일까요?!! 그가 시장에 쏟아 부은 유동성을 +로 가져와야하는 경우.
결국 거래 상대방이 MM이라면 그가 시장에 진입했음을 의미합니다.
그리고 그가 플랫에서 수요와 공급의 불균형을 가지고 있다면, 그는 불균형의 크기에 대한 유동성으로 그것을 보상합니다 - 그는 시장에 진입합니다 .
그리고 가격이 MM에 대해 또는 그의 주문 방향으로 어디로 갈지 맞춰보시겠습니까?

그리고 일반적으로 회사, 은행 또는 개인이 MM이라면 어떤 동기로 자선 활동을 하는 걸까요?
MM의 슬리퍼를 비웃지 마세요.

MM의 기능은 스프레드를 좁혀서 소규모 투기꾼에게 매력적인 가격을 만드는 것입니다.
또한 - 소규모 투기꾼을 포함하여 유동성을 제공하고(결과적으로 변동성을 감소시킵니다).
더 나아가 - 가격 정량화(가격 안정화) - 소규모 투기꾼을 시장에서 쫓아내는 것입니다.

이상하게 들릴지 모르지만 "소규모 투기꾼 퇴출"이 "가격 안정화"입니다. 평평하고 불균형한 예시에서처럼요.
MM은 불균형을 보완하기 위해 "스프레드 축소"-"가격 매력"을 기반으로 플랫에서 자신의 유동성을 사용했습니다. 이를 사용하지 않았다면 가격은 보합권에서 벗어나 더 큰 변동성을 보였을 것입니다. 즉, 그는 유동성을 통해 변동성을 억제했습니다. 그런 다음 그는 잘못된 움직임으로 가격을 플랫에서 벗어나 플랫으로 복귀하거나 복귀하지 않고 계속 유지합니다. 이는 그의 카운터 에이전트였던 사람들과 그의 주문에 반대했던 사람들 모두의 스탑을 무너뜨립니다. 그는 이익을 남기고 시장을 떠나고, 그들은 손실을 남깁니다. 이 단계에서 그는 큰 이익을 얻지 못하고 (이 단계에서) 말하자면 스 캘퍼입니다. 그리고 그의 테이크는 거래 상대방의 스탑입니다.
그러나 그는 그가 없으면 가격이 급격히 나가지 않고 평평한 경계로 돌아가고 바운스하거나 평평한 경계로 돌아가는 가격으로 가격을 평평한 경계에서 가져옵니다.....
사실... MM은 유동성을 주입하고 가격 움직임을 억제하여 플랫을 구성합니다))))))

하지만 문제는 그가 모든 유형의 플레이어와 유동성을 거래한다는 것입니다.

따라서 좁은 스프레드와 유동성이 작은 투기꾼을 끌어들이면 시장에서 쫓겨납니다. MM이 왜 필요한가요?!
귀하의 의견으로는 그 목적은 무엇이라고 생각하십니까?
Yevgeniy Koshtenko
Yevgeniy Koshtenko | 7 8월 2024 에서 12:09
Уроборос 시장에 진입합니다 .
그리고 가격이 MM에 대해 또는 그의 주문 방향으로 어디로 갈지 맞춰보시겠습니까?

그리고 일반적으로 회사, 은행 또는 개인이 MM이라면 어떤 동기로 자선 활동을 하는 걸까요?
MM의 슬리퍼를 비웃지 마세요.

MM의 기능은 스프레드를 좁혀서 소규모 투기꾼에게 매력적인 가격을 만드는 것입니다.
또한 - 소규모 투기꾼을 포함하여 유동성을 제공하고(결과적으로 변동성을 감소시킵니다).
더 나아가 - 가격 정량화(가격 안정화) - 소규모 투기꾼을 시장에서 쫓아내는 것입니다.

이상하게 들릴지 모르지만 "소규모 투기꾼 퇴출"이 "가격 안정화"입니다. 평평하고 불균형한 예시에서처럼 말입니다.
MM은 불균형을 보완하기 위해 "스프레드 축소"-"가격 매력"을 기반으로 플랫에서 자신의 유동성을 사용했습니다. 이를 사용하지 않았다면 가격은 보합권에서 벗어나 더 큰 변동성을 보였을 것입니다. 즉, 그는 유동성을 통해 변동성을 억제했습니다. 그런 다음 그는 잘못된 움직임으로 가격을 플랫에서 벗어나 플랫으로 복귀하거나 복귀하지 않고 계속 유지합니다. 이는 그의 카운터 에이전트였던 사람들과 그의 주문에 반대했던 사람들 모두의 스탑을 무너뜨립니다. 그는 이익을 남기고 시장을 떠나고, 그들은 손실을 남깁니다. 이 단계에서 그는 큰 이익을 얻지 못하고 (이 단계에서) 말하자면 스 캘퍼입니다. 그리고 그의 테이크는 거래 상대방의 스탑입니다.
그러나 그는 그가 없으면 가격이 급격히 나가지 않고 평평한 경계로 돌아가고 바운스하거나 평평한 경계로 돌아가는 가격으로 가격을 평평한 경계에서 가져옵니다.....
사실... MM은 유동성을 주입하고 가격 움직임을 억제하여 플랫을 구성합니다))))))

하지만 문제는 그가 모든 유형의 플레이어와 유동성을 거래한다는 것입니다.

따라서 좁은 스프레드와 유동성이 작은 투기꾼을 끌어들이면 시장에서 쫓겨납니다. MM이 왜 필요한가요?!
귀하의 의견으로는 그 목적은 무엇이라고 생각하십니까?


예, 가격은 그의 방향으로 갈 것입니다. 그러나 그는 날카로운 펌프와 덤프도 필요하지 않습니다. DEX에서 직접 MM이되어 자본이 날카로운 펌프와 덤프에서 어떻게 급격히 저크되는지 확인하십시오. 안정적인 플랫을 유지하고 스프레드를 줄이는 것이 훨씬 더 수익성이 높지 않나요?

새로운 기능: MQL5의 커스텀 인디케이터 새로운 기능: MQL5의 커스텀 인디케이터
MetaTrader5와 MQL5의 새로운 기능 전체를 나열하지는 않겠습니다. 종류도 많은 데다가, 별도의 설명이 필요한 기능들도 있거든요. 객체 지향 프로그래밍을 이용한 코드 작성법 또한 다음에 알아보도록 하겠습니다. 다른 기능들과 함께 설명하기에는 조금 어려운 이야기일 수 있으니까요. 이 글에서는 인디케이터와 인디케이터의 구조, 드로잉 타입과 프로그래밍 디테일을 MQL4와 비교해 볼게요. 초보자 분들께 많은 도움이 되면 좋겠고 기존에 사용하시던 개발자 분들도 뭔가 새로운 걸 얻어 가실 수 있길 바랍니다.
MetaTrader 5를 사용하여 Python에서 사용자 지정 통화쌍 패턴 찾기 MetaTrader 5를 사용하여 Python에서 사용자 지정 통화쌍 패턴 찾기
외환 시장에는 반복되는 패턴과 규칙성이 있을까요? 저는 Python과 MetaTrader 5를 사용해 저만의 패턴 분석 시스템을 만들기로 했습니다. 그건 외환 거래를 정복하기 위한 수학과 프로그래밍의 일종의 공생입니다.
새 MetaTrader 와 MQL5를 소개해드립니다 새 MetaTrader 와 MQL5를 소개해드립니다
본 문서는 MetaTrader5의 간략 리뷰입니다. 짧은 시간 내에 시스템의 모든 세부 사항을 안내해드리기는 어렵습니다 - 테스트는 2009.09.09에 시작되었습니다. 이는 상징적인 일자로, 전 이것이 행운의 숫자가 될거라 믿어 의심치않습니다. 제가 새 MetaTrader 5 터미널과 MQL5 베타버전을 받은지 며칠이 지났습니다. 아직 모든 기능을 사용해본 것은 아니지만, 벌써부터 감명깊네요.
MetaTrader 5를 이용한 Python 고빈도 차익 거래 시스템 MetaTrader 5를 이용한 Python 고빈도 차익 거래 시스템
이 글에서 우리는 브로커의 시각에서 합법적인 차익거래 시스템을 만들고 외환 시장에서 수천 개의 합성 가격을 생성하고 이를 분석하고 성공적으로 수익을 창출하는 거래를 만들어 보겠습니다.