| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- //+------------------------------------------------------------------+
- //| MetaTrader 5 API |
- //| Copyright 2000-2019, MetaQuotes Software Corp. |
- //| http://www.metaquotes.net |
- //+------------------------------------------------------------------+
- #pragma once
- //+------------------------------------------------------------------+
- //| Feeder constants |
- //+------------------------------------------------------------------+
- enum EnMTFeederConstants
- {
- MT_FEEDER_DEALER =-1, // feeder index for dealer ticks
- MT_FEEDER_OFFSET =64 // index offset for datafeed ticks
- };
- //+------------------------------------------------------------------+
- //| Tick full description structure |
- //+------------------------------------------------------------------+
- #pragma pack(push,1)
- struct MTTick
- {
- //--- tick flags
- enum EnTickFlags
- {
- TICK_FLAG_BUY =1, // tick created due buy operation
- TICK_FLAG_SELL =2, // tick created due sell operation
- //--- enumeration borders
- TICK_FLAG_NONE =0, // none
- TICK_FLAG_ALL =TICK_FLAG_BUY|TICK_FLAG_SELL // all flags
- };
- wchar_t symbol[32]; // symbol
- wchar_t bank[32]; // tick source ticker
- INT64 datetime; // datetime in seconds since 01/01/1970
- //--- basic price data
- double bid; // bid price
- double ask; // ask price
- double last; // last price
- UINT64 volume; // last trade volume
- //--- additional data
- INT64 datetime_msc; // datetime in milliseconds since 01/01/1970
- UINT64 flags; // flags
- UINT64 volume_ext; // last trade volume with extended accuracy
- //--- reserved data
- UINT reserved[26]; // reserved
- };
- #pragma pack(pop)
- //+------------------------------------------------------------------+
- //| Tick short description structure |
- //+------------------------------------------------------------------+
- #pragma pack(push,1)
- struct MTTickShort
- {
- //--- tick flags
- enum EnTickShortFlags
- {
- TICK_SHORT_FLAG_RAW =0x00000001, // raw tick
- TICK_SHORT_FLAG_BID =0x00000002, // tick changes bid price value
- TICK_SHORT_FLAG_ASK =0x00000004, // tick changes ask price value
- TICK_SHORT_FLAG_LAST =0x00000008, // tick changes last price value
- TICK_SHORT_FLAG_VOLUME=0x00000010, // tick changes volume value
- TICK_SHORT_FLAG_BUY =0x00000020, // tick created due buy operation
- TICK_SHORT_FLAG_SELL =0x00000040, // tick created due sell operation
- //--- enumeration borders
- TICK_SHORT_FLAG_NONE =0x00000000, // none
- };
- INT64 datetime; // last update datetime in seconds since 01/01/1970
- double bid; // bid price
- double ask; // ask price
- double last; // last price
- UINT64 volume; // last trade volume
- INT64 datetime_msc; // datetime in milliseconds since 01/01/1970
- UINT64 flags; // flags
- UINT64 volume_ext; // last trade volume with extended volume
- UINT reserved[26]; // reserved
- };
- #pragma pack(pop)
- //+------------------------------------------------------------------+
- //| Tick short structure |
- //+------------------------------------------------------------------+
- #pragma pack(push,1)
- struct MTTickRate
- {
- //--- tick flags
- enum EnTickShortFlags
- {
- TICK_SHORT_FLAG_RAW =0x00000001, // raw tick
- TICK_SHORT_FLAG_BID =0x00000002, // tick changes bid price value
- TICK_SHORT_FLAG_ASK =0x00000004, // tick changes ask price value
- TICK_SHORT_FLAG_LAST =0x00000008, // tick changes last price value
- TICK_SHORT_FLAG_VOLUME=0x00000010, // tick changes volume value
- TICK_SHORT_FLAG_BUY =0x00000020, // tick created due buy operation
- TICK_SHORT_FLAG_SELL =0x00000040, // tick created due sell operation
- //--- enumeration borders
- TICK_SHORT_FLAG_NONE =0x00000000, // none
- };
- INT64 datetime_msc; // datetime in milliseconds since 01/01/1970
- double bid; // bid price
- double ask; // ask price
- double last; // last price
- UINT64 flags; // flags
- UINT64 volume_ext; // last trade volume with extended volume
- INT64 reserved[2];
- };
- #pragma pack(pop)
- //+------------------------------------------------------------------+
- //| Tick statistic description structure |
- //+------------------------------------------------------------------+
- #pragma pack(push,1)
- struct MTTickStat
- {
- wchar_t symbol[32]; // symbol
- INT64 datetime; // last update datetime in seconds since 01/01/1970
- //--- bid
- double bid_high; // bid high
- double bid_low; // bid low
- //--- ask
- double ask_high; // ask high
- double ask_low; // ask low
- //--- last
- double last_high; // last high
- double last_low; // last low
- //--- trade volume
- UINT64 vol_high; // last high
- UINT64 vol_low; // last low
- //--- trade session statistics
- UINT64 trade_deals; // total deals in current session
- UINT64 trade_volume; // total deals volume in current session
- UINT64 trade_turnover; // total turnover in current session
- UINT64 trade_interest; // open interest in current session
- UINT64 trade_buy_orders; // total buy orders
- UINT64 trade_buy_volume; // total buy orders volume
- UINT64 trade_sell_orders; // total sell orders
- UINT64 trade_sell_volume; // total sell orders volume
- UINT64 trade_volume_ext; // total deals volume in current session with extended accuracy
- UINT64 trade_buy_volume_ext; // total buy orders volume with extended accuracy
- UINT64 trade_sell_volume_ext; // total sell orders volume with extended accuracy
- UINT64 vol_high_ext; // last high with extended accuracy
- UINT64 vol_low_ext; // last low with extended accuracy
- int trade_reserved[20]; // reserved
- //--- datetime
- INT64 datetime_msc; // last update datetime in milliseconds since 01/01/1970
- //--- price session statistics
- double price_open; // session open price
- double price_close; // session close price
- double price_aw; // average weighted price
- double price_change; // price change percentage
- double price_volatility; // price volatility
- double price_theoretical; // theoretical price
- double price_greeks_delta; // option\warrant delta
- double price_greeks_theta; // option\warrant theta
- double price_greeks_gamma; // option\warrant gamma
- double price_greeks_vega; // option\warrant vega
- double price_greeks_rho; // option\warrant rho
- double price_greeks_omega; // option\warrant omega
- double price_sensitivity; // option\warrant sensitivity
- int price_reserved[14]; // reserved
- };
- #pragma pack(pop)
- //+------------------------------------------------------------------+
- //| Tick events notification interface |
- //+------------------------------------------------------------------+
- class IMTTickSink
- {
- public:
- //--- tick events
- virtual void OnTick(LPCWSTR /*symbol*/,const MTTickShort& /*tick*/) { }
- virtual void OnTickStat(const MTTickStat& /*tick*/) { }
- //--- tick hooks
- virtual MTAPIRES HookTick(const int /*feeder*/,MTTick& /*tick*/) { return(MT_RET_OK); }
- virtual MTAPIRES HookTickStat(const int /*feeder*/,MTTickStat& /*tstat*/) { return(MT_RET_OK); }
- //--- extended tick events
- virtual void OnTick(const int /*feeder*/,const MTTick& /*tick*/) { }
- virtual void OnTickStat(const int /*feeder*/,const MTTickStat& /*tstat*/) { }
- };
- //+------------------------------------------------------------------+
|