← К каталогу
Исходный код · ID 2357

cstakan.mqh

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Библиотека MQL5 для работы с данными рыночной глубины (стакана). Она предоставляет доступ к информации об ордерах и выполняет расчёты объёмов и цен на основе данных стакана.

Класс CMarketDepth является основным интерфейсом для получения данных стакана. Он позволяет выбрать символ, обновлять снимки стакана и проверять наличие данных. Через методы InfoGetInteger и InfoGetDouble доступны свойства: лучшие цены, суммарные объёмы, максимальные объёмы и специальные уровни объёмов.

Класс CBookCalculation выполняет аналитические расчёты на основе данных стакана. Он вычисляет уровни максимальных объёмов, суммарные объёмы, кумулятивные распределения объёмов и отклонения цены по объёму. Расчёты выполняются лениво при первом обращении и кэшируются для последующих вызовов.

Состав библиотеки

Классов: 2 · методов: 23 · конструкторов: 2 · деструкторов: 1 · отдельных функций: 0

Классы
Класс class CBookCalculation

Класс для расчёта статистик по данным стакана цен

Класс class CMarketDepth

Класс для доступа к данным рыночной глубины (стакана)

Методы и конструкторы
Конструктор · CBookCalculation CBookCalculation(CMarketDepth *a_book)

Конструктор класса, принимает указатель на CMarketDepth

Метод · CBookCalculation void Reset(void)

Сброс ранее рассчитанных данных

Метод · CBookCalculation int GetMaxVolAskIndex(void)

Получение индекса уровня с максимальным объёмом Ask

Метод · CBookCalculation long GetMaxVolAsk(void)

Получение максимального объёма Ask

Метод · CBookCalculation int GetMaxVolBidIndex(void)

Получение индекса уровня с максимальным объёмом Bid

Метод · CBookCalculation long GetMaxVolBid(void)

Получение максимального объёма Bid

Метод · CBookCalculation long GetAskVolTotal(void)

Получение суммарного объёма Ask

Метод · CBookCalculation long GetBidVolTotal(void)

Получение суммарного объёма Bid

Метод · CBookCalculation long GetAskVolTotalMax(void)

Получение кумулятивного объёма Ask до уровня максимального объёма

Метод · CBookCalculation long GetBidVolTotalMax(void)

Получение кумулятивного объёма Bid до уровня максимального объёма

Метод · CBookCalculation long GetAskVolTotalMaxUp(void)

Получение кумулятивного объёма Ask выше уровня максимального объёма

Метод · CBookCalculation long GetBidVolTotalMaxDn(void)

Получение кумулятивного объёма Bid ниже уровня максимального объёма

Метод · CBookCalculation int GetSpecVolAskIndex(long a_vol)

Получение индекса уровня Ask с заданным объёмом

Метод · CBookCalculation long GetSpecVolAsk(long a_vol)

Получение объёма Ask на заданном уровне

Метод · CBookCalculation int GetSpecVolBidIndex(long a_vol)

Получение индекса уровня Bid с заданным объёмом

Метод · CBookCalculation long GetSpecVolBid(long a_vol)

Получение объёма Bid на заданном уровне

Конструктор · CMarketDepth CMarketDepth()

Конструктор по умолчанию класса CMarketDepth

Деструктор · CMarketDepth ~CMarketDepth(void)

Деструктор класса CMarketDepth

Метод · CMarketDepth void Create(const string a_symbol)

Создание и инициализация рыночной глубины для указанного символа

Метод · CMarketDepth long InfoGetInteger(ENUM_MBOOK_INFO_INTEGER a_property,long a_var)

Получение целочисленного свойства рыночной глубины

Метод · CMarketDepth double InfoGetDouble(ENUM_MBOOK_INFO_DOUBLE a_property,long a_var)

Получение свойства рыночной глубины типа double

Метод · CMarketDepth bool Refresh(void)

Обновление данных рыночной глубины

Метод · CMarketDepth bool IsAvailable(void)

Проверка доступности рыночной глубины

Метод · CMarketDepth bool SetMarketBookSymbol(string symbol)

Установка символа рыночной глубины

Метод · CMarketDepth string GetMarketBookSymbol(void)

Получение текущего символа рыночной глубины

Метод · CMarketDepth double GetDeviationByVol(long a_vol,ENUM_MBOOK_SIDE a_side)

Расчёт отклонения цены по заданному объёму и стороне стакана

Получить полный код

Поиск по коду файла

??//+----------------------------------------------------------------------------+

//| xxxxx          ;0AA @01>BK A> AB0:0=>< F5= 8 53> 40==K<8           xxxxxx |

//+----------------------------------------------------------------------------+



#property copyright "Copyright 2018, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"







#ifndef __MARKETDEPTH_MQH__

#define __MARKETDEPTH_MQH__



//+----------------------------------------------------------------------------+

#define LAST_ASK_INDEX  0

#define LAST_BID_INDEX  (m_depth_total - 1)



enum ENUM_MBOOK_SIDE

  {

   MBOOK_ASK,                    // C:07K205B =0 ;8:284=>ABL ?@54>AB02;5==CN ;8<8B=K<8 >@45@0<8 =0 ?@>406C

   MBOOK_BID                     // C:07K205B =0 ;8:284=>ABL ?@54>AB02;5==CN ;8<8B=K<8 >@45@0<8 =0 ?>:C?:C

  };



/*!

   ?@545;O5B <>48D8:0B>@K 4;O ?>;CG5=8O F5;>G8A;5==KE A2>9AB2 AB0:0=0

*/

enum ENUM_MBOOK_INFO_INTEGER

  {

//-0==05 ?> 8=45:A0< AB0:0=0

   MBOOK_BEST_ASK_INDEX,         // 8=45:A ;CGH59 F5=K ?@54;>65=8O  = 19

   MBOOK_BEST_BID_INDEX,         // 8=45:A ;CGH59 F5=K A?@>A0       = 20

   MBOOK_LAST_ASK_INDEX,         // 8=45:A EC4H59 8;8 ?>A;54=59 F5=K ?@54;>65=8O = 0

   MBOOK_LAST_BID_INDEX,         // 8=45:A EC4H59 8;8 ?>A;54=59 F5=K A?@>A0  = 39



//-0==K5 ?> 3;C18=5 AB0:0=0   

   MBOOK_DEPTH_ASK,              // 3;C18=0 AB0:0=0 F5= A> AB>@>=K ?@54;>65=8O 8;8 53> >1I55 :>;8G5AB2> B>@3>2KE C@>2=59

   MBOOK_DEPTH_BID,              // 3;C18=0 AB0:0=0 F5= A> AB>@>=K A?@>A0 8;8 53> >1I55 :>;8G5AB2> B>@3>2KE C@>2=59

   MBOOK_DEPTH_TOTAL,            // >1I0O 3;C18=0 AB0:0=0 F5= 8;8 :>;8G5AB2> B>@3>2KE C@>2=59 =0 ?>:C?:C 8 ?@>406C



//-0==K5 ?> <0:A8<0;L=K< >1J5<0< 2 AB0:0=5   

   MBOOK_MAX_ASK_VOLUME,         // <0:A8<0;L=K9 >1J5< ?@54;>65=8O

   MBOOK_MAX_ASK_VOLUME_INDEX,   // 8=45:A C@>2=O <0:A8<0;L=>3> >1J5<0 ?@54;>65=8O

   MBOOK_MAX_BID_VOLUME,         // <0:A8<0;L=K9 >1J5< A?@>A0

   MBOOK_MAX_BID_VOLUME_INDEX,   // 8=45:A C@>2=O <0:A8<0;L=>3> >1J5<0 A?@>A0

   

//-0==K5 4;O @01>BK 2 0;3>@8B<5 @>1>B0 ?> 7040==><C 7=0G5=8N

   MBOOK_SPEC_ASK_VOLUME,        // >1J5< ?@54;>65=8O =0 =0945==>< 8=45:A5 1;86=53> C@>2=O 1>;LH5 7040==>3> >1J5<0

   MBOOK_SPEC_ASK_VOLUME_INDEX,  // 8=45:A 1;86=53> C@>2=O >1J5<0 ?@54;>65=8O 1>;LH5 7040==>3>, >B ;CGH59 F5=K ?@54;>65=8O

   MBOOK_SPEC_BID_VOLUME,        // >1J5< A?@>A0 =0 =0945==>< 8=45:A5 1;86=53> C@>2=O 1>;LH5 7040==>3> >1J5<0

   MBOOK_SPEC_BID_VOLUME_INDEX,  // 8=45:A 1;86=53> C@>2=O >1J5<0 A?@>A0 1>;LH5 7040==>3>, >B ;CGH59 F5=K A?@>A0



//-0==K5 ?> AC<<0@=K< >1J5<0< 2 AB0:0=5 8 >B 7040==>3> 7=0G5=8O   

   MBOOK_ASK_VOLUME_TOTAL,       // AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?@>406C, 4>ABC?=K9 2 B5:CI5< AB0:0=5

   MBOOK_BID_VOLUME_TOTAL,       // AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?>:C?:C, 4>ABC?=K9 2 B5:CI5< AB0:0=5

   MBOOK_ASK_VOLUME_TOTAL_MAX,   // AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?@>406C, ?>;CG5==KE >B =0945==>3> >1J5<0 4> F5=K Ask

   MBOOK_BID_VOLUME_TOTAL_MAX,   // AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?>:C?:C, ?>;CG5==KE >B =0945==>3> >1J5<0 4> F5=K Bid

   MBOOK_ASK_VOLUME_TOTAL_MAX_UP,// AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?@>406C, ?>;CG5==KE >B =0945==>3> >1J5<0 4> 0-3> 8=45:A0

   MBOOK_BID_VOLUME_TOTAL_MAX_DN,// AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?>:C?:C, ?>;CG5==KE >B =0945==>3> >1J5<0 4> 39 8=45:A0

   MBOOK_BUY_ORDERS,             // 25AL >1J5< ;8<8B=KE >@45@>2 =0 ?>:C?:C, 2KAB02;5==KE 2 B5:CI89 <><5=B =0 18@65

   MBOOK_SELL_ORDERS,            // 25AL >1J5< ;8<8B=KE >@45@>2 =0 ?@>406C, 2KAB02;5==KE 2 B5:CI89 <><5=B =0 18@65

   

  };



/*!

   ?@545;O5B <>48D8:0B>@K 4;O ?>;CG5=8O 25I5AB25==KE A2>9AB2 AB0:0=0

*/

enum ENUM_MBOOK_INFO_DOUBLE

  {

//0==K5 ?> B5:CI8< F5=0< AB0:0=0

   MBOOK_BEST_ASK_PRICE,           // F5=0 Ask - ;CGH53> ?@54;>65=8O

   MBOOK_BEST_BID_PRICE,           // F5=0 Bid - ;CGH53> A?@>A0

   MBOOK_LAST_ASK_PRICE,           // F5=0 EC4H53> 8;8 ?>A;54=53> ?@54;>65=8O

   MBOOK_LAST_BID_PRICE,           // F5=0 EC4H53> 8;8 ?>A;54=53> A?@>A0

   

//-0==K5 4;O @01>BK 2 0;3>@8B<5 @>1>B0 ?> 7040==><C 7=0G5=8N

   MBOOK_SPEC_ASK_PRICE,           // F5=0 7040==>3> ?@54;>65=8O

   MBOOK_SPEC_BID_PRICE,           // F5=0 7040==>3> A?@>A0  



//-0==K5 ?>  8 :>;-2C 70O2>: 2KAB02;5==KE =0 18@65

   MBOOK_OPEN_INTEREST,            // >B:@KBK9 8=B5@5A

   MBOOK_BUY_ORDERS_VOLUME,        // :>;8G5AB2> >@45@>2 =0 ?>:C?:C, 2KAB02;5==KE 2 B5:CI89 <><5=B =0 18@65

   MBOOK_SELL_ORDERS_VOLUME,       // :>;8G5AB2> >@45@>2 =0 ?@>406C, 2KAB02;5==KE 2 B5:CI89 <><5=B =0 18@65

   

  };

//+----------------------------------------------------------------------------+



class CMarketDepth;



/*!

   \brief    0AG5B 8=45:A>2 =081>;55 G0AB> 8A?>;L7C5<KE C@>2=59 AB0:0=0 F5=

*/

class CBookCalculation

  {

private:

   //--- ?>;O 40==KE <0:A8<C<>2

   int            m_max_ask_index;     // 8=45:A <0:A8<0;L=>3> >1J5<0 A?@>A0

   long           m_max_ask_volume;    // >1J5< <0:A8<0;L=>3> A?@>A0

   int            m_max_bid_index;     // 8=45:A <0:A8<0;L=>3> >1J5<0 ?@54;>65=8O

   long           m_max_bid_volume;    // >1J5< <0:A8<0;L=>3> ?@54;>65=8O

   long           m_sum_ask_volume;    // AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?@>406C,4>ABC?=K9 2 B5:IC< AB0:0=5

   long           m_sum_bid_volume;    // AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?>:C?:C,4>ABC?=K9 2 B5:CI5< AB0:0=5

   long           m_sum_ask_volume_max;// AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?@>406C,@0AG8B0==K9 >B =0945==>3> >1J5<0

   long           m_sum_bid_volume_max;// AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?>:C?:C,@0AG8B0==K9 >B =0945==>3> >1J5<0

   long           m_sum_ask_volume_max_up;// AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?@>406C,@0AG8B0==K9 >B =0945==>3> >1J5<0 4> 0-3> 8=45:A0

   long           m_sum_bid_volume_max_dn;// AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?>:C?:C,@0AG8B0==K9 >B =0945==>3> >1J5<0 4> 39-3> 8=45:A0

   

   bool           m_calc_max;          // D;03, C:07K20NI89 GB> 2A5 =5>1E>48<K5 @0AG5BK <0:A8<0;L=KE 40==KE ?@>872545=K

   //--- ?>;O 7040==KE ?0@0<5B@>2

   int            m_spec_ask_index;    // 8=45:A 1;86=53> C@>2=O >1J5<0 ?@54;>65=8O 1>;LH5 7040==>3>, >B ;CGH59 F5=K ?@54;>65=8O

   long           m_spec_ask_volume;   // >1J5< ?@54;>65=8O =0 =0945==>< 8=45:A5 1;86=53> C@>2=O 1>;LH5 7040==>3> >1J5<0

   int            m_spec_bid_index;    // 8=45:A 1;86=53> C@>2=O >1J5<0 A?@>A0 1>;LH5 7040==>3>, >B ;CGH59 F5=K A?@>A0

   long           m_spec_bid_volume;   // >1J5< A?@>A0 =0 =0945==>< 8=45:A5 1;86=53> C@>2=O 1>;LH5 7040==>3> >1J5<0

   bool           m_calc_spec;         // D;03, C:07K20NI89 GB> 2A5 =5>1E>48<K5 @0AG5BK 7040==KE ?0@0<5B@>2 ?@>872545=K

   CMarketDepth*  m_pbook;             // C:070B5;L =0 AB0:0= F5=

   

public:

                  CBookCalculation(CMarketDepth *a_book);

                  //~CBookCalculation(void);

   void           Reset(void);                     // A1@>A @0AG5B0

   int            GetMaxVolAskIndex(void);         // ?>;CG8BL 8=45:A <0:A8<0;L=>3> >1J5<0 ?@>4068

   long           GetMaxVolAsk(void);              // ?>;CG8BL <0:A8<0;L=K9 >1J5< ?@>4068

   int            GetMaxVolBidIndex(void);         // ?>;CG8BL 8=45:A <0:A8<0;L=>3> >1J5<0 ?>:C?:8

   long           GetMaxVolBid(void);              // ?>;CG8BL <0:A8<0;L=K9 >1J5< ?>:C?:8

   

   long           GetAskVolTotal(void);            // ?>;CG8BL AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?@>406C, 4>ABC?=K9 2 B5:CI5< AB0:0=5

   long           GetBidVolTotal(void);            // ?>;CG8BL AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?>:C?:C, 4>ABC?=K9 2 B5:CI5< AB0:0=5

   long           GetAskVolTotalMax(void);         // ?>;CG8BL AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?@>406C, =0945==KE >B >1J5<0

   long           GetBidVolTotalMax(void);         // ?>;CG8BL AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?>:C?:C, =0945==KE >B >1J5<0

   long           GetAskVolTotalMaxUp(void);       // ?>;CG8BL AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?@>406C, =0945==KE >B >1J5<0 4> 0-3> 8=45:A0

   long           GetBidVolTotalMaxDn(void);       // ?>;CG8BL AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?>:C?:C, =0945==KE >B >1J5<0 4> 39-3> 8=45:A0

   

   int            GetSpecVolAskIndex(long a_vol);  // ?>;CG8BL 1;86=89 8=45:A C@>2=O >1J5<0 ?@54>65=8O 1>;LH5 7040==>3>, >B ;CGH59 F5=K ?@>4068

   long           GetSpecVolAsk(long a_vol);       // ?>;CG8BL >1J5< ?@54;>65=8O =0 =0945==>< 8=45:A5 1;86=53> C@>2=O 1>;LH5 7040==>3> >1J5<0

   int            GetSpecVolBidIndex(long a_vol);  // ?>;CG8BL 1;86=89 8=45:A C@>2=O >1J5<0 A?@>A0 1>;LH5 7040==>3>, >B ;CGH59 F5=K ?>:C?:8

   long           GetSpecVolBid(long a_vol);       // ?>;CG8BL >1J5< A?@>A0 =0 =0945==>< 8=45:A5 1;86=53> C@>2=O 1>;LH5 7040==>3> >1J5<0



private:  

   void           Calculation(void);               // @0AG5B 8=45:A>2

   void           Calculation(long a_vol);         // @0AG5B 8=45:A>2

  };

//+----------------------------------------------------------------------------+

/*!

   >=AB@C:B>@

   \param   CMarketDepth *a_book

*/

CBookCalculation::CBookCalculation(CMarketDepth *a_book) {

   Reset();

   m_pbook     = a_book;

   m_calc_max  = true;

   m_calc_spec = true;

}

/*!

   !1@>A @0AG5B0

*/

void CBookCalculation::Reset(void) {

   m_max_ask_volume = .0;

   m_max_bid_volume = .0;

   m_max_ask_index  = -1;

   m_max_bid_index  = -1;

   m_sum_ask_volume = .0;

   m_sum_bid_volume = .0;

   m_sum_ask_volume_max = .0;

   m_sum_bid_volume_max = .0;

   m_sum_ask_volume_max_up = .0;

   m_sum_bid_volume_max_dn = .0;

   m_calc_max       = false;



   m_spec_ask_volume = .0;

   m_spec_bid_volume = .0;

   m_spec_ask_index  = 0;

   m_spec_bid_index  = 0;

   m_calc_spec       = false;

}



//+---------------------------------------------------------------------------------------+

//    0AG5B 8=45:A>2

//+---------------------------------------------------------------------------------------+

void CBookCalculation::Calculation(void) {

   int _begin = (int)m_pbook.InfoGetInteger(MBOOK_LAST_ASK_INDEX);   // - 0 =C;52>9 8=45:A

   int _end   = (int)m_pbook.InfoGetInteger(MBOOK_BEST_ASK_INDEX);   // - ;CGH0O F5=0 ASK

   for(int i = _begin; i < _end && _begin !=-1; ++i) {               // - ?>;CG05< <0:A8<0;L=K9 >1J5< + AC<<0@=K9 >1J5< AB0:0=0 =0 F5=5 A:

      if(m_pbook.m_book_array[i].volume > m_max_ask_volume) {

         m_max_ask_index  = i;

         m_max_ask_volume = m_pbook.m_book_array[i].volume;

      }

         m_sum_ask_volume += m_pbook.m_book_array[i].volume;

   }

//

//---// - ?>;CG05< >1J5< ?;>B=>A8 + >1J5< 4> F5=K A:

   _begin = m_max_ask_index+1;                                       // - 8=45:A <0:A8<0;L=>3> >1J5<0

   _end   = (int)m_pbook.InfoGetInteger(MBOOK_BEST_ASK_INDEX);       // - ;CGH0O F5=0 ASK

   for(int i = _begin; i < _end && _begin !=-1; ++i) {               

         m_sum_ask_volume_max += m_pbook.m_book_array[i].volume;

   } 

//   

//---// - ?>;CG05< >1J5< 4> 8=45:A0 <0:A8<0;L=>3> >1J5<0 >B 0 C@>2=O

   _begin = (int)m_pbook.InfoGetInteger(MBOOK_LAST_ASK_INDEX);;      // - 0 =C;52>9 8=45:A

   _end   = m_max_ask_index-1;                                       // - 8=45:A <0:A8<0;L=>3> >1J5<0

   for(int i = _begin; i < _end && _begin !=-1; ++i) {               

         m_sum_ask_volume_max_up += m_pbook.m_book_array[i].volume;

   } 

// 

     

//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    

   _begin = (int)m_pbook.InfoGetInteger(MBOOK_BEST_BID_INDEX);       // - ;CGH0O F5=0 Bid

   _end   = (int)m_pbook.InfoGetInteger(MBOOK_LAST_BID_INDEX);       // - 39 8=45:A

   for(int i = _end; i >= _begin && _begin != -1; i--) {             // - ?>;CG05< <0:A8<0;L=K9 >1J5< + AC<<0@=K9 >1J5< AB0:0=0 =0 F5=5 84

      if(m_pbook.m_book_array[i].volume > m_max_bid_volume) {

         m_max_bid_index  = i;

         m_max_bid_volume = m_pbook.m_book_array[i].volume;

      }

         m_sum_bid_volume += m_pbook.m_book_array[i].volume;

   }

//

//---// - ?>;CG05< >1J5< ?;>B=>A8 + >1J5< 4> F5=K 84

   _begin = (int)m_pbook.InfoGetInteger(MBOOK_BEST_BID_INDEX);       // - ;CGH0O F5=0 Bid

   _end   = m_max_bid_index-1;                                       // - 8=45:A <0:A8<0;L=>3> >1J5<0

   for(int i = _end; i >= _begin && _begin != -1; i--) {             

         m_sum_bid_volume_max +=  m_pbook.m_book_array[i].volume;

   }   

//

//---// - ?>;CG05< >1J5< 4> 8=45:A0 <0:A8<0;L=>3> >1J5<0 >B 39 C@>2=O

   _begin = m_max_bid_index+1;                                       // - 8=45:A <0:A8<0;L=>3> >1J5<0

   _end   = (int)m_pbook.InfoGetInteger(MBOOK_LAST_BID_INDEX);;      // - 39 8=45:A

   for(int i = _begin; i < _end && _begin !=-1; ++i) {               

         m_sum_bid_volume_max_dn += m_pbook.m_book_array[i].volume;

   } 

   

     

   m_calc_max = true;

}



//+---------------------------------------------------------------------------------------+

//    0AG5B 8=45:A>2

//+---------------------------------------------------------------------------------------+

void CBookCalculation::Calculation(long a_vol) {

   int _begin = (int)m_pbook.InfoGetInteger(MBOOK_LAST_ASK_INDEX, a_vol);

   int _end   = (int)m_pbook.InfoGetInteger(MBOOK_BEST_ASK_INDEX, a_vol);

   for(int i = _begin; i < _end && _begin !=-1; ++i) {

      if(m_pbook.m_book_array[i].volume > m_spec_ask_volume) {

         m_spec_ask_index  = i;

         m_spec_ask_volume = m_pbook.m_book_array[i].volume;

         //break;

      }

   }

   _begin = (int)m_pbook.InfoGetInteger(MBOOK_BEST_BID_INDEX, a_vol);

   _end   = (int)m_pbook.InfoGetInteger(MBOOK_LAST_BID_INDEX, a_vol);

   for(int i = _end; i >= _begin && _begin != -1; i--) {

      if(m_pbook.m_book_array[i].volume > m_spec_bid_volume) {

         m_spec_bid_index  = i;

         m_spec_bid_volume = m_pbook.m_book_array[i].volume;

         //break;

      }

   }

   m_calc_spec = true;

}

//+----------------------------------------------------------------------------+



//+---------------------------------------------------------------------------------------+

//   >;CG8BL 8=45:A <0:A8<0;L=>3> >1J5<0 ?>:C?:8

//+---------------------------------------------------------------------------------------+

int CBookCalculation::GetMaxVolAskIndex(void) {

   if(!m_calc_max)

      Calculation();

//---

   return m_max_ask_index;

}



//+---------------------------------------------------------------------------------------+

//   >;CG8BL <0:A8<0;L=K9 >1J5< ?>:C?:8

//+---------------------------------------------------------------------------------------+

long CBookCalculation::GetMaxVolAsk(void) {

   if(!m_calc_max)

      Calculation();

//---

   return m_max_ask_volume;

}



//+---------------------------------------------------------------------------------------+

//   >;CG8BL 8=45:A <0:A8<0;L=>3> >1J5<0 ?@>4068

//+---------------------------------------------------------------------------------------+

int CBookCalculation::GetMaxVolBidIndex(void) {

   if(!m_calc_max)

      Calculation();

//---

   return m_max_bid_index;

}



//+---------------------------------------------------------------------------------------+

//   >;CG8BL <0:A8<0;L=K9 >1J5< ?@>4068

//+---------------------------------------------------------------------------------------+

long CBookCalculation::GetMaxVolBid(void) {

   if(!m_calc_max)

      Calculation();

//---

   return m_max_bid_volume;

}





//+---------------------------------------------------------------------------------------+

//   ?>;CG8BL AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?@>406C

//+---------------------------------------------------------------------------------------+

long CBookCalculation::GetAskVolTotal(void){ 

      if(!m_calc_max)

         Calculation();

//---

    return m_sum_ask_volume;

}



//+---------------------------------------------------------------------------------------+

//   ?>;CG8BL AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?@>406C >B >1J5<0

//+---------------------------------------------------------------------------------------+

long CBookCalculation::GetAskVolTotalMax(void){ 

      if(!m_calc_max)

         Calculation();

//---

    return m_sum_ask_volume_max;

}   

//+---------------------------------------------------------------------------------------+

//   ?>;CG8BL AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?@>406C >B >1J5<0 4> 0-3> 8=45:A0

//+---------------------------------------------------------------------------------------+

long CBookCalculation::GetAskVolTotalMaxUp(void){ 

      if(!m_calc_max)

         Calculation();

//---

    return m_sum_ask_volume_max_up;

}      

//+---------------------------------------------------------------------------------------+

//   ?>;CG8BL AC<<0@=K9 >1J5< ;8<8B=KE >@45@>2 =0 ?>:C?:C

//+---------------------------------------------------------------------------------------+   

long CBookCalculation::GetBidVolTotal(void){   

      if(!m_calc_max)

         Calculation();

//---

    return m_sum_bid_volume;

   }

//+------------------------------------------------------------

Показано первые 50% кода (символов: 60785)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
6 078,50₽ ≈ $74.30