현재 가격 반환을 위한 구조 (MqlTick)

이는 심볼의 최신 가격을 저장하기 위한 구조입니다. 현재 가격에 대해 가장 많이 요청되는 정보를 빠르게 검색할 수 있도록 고안되었습니다.

struct MqlTick
  {
   datetime     time;          // 마지막 가격 업데이트 시간
   double       bid;           // 현재 입찰 가격
   double       ask;           // 현재 호가
   double       last;          // 마지막 거래 가격 (마지막)
   ulong        volume;        // 현재 마지막 가격의 볼륨
   long         time_msc;      // 가격 마지막 업데이트 시간(밀리초)
   uint         flags;         // 틱 플래그
   double       volume_real;   // 현재 마지막 가격의 볼륨(더 높은 정확도)
  };

MqlTick 유형의 변수를 사용하면 SymbolInfoTick() 함수의 단일 호출 내에서 요구, 입찰, 마지막 가격 및 볼륨의 값을 얻을 수 있습니다.

이전 틱에 비해 변경 사항이 있는지 여부에 관계없이 각 틱에 대한 매개변수가 채워집니다. 따라서 틱 내역에서 이전 값을 검색할 필요 없이 과거 어느 순간에나 정확한 가격을 확인할 수 있습니다. 예를 들어, 틱 도착 중에 입찰 가격만 변경되더라도 구조에는 이전 호가, 볼륨 등 다른 매개변수도 포함됩니다.

틱 플래그를 분석하여 정확히 변경된 데이터를 확인할 수 있습니다:

  • TICK_FLAG_BID –  입찰 가격이 변경된 틱
  • TICK_FLAG_ASK  – 호가가 변경된 틱
  • TICK_FLAG_LAST – 마지막 거래 가격이 변경된 틱
  • TICK_FLAG_VOLUME – 볼륨이 변경된 틱
  • TICK_FLAG_BUY – 매수 거래의 결과로 나타난 틱
  • TICK_FLAG_SELL – 매도 거래의 결과로 나타난 틱

예:

void OnTick()
  {
   MqlTick last_tick;
//---
   if(SymbolInfoTick(Symbol(),last_tick))
     {
      Print(last_tick.time,": Bid = ",last_tick.bid,
            " Ask = ",last_tick.ask,"  Volume = ",last_tick.volume);
     }
   else Print("SymbolInfoTick() failed, error = ",GetLastError());
//---
  }

추가 참조

구조 및 클래스, CopyTicks(), SymbolInfoTick()