CustomBookAdd

사용자 지정 심볼에 대한 시장 수준 상태를 전달.. 브로커 서버에서 가격이 도착하는 것처럼 Depth of Market(시장 깊이)를 브로드캐스팅 할 수 있음.

bool  CustomBookAdd(
   const string        symbol,            // 심볼 이름
   const MqlBookInfo&  books[]            // Depth of Market 요소를 설명하는 배열
   uint                count=WHOLE_ARRAY  // 사용할 요소의 수
   );

매개변수

심볼

[in]  사용자 지정 심볼 이름.

books[]

[in]   Depth of Marekt(시장 깊이) 상태를 완벽하게 설명하는 일련의 MqlBookInfo 유형 데이터(전체 구매 및 판매 요청). 지난 시장 수준 상태는 이전 시장 수준을 완전히 대체.

count=WHOLE_ARRAY

[in]   함수에 전달할 'books' 배열 요소의 수 기본적으로 전체 배열이 사용됩니다.

값 반환

성공하면 true, 그렇지 않으면 false. 오류에 대한 정보를 얻으려면 GetLastError() 함수를 호출.

주의

CustomBookAdd 기능은 플랫폼 인터페이스 또는 MarketBookAdd기능을 통해 Depth of Market(시장 깊이)을 여는 사용자 지정 심볼에만 사용할 수 있습니다.

Depth of Market을 삽입할 때, 심볼의 입찰 및 요청 가격은 업데이트되지 않습니다. CustomTicksAdd를 사용하여 최적의 가격 변경을 제어하고 틱에 넣어야합니다.

이 기능은 전송된 데이터의 정확성을 확인합니다: 유형, 가격 및 볼륨은 각 요소에 대해 표시되어야 합니다 또한 MqlBookInfo.volume 및 MqlBookInfo.volume_real은 0 또는 음수가 아니어야 합니다; 만약 두 볼륨이 모두 음수이면 오류로 간주됩니다.볼륨 중 하나 또는 둘 모두를 지정할 수 있습니다: 지정된 볼륨이나 양수인 볼륨이 사용됩니다.

volume=-1 && volume_real=2 — volume_real=2 가 사용될 것입니다
volume=3 && volume_real=0 — volume=3 가 사용될 것입니다.

'books' 배열의 MqlBookInfo 요소 순서는 중요하지 않습니다. 터미널은 데이터를 저장할 때 스스로 가격을 기준으로 데이터를 정렬합니다.

데이터를 저장할 때 수신인 사용자 지정 심볼의 "Book depth" (SYMBOL_TICKS_BOOKDEPTH) 매개변수를 확인합니다. 전달된 Depth of Market에서 판매 요청 수가 이 값을 초과하면 초과 레벨이 폐기됩니다. 구매 요청도 마찬가지입니다.

'books' 배열의 샘플 채우기:

Depth of Market 상태

Filling books[]

샘플 Depth of Market

books[0].type=BOOK_TYPE_SELL;
books[0].price=1.14337;
books[0].volume=100;   
books[1].type=BOOK_TYPE_SELL;
books[1].price=1.14330;
books[1].volume=50;   
books[2].type=BOOK_TYPE_SELL;
books[2].price=1.14335;
books[2].volume=40;   
books[3].type=BOOK_TYPE_SELL;
books[3].price=1.14333;
books[3].volume=10;   
books[4].type=BOOK_TYPE_BUY;
books[4].price=1.14322;
books[4].volume=10;   
books[5].type=BOOK_TYPE_BUY;
books[5].price=1.14320;
books[5].volume=90;  
books[6].type=BOOK_TYPE_BUY;
books[6].price=1.14319;
books[6].volume=100;   
books[7].type=BOOK_TYPE_BUY;
books[7].price=1.14318;
books[7].volume=10;

예를 들어:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---다음에서 데이터를 검색할 수 있는 Depth of Market(시장 깊이)를 활성화 
   MarketBookAdd(Symbol());
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| 엑스퍼트 초기화 해제 기능                                           |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| 틱 기능                                                           |
//+------------------------------------------------------------------+
void OnTick(void)
  {
   MqlTick ticks[];
   ArrayResize(ticks,1);
//--- 통상의 현시가를 통상의 현시세로 복사
   if(SymbolInfoTick(Symbol(),ticks[0]))
     {
      string symbol_name=Symbol()+".SYN";
      CustomTicksAdd(symbol_name,ticks);
     }
  }
//+------------------------------------------------------------------+
//| 장부 기능                                                         |
//+------------------------------------------------------------------+
void OnBookEvent(const string &book_symbol)
  {
//--- 현재 Depth of Market(시장 깊이) 상태를 공통 심볼에서 사용자 지정 심볼로 복사
   if(book_symbol==Symbol())
     {
      MqlBookInfo book_array[];
      if(MarketBookGet(Symbol(),book_array))
        {
         string symbol_name=Symbol()+".SYN";
         CustomBookAdd(symbol_name,book_array);
        }
     }
  }
//+------------------------------------------------------------------+

추가 참조

MarketBookAdd, CustomTicksAdd, OnBookEvent