유리 - 반이 차거나 반이 비어 있음 - 유리를 어떻게 분석하고 거래에 적용합니까? - 페이지 4

 
Alexey Kozitsyn :

그리고 전략을 실행할 수 있습니다. 일종의 "프론트 러닝"이 얻어진다.

나는 그 전략에 대해 아무 말도 하고 싶지 않습니다. 나는 그것들을 아직 이해하지 못합니다. 오더북은 포지션 획득 및 해제에 편리하지만, 현재 표준 오더북에는 포지션 가격이 표시되지 않아 매우 불편하고, 왜 이러한 명백한 필요가 구현되지 않았는지조차 명확하지 않습니다.

 
Alexey Kozitsyn :

라인까지 모든 것을 할 수 있다면 라인이 가능할 것입니다.

이런 전문가가 또 어디 있겠습니까...

 
Aleksey Vyazmikin :

이런 전문가가 또 어디 있겠습니까...

장인을 찾을 수 있지만 그 이유는 무엇입니까? 유리에 선을 위해 다른 모든 것을 작성하시겠습니까?

 
Alexey Kozitsyn :

장인을 찾을 수 있지만 그 이유는 무엇입니까? 유리에 선을 위해 다른 모든 것을 작성하시겠습니까?

마킹 레벨은 매우 중요합니다. 그러나 단순히 표시를 하고 선 자체를 차트에 놓고 거기에서 수준을 취하는 것이 가능합니다.

 

안녕하세요, 저는 유리에서 데이터 표시를 최적화하려고 노력하고 있습니다. 별도의 게시물을 작성한 후 지역 광대가 개발하지 않고 주제를 스팸했습니다. 아마도 여기 누군가에게 유용할 것입니다. 다음은 사용자 지정 표시기가 있는 테마입니다.

https://www.mql5.com/ru/forum/231011

요점은 예측에 사용할 수 있는 오더북의 모든 빠르게 변화하고 가짜 레벨에서 정보를 추출하는 것입니다. 이를 위해 각 레벨에 임의의 가중치/일련번호를 적용합니다.

 #property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots 1

#property indicator_label1 "Delta"
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrBlack
#property indicator_width1 1

int iStart;
double iDelta[];

void OnDeinit ( const int reason)
{
   string symbol = Symbol ();

   MarketBookRelease (symbol);
}

void OnInit ()
{
   string symbol = Symbol ();

   SetIndexBuffer ( 0 , iDelta, INDICATOR_DATA );
   ArraySetAsSeries (iDelta, true );

   IndicatorSetString ( INDICATOR_SHORTNAME , "OrderBook" );
   IndicatorSetInteger ( INDICATOR_DIGITS , Digits ());

   MarketBookAdd (symbol);
}

int OnCalculate (
   const int bars,
   const int counted,
   const datetime & time[],
   const double & open[],
   const double & high[],
   const double & low[],
   const double & close[],
   const long & ticks[],
   const long & volume[],
   const int & spread[]
)
{
   if (iStart == 0 )
  {
    iStart = 1 ;
     ZeroMemory (iDelta);
  }
   else if (bars != counted)
  {
    iDelta[ 0 ] = iDelta[ 1 ];
  }

   string symbol = Symbol ();

   double ask = SymbolInfoDouble (symbol, SYMBOL_ASK );
   double bid = SymbolInfoDouble (symbol, SYMBOL_BID );

   MqlBookInfo levels[];

   bool book = MarketBookGet (symbol, levels);

   int indexBuy = 1 ;
   int indexSell = 1 ;
   long volumeBuy = 0 ;
   long volumeSell = 0 ;

   if (book)
  {
     int size = ArraySize (levels);

     for ( int k = 0 ; k < size; k++)
    {
       if (levels[k].price >= ask) 
      {
        volumeSell += indexSell * levels[k].volume;
        indexSell++;
      }
    }

     for ( int k = size - 1 ; k >= 0 ; k--)
    {
       if (levels[k].price <= bid) 
      {
        volumeBuy += indexBuy * levels[k].volume;
        indexBuy++;
      }
    }
  }

  iDelta[ 0 ] = ( double ) (volumeBuy - volumeSell);
  
   return bars;
}
 
Andy Sanders :

그다지 좋은 구현은 아닙니다.

1. 이를 위해 특별히 고안된 기능으로 너도밤나무를 받는 것이 좋습니다. 그렇지 않으면 패스를 받게 됩니다.

2. 예, 더 일찍 사이클을 종료할 수 있습니다. 각각 20번의 추가 검사를 수행합니다.

아이디어에 관하여 - 그것이 무엇을 주는지 설명해 주십시오. 당신의 지표는 무엇을 합니까? "가짜가 아닌" 수준을 강조하는 데 어떻게 도움이 됩니까?

 
Alexey Kozitsyn : 아이디어와 관련하여 - 그것이 무엇을 제공하는지 설명해 주시겠습니까? 당신의 지표는 무엇을 합니까? "가짜가 아닌" 수준을 강조하는 데 어떻게 도움이 될까요?

댓글 감사합니다 나중에 업데이트 하겠습니다
내가 본 그 안경은 거의 똑같아 보입니다. 스프레드의 양쪽에 두 개의 벽이 있고 그 사이에 약간의 볼륨이 있습니다.


1. 스프레드 주변의 얇고 빠르게 변화하는 수준
2. [그림 2번] 다음은 중간 볼륨의 벽이지만 날카로운 상향 추력을 견딜 수 있는 벽입니다. 이 벽 뒤에는 주문을 할 수 없습니다. 왜냐하면 움직임이 점진적이면 움직이기 시작할 것이기 때문입니다.
3. [그림 1번] 가장 가장자리에는 어떤 움직임에도 견딜 수 있는 일종의 가혹한 볼륨이 있지만 실제로는 점진적인 움직임과 함께 움직이기 시작합니다.
4. #1과 #2 사이에 이 벽을 어떻게든 사용하려고 하는 로봇의 볼륨이 있을 가능성이 높습니다. 벽이 움직일 때 이러한 레벨이 동시에 변경됩니다.

이러한 수준을 분석하는 방법에 대해 가장 먼저 떠오르는 생각은 상단의 총 거래량이 더 많으면 시장 조성자가 시장을 매도하고 하락할 의도를 보여 각각 수요가 더 많고 그 반대의 경우도 마찬가지라는 것입니다. 그러나이 가정은 완전히 정확하지 않습니다. 왜냐하면 ...

1. 이 벽의 위치가 변경되고 있으며, 이를 지지 또는 저항으로 믿을 수 없으므로 이러한 가혹한 볼륨을 미결제약정으로 간주할 수 없습니다. 이 명령은 실행되지 않을 가능성이 높으며 이동합니다. , 따라서 미결제약정 분석에서 가짜 벽을 어떻게든 제외해야 합니다.
2. 동시에, 일반적으로 움직임은 시장 주문에 의해 시작되고 스프레드 주위에서 시작됩니다. 게다가 로봇이 실행될 수 있기 때문에 스프레드 주위에서 가짜 주문을 하는 것은 위험합니다. 따라서 가장 실제 시장이 의도는 스프레드 주변의 주문에서만 볼 수 있으며 이미 주문을 한 경우 실행되기를 원하지만 가짜 벽의 볼륨을 배경으로 이러한 움직임이 눈에 띄지 않을 수 있으므로 의사를 제거하는 또 다른 이유 스프레드에서 멀리 떨어진 주문서의 대량

위의 내용을 감안할 때 의사 벽이 어디에 있고 어디가 큰 주문인지에 대한 명확한 정의가 없기 때문에 단순히 의사 벽을 버릴 수 없으므로 주의를 기울이기 위해 단순히 주문장 수준에 가중치를 할당합니다. 확산 주위를 이동합니다.

Цена | Обьем - Стандартный стакан

20     | 5
20.5   | 200
30     | 10
30.5   | 5
40     | 20
40.5   | 1          Итого: 241 контрактов на покупку

50

50.5   | 1
60     | 40
60.5   | 10
70     | 50
70.5   | 100
80     | 5          Итого: 206 контрактов на покупку
즉, 단순히 볼륨을 요약하면 판매자가 너무 많아서 위에서 200 판매자 만 판매하지 않을 것이라고 생각합니다 ...
동시에 벽 전에 주문을 일치시킬 때 구매자가 압도적으로 많을 것입니다.
웨이트를 사용해 봅시다.
Цена | Обьем - Реалистичный стакан

20     | 5      х 1
20.5   | 200    х 2
30     | 10     х 3
30.5   | 5      х 4
40     | 20     х 5
40.5   | 1      х 6          Итого: 561 контрактов на покупку

50

50.5   | 1      х 6
60     | 40     х 5
60.5   | 10     х 4
70     | 50     х 3
70.5   | 100    х 2
80     | 5      х 1         Итого: 601 контрактов на покупку
이미 더 현실적입니다. 아마도 가중치는 비선형적으로 배치되어야 하지만 기하급수적으로 더 많이 표시될 것입니다. 또한 오더북의 데이터에 대한 가격변동의 의존성을 확인하고 싶었기 때문에 정확한 레벨 합산을 통해 det에서 오더북의 상태에 따라 가격이 어떻게 변했는지 알 수 있습니다. 술집
 
Andy Sanders :


즉, 단순히 볼륨을 요약하면 판매자가 너무 많아서 위에서 200 판매자 만 판매하지 않을 것이라고 생각합니다 ...
동시에 벽 전에 주문을 일치시킬 때 구매자가 압도적으로 많을 것입니다.
웨이트를 사용해 봅시다.
이미 더 현실적입니다. 아마도 가중치는 비선형적으로 배치되어야 하지만 기하급수적으로 더 많이 표시될 것입니다. 또한 오더북의 데이터에 대한 가격변동의 의존성을 보고 싶었기 때문에 정확한 레벨 합산을 통해 데트에서 오더북의 상태에 따라 가격이 어떻게 변했는지 알 수 있습니다. 술집

흥미로운 아이디어입니다. 그러나 큰 거래자는 응용 프로그램의 빙산을 사용한다는 점을 고려해야 합니다. 그들이 먹으려고 할 경우를 대비하여 스스로 위로 올려주는 것. 그리고 유리의 어느 깊이에 레벨이 매달려 있습니까? 양쪽에 6이 있습니까?

 
Aleksey Vyazmikin :

흥미로운 아이디어입니다. 그러나 큰 거래자는 응용 프로그램의 빙산을 사용한다는 점을 고려해야 합니다. 그들이 먹으려고 할 경우를 대비하여 스스로 위로 올려주는 것. 그리고 유리의 어느 깊이에 레벨이 매달려 있습니까? 양쪽에 6이 있습니까?

조금 틀렸다는 것을 이제야 깨달았습니다.
이제 유리 가장자리에서 스프레드까지 주기가 있으며 반복의 일련 번호는 가중치입니다.
이 시나리오에서 거래량은 작지만 많은 수준이 있는 경우 스프레드 근처에서 거대한 가중치를 얻게 됩니다.

따라서 반대로 분석된 수준의 수를 예를 들어 각 면에 10개, 최대 가중치를 설정하고 모서리가 아닌 스프레드에서 가중치를 시작하고 모서리에 더 가깝게, 모서리에 가깝게 배치해야 합니다. 가중치가 0까지 감소합니다. 이 경우, 던진 레벨에 상관없이 + - 10포인트씩 가격 변동을 분석하는 것이 더 정확할 것입니다.

빙산을 제거하는 방법 - 이론적으로 양쪽에서 동등할 것이므로 분석에 영향을 미치지 않아야 합니다.

 
Andy Sanders :

아이디어는 명확합니다. 감사합니다. 그리고 "벽"을 검색하기 위해 특정 기간(> Y DOM 업데이트) 동안 큰 볼륨(> X 로트)이 제거되지 않은 수준을 살펴보는 것이 어떻습니까? 그리고 이 순간을 그래프에 점으로 표시하시겠습니까?

이것은 다음과 같이 많은 양을 앞뒤로 운반하는 로봇을 즉시 걸러냅니다. 그들은 한 곳에 오랫동안 머물지 않습니다.

다음과 같이 보일 수 있습니다.

각 포인트는 최소 150개의 DOM 업데이트 기간이 있는 최소 500개의 로트 수준입니다.