| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 |
- //+------------------------------------------------------------------+
- //| MetaTrader 5 API |
- //| Copyright 2000-2019, MetaQuotes Software Corp. |
- //| http://www.metaquotes.net |
- //+------------------------------------------------------------------+
- #pragma once
- //+------------------------------------------------------------------+
- //| Trade request interface |
- //+------------------------------------------------------------------+
- class IMTRequest
- {
- public:
- //--- trade action types
- enum EnTradeActions
- {
- //--- clients actions
- TA_CLIENT_FIRST =0,
- TA_PRICE =0,
- TA_REQUEST =1,
- TA_INSTANT =2,
- TA_MARKET =3,
- TA_EXCHANGE =4,
- TA_PENDING =5,
- TA_SLTP =6,
- TA_MODIFY =7,
- TA_REMOVE =8,
- TA_TRANSFER =9,
- TA_CLOSE_BY =10,
- TA_CLIENT_LAST =TA_CLOSE_BY,
- //--- server actions
- TA_SERVER_FIRST =100,
- TA_ACTIVATE =100,
- TA_ACTIVATE_SL =101,
- TA_ACTIVATE_TP =102,
- TA_ACTIVATE_STOPLIMIT =103,
- TA_STOPOUT_ORDER =104,
- TA_STOPOUT_POSITION =105,
- TA_EXPIRATION =106,
- TA_SERVER_LAST =TA_EXPIRATION,
- //--- dealer actions
- TA_DEALER_FIRST =200,
- TA_DEALER_POS_EXECUTE =200,
- TA_DEALER_ORD_PENDING =201,
- TA_DEALER_POS_MODIFY =202,
- TA_DEALER_ORD_MODIFY =203,
- TA_DEALER_ORD_REMOVE =204,
- TA_DEALER_ORD_ACTIVATE=205,
- TA_DEALER_BALANCE =206,
- TA_DEALER_ORD_SLIMIT =207,
- TA_DEALER_CLOSE_BY =208,
- TA_DEALER_LAST =TA_DEALER_CLOSE_BY,
- //--- enumeration borders
- TA_FIRST =TA_PRICE,
- TA_LAST =TA_DEALER_CLOSE_BY,
- TA_END =255
- };
- //--- trade action flags
- enum EnTradeActionFlags
- {
- TA_FLAG_CLOSE =0x00000001, // position close request
- TA_FLAG_MARKET =0x00000002, // market prices request
- TA_FLAG_CHANGED_PRICE =0x00000004, // order price or position open price will be changed
- TA_FLAG_CHANGED_TRIGGER =0x00000008, // order trigger price will be changed
- TA_FLAG_CHANGED_SL =0x00000010, // order or position SL will be changed
- TA_FLAG_CHANGED_TP =0x00000020, // order or position TP will be changed
- TA_FLAG_CHANGED_EXP_TYPE =0x00000040, // order expiration type will be changed
- TA_FLAG_CHANGED_EXP_TIME =0x00000080, // order expiration datetime will be changed
- TA_FLAG_EXPERT =0x00000100, // request from expert
- TA_FLAG_SIGNAL =0x00000200, // request from signal
- TA_FLAG_SKIP_MARGIN_CHECK=0x00000400, // skip margin check (only for dealers)
- //--- enumeration borders
- TA_FLAG_NONE =0x00000000,
- TA_FLAG_ALL =TA_FLAG_CLOSE | TA_FLAG_MARKET | TA_FLAG_CHANGED_PRICE | TA_FLAG_CHANGED_TRIGGER |
- TA_FLAG_CHANGED_SL | TA_FLAG_CHANGED_TP | TA_FLAG_CHANGED_EXP_TYPE | TA_FLAG_CHANGED_EXP_TIME | TA_FLAG_EXPERT | TA_FLAG_SIGNAL |
- TA_FLAG_SKIP_MARGIN_CHECK
- };
- //--- common methods
- virtual void Release(void)=0;
- virtual MTAPIRES Assign(const IMTRequest* request)=0;
- virtual MTAPIRES Clear(void)=0;
- virtual LPCWSTR Print(MTAPISTR& string) const=0;
- //--- request id
- virtual UINT ID(void) const=0;
- //--- client login
- virtual UINT64 Login(void) const=0;
- virtual MTAPIRES Login(const UINT64 login)=0;
- //--- client group
- virtual LPCWSTR Group(void) const=0;
- //--- symbol
- virtual LPCWSTR Symbol(void) const=0;
- virtual MTAPIRES Symbol(LPCWSTR symbol)=0;
- //--- price digits
- virtual UINT Digits(void) const=0;
- //--- EnTradeActions
- virtual UINT Action(void) const=0;
- virtual MTAPIRES Action(const UINT action)=0;
- //--- order expiration
- virtual INT64 TimeExpiration(void) const=0;
- virtual MTAPIRES TimeExpiration(const INT64 time)=0;
- //--- order type IMTOrder::EnOrderType
- virtual UINT Type(void) const=0;
- virtual MTAPIRES Type(const UINT type)=0;
- //--- IMTOrder::EnOrderFilling
- virtual UINT TypeFill(void) const=0;
- virtual MTAPIRES TypeFill(const UINT type)=0;
- //--- IMTOrder::EnOrderTime
- virtual UINT TypeTime(void) const=0;
- virtual MTAPIRES TypeTime(const UINT type)=0;
- //--- additional flags EnTradeActionFlags
- virtual UINT64 Flags(void) const=0;
- virtual MTAPIRES Flags(const UINT64 flags)=0;
- //--- volume
- virtual UINT64 Volume(void) const=0;
- virtual MTAPIRES Volume(const UINT64 volume)=0;
- //--- order ticket
- virtual UINT64 Order(void) const=0;
- virtual MTAPIRES Order(const UINT64 order)=0;
- //--- order ticket in external system (exchange, ECN, etc)
- virtual LPCWSTR OrderExternalID(void) const=0;
- virtual MTAPIRES OrderExternalID(LPCWSTR id)=0;
- //--- order price
- virtual double PriceOrder(void) const=0;
- virtual MTAPIRES PriceOrder(const double price)=0;
- //--- order trigger price
- virtual double PriceTrigger(void) const=0;
- virtual MTAPIRES PriceTrigger(const double price)=0;
- //--- order SL price
- virtual double PriceSL(void) const=0;
- virtual MTAPIRES PriceSL(const double price)=0;
- //--- order TP price
- virtual double PriceTP(void) const=0;
- virtual MTAPIRES PriceTP(const double price)=0;
- //--- price deviation details
- virtual UINT64 PriceDeviation(void) const=0;
- virtual MTAPIRES PriceDeviation(const UINT64 deviation)=0;
- virtual double PriceDeviationTop(void) const=0;
- virtual double PriceDeviationBottom(void) const=0;
- //--- comment
- virtual LPCWSTR Comment(void) const=0;
- virtual MTAPIRES Comment(LPCWSTR comment)=0;
- //---
- //--- request result information
- //---
- //--- request state retcode
- virtual MTAPIRES ResultRetcode(void) const=0;
- //--- request dealer
- virtual UINT64 ResultDealer(void) const=0;
- //--- request result deal
- virtual UINT64 ResultDeal(void) const=0;
- //--- request result order
- virtual UINT64 ResultOrder(void) const=0;
- //--- request result confirmed volume
- virtual UINT64 ResultVolume(void) const=0;
- //--- request result confirmed price
- virtual double ResultPrice(void) const=0;
- //--- request result dealer prices
- virtual double ResultDealerBid(void) const=0;
- virtual double ResultDealerAsk(void) const=0;
- virtual double ResultDealerLast(void) const=0;
- //--- request result market prices
- virtual double ResultMarketBid(void) const=0;
- virtual double ResultMarketAsk(void) const=0;
- virtual double ResultMarketLast(void) const=0;
- //--- request result comment
- virtual LPCWSTR ResultComment(void) const=0;
- //--- external system trade account (exchange, ECN, etc)
- virtual LPCWSTR ExternalAccount(void) const=0;
- virtual MTAPIRES ExternalAccount(LPCWSTR account)=0;
- //--- client side request id
- virtual UINT IDClient(void) const=0;
- //--- source request ip
- virtual LPCWSTR IP(void) const=0;
- virtual MTAPIRES IP(LPCWSTR ip)=0;
- //--- source dealer login (for dealer transaction)
- virtual UINT64 SourceLogin(void) const=0;
- virtual MTAPIRES SourceLogin(const UINT64 login)=0;
- //--- position ticket
- virtual UINT64 Position(void) const=0;
- virtual MTAPIRES Position(const UINT64 position)=0;
- //--- position ticket for close-by
- virtual UINT64 PositionBy(void) const=0;
- virtual MTAPIRES PositionBy(const UINT64 position)=0;
- //--- position ticket in external system (exchange, ECN, etc)
- virtual LPCWSTR PositionExternalID(void) const=0;
- virtual MTAPIRES PositionExternalID(LPCWSTR id)=0;
- //--- position ticket in external system (exchange, ECN, etc)
- virtual LPCWSTR PositionByExternalID(void) const=0;
- virtual MTAPIRES PositionByExternalID(LPCWSTR id)=0;
- //--- volume with extended accuracy
- virtual UINT64 VolumeExt(void) const=0;
- virtual MTAPIRES VolumeExt(const UINT64 volume)=0;
- //--- request result confirmed volume with extended accuracy
- virtual UINT64 ResultVolumeExt(void) const=0;
- //--- price digits
- virtual MTAPIRES DigitsSet(const UINT digits)=0;
- //--- request internal data for API usage
- virtual MTAPIRES ApiDataSet(const USHORT app_id,const UCHAR id,const INT64 value)=0;
- virtual MTAPIRES ApiDataSet(const USHORT app_id,const UCHAR id,const UINT64 value)=0;
- virtual MTAPIRES ApiDataSet(const USHORT app_id,const UCHAR id,const double value)=0;
- virtual MTAPIRES ApiDataGet(const USHORT app_id,const UCHAR id,INT64& value) const=0;
- virtual MTAPIRES ApiDataGet(const USHORT app_id,const UCHAR id,UINT64& value) const=0;
- virtual MTAPIRES ApiDataGet(const USHORT app_id,const UCHAR id,double& value) const=0;
- virtual MTAPIRES ApiDataUpdate(const UINT pos,const USHORT app_id,const UCHAR id,const INT64 value)=0;
- virtual MTAPIRES ApiDataUpdate(const UINT pos,const USHORT app_id,const UCHAR id,const UINT64 value)=0;
- virtual MTAPIRES ApiDataUpdate(const UINT pos,const USHORT app_id,const UCHAR id,const double value)=0;
- virtual MTAPIRES ApiDataNext(const UINT pos,USHORT& app_id,UCHAR& id,INT64& value) const=0;
- virtual MTAPIRES ApiDataNext(const UINT pos,USHORT& app_id,UCHAR& id,UINT64& value) const=0;
- virtual MTAPIRES ApiDataNext(const UINT pos,USHORT& app_id,UCHAR& id,double& value) const=0;
- virtual LPVOID ApiDataRaw(void) const=0;
- virtual UINT ApiDataRawMax(void) const=0;
- virtual MTAPIRES ApiDataClear(const USHORT app_id)=0;
- virtual MTAPIRES ApiDataClearAll(void)=0;
- };
- //+------------------------------------------------------------------+
- //| Order array interface |
- //+------------------------------------------------------------------+
- class IMTRequestArray
- {
- public:
- //--- common methods
- virtual void Release(void)=0;
- virtual MTAPIRES Assign(const IMTRequestArray* array)=0;
- virtual MTAPIRES Clear(void)=0;
- //--- add
- virtual MTAPIRES Add(IMTRequest* request)=0;
- virtual MTAPIRES AddCopy(const IMTRequest* request)=0;
- virtual MTAPIRES Add(IMTRequestArray* array)=0;
- virtual MTAPIRES AddCopy(const IMTRequestArray* array)=0;
- //--- delete & detach
- virtual MTAPIRES Delete(const UINT pos)=0;
- virtual IMTRequest* Detach(const UINT pos)=0;
- //--- update
- virtual MTAPIRES Update(const UINT pos,IMTRequest* request)=0;
- virtual MTAPIRES UpdateCopy(const UINT pos,const IMTRequest* request)=0;
- virtual MTAPIRES Shift(const UINT pos,const int shift)=0;
- //--- data access
- virtual UINT Total(void) const=0;
- virtual IMTRequest* Next(const UINT index) const=0;
- //--- sorting and search
- virtual MTAPIRES Sort(MTSortFunctionPtr sort_function)=0;
- virtual int Search(const void *key,MTSortFunctionPtr sort_function) const=0;
- virtual int SearchGreatOrEq(const void *key,MTSortFunctionPtr sort_function) const=0;
- virtual int SearchGreater(const void *key,MTSortFunctionPtr sort_function) const=0;
- virtual int SearchLessOrEq(const void *key,MTSortFunctionPtr sort_function) const=0;
- virtual int SearchLess(const void *key,MTSortFunctionPtr sort_function) const=0;
- virtual int SearchLeft(const void *key,MTSortFunctionPtr sort_function) const=0;
- virtual int SearchRight(const void *key,MTSortFunctionPtr sort_function) const=0;
- };
- //+------------------------------------------------------------------+
- //| Request events notification interface |
- //+------------------------------------------------------------------+
- class IMTRequestSink
- {
- public:
- virtual void OnRequestAdd(const IMTRequest* /*request*/) { }
- virtual void OnRequestUpdate(const IMTRequest* /*request*/) { }
- virtual void OnRequestDelete(const IMTRequest* /*request*/) { }
- virtual void OnRequestSync(void) { }
- };
- //+------------------------------------------------------------------+
|