| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- //+------------------------------------------------------------------+
- //| MetaTrader 5 API Server |
- //| Copyright 2000-2019, MetaQuotes Software Corp. |
- //| http://www.metaquotes.net |
- //+------------------------------------------------------------------+
- #pragma once
- //+------------------------------------------------------------------+
- //| Trade account interface |
- //+------------------------------------------------------------------+
- class IMTExecution
- {
- public:
- //--- execution state
- enum EnTradeExecutions
- {
- TE_ORDER_FIRST =0,
- //--- order filling
- TE_ORDER_NEW_REQUEST =0,
- TE_ORDER_NEW =1,
- TE_ORDER_FILL =2,
- TE_ORDER_REJECT =3,
- //--- order modify
- TE_ORDER_MODIFY_REQUEST =4,
- TE_ORDER_MODIFY =5,
- TE_ORDER_MODIFY_REJECT =6,
- //--- order cancel
- TE_ORDER_CANCEL_REQUEST =7,
- TE_ORDER_CANCEL =8,
- TE_ORDER_CANCEL_REJECT =9,
- //--- order others
- TE_ORDER_CHANGE_ID =10,
- TE_ORDER_CLOSE_BY =11,
- TE_ORDER_LAST =TE_ORDER_CLOSE_BY,
- //--- deal modifications
- TE_DEAL_FIRST =50,
- TE_DEAL_CANCEL =50,
- TE_DEAL_CORRECT =51,
- TE_DEAL_EXTERNAL =52,
- TE_DEAL_REPO =53,
- TE_DEAL_COMMISSION =54,
- TE_DEAL_LAST =TE_DEAL_COMMISSION,
- //--- end of session executions
- TE_EOS_FIRST =100,
- TE_EOS_CANCEL_DAILY_ORDERS =100,
- TE_EOS_VARIATION_MARGIN =101,
- TE_EOS_RECALC_DEALS =102,
- TE_EOS_SETTLEMENT =103,
- TE_EOS_TRANSFER =104,
- TE_EOS_CANCEL_ALL_ORDERS =105,
- TE_EOS_ROLLOVER =106,
- TE_EOS_LAST =TE_EOS_ROLLOVER,
- //--- balance operations
- TE_BALANCE_FIRST =150,
- TE_BALANCE_CHANGE =150,
- TE_BALANCE_CORRECT =151,
- TE_BALANCE_UNBLOCK_PROFIT =152,
- TE_BALANCE_LAST =TE_BALANCE_UNBLOCK_PROFIT,
- //--- position modifications
- TE_POSITION_FIRST =200,
- TE_POSITION_CHANGE_ID =201,
- TE_POSITION_LAST =TE_POSITION_CHANGE_ID,
- //--- enumeration borders
- TE_FIRST =TE_ORDER_FIRST,
- TE_LAST =TE_POSITION_LAST
- };
- //--- execution flags
- enum EnFlags
- {
- TE_FLAG_NONE =0x00000000, // none
- TE_FLAG_BROADCAST =0x00000001, // broadcast execution will be send to all trade servers
- //--- enumeration borders
- TE_FLAG_ALL =TE_FLAG_BROADCAST
- };
- //--- common methods
- virtual void Release(void)=0;
- virtual MTAPIRES Assign(const IMTExecution* exec)=0;
- virtual MTAPIRES Clear(void)=0;
- virtual LPCWSTR Print(MTAPISTR& string) const=0;
- //--- id
- virtual UINT64 ID(void) const=0;
- virtual MTAPIRES ID(const UINT64 id)=0;
- //--- execution id in external system (exchange, ECN, etc)
- virtual LPCWSTR ExternalID(void) const=0;
- virtual MTAPIRES ExternalID(LPCWSTR id)=0;
- //--- execution action
- virtual UINT Action(void) const=0;
- virtual MTAPIRES Action(const UINT action)=0;
- //--- datetime
- virtual INT64 Datetime(void) const=0;
- virtual MTAPIRES Datetime(const INT64 datetime)=0;
- //--- login
- virtual UINT64 Login(void) const=0;
- virtual MTAPIRES Login(const UINT64 login)=0;
- //--- group
- virtual LPCWSTR Group(void) const=0;
- virtual MTAPIRES Group(LPCWSTR group)=0;
- //--- flags
- virtual UINT64 Flags(void) const=0;
- virtual MTAPIRES Flags(const UINT64 flags)=0;
- //--- symbol
- virtual LPCWSTR Symbol(void) const=0;
- virtual MTAPIRES Symbol(LPCWSTR symbol)=0;
- //--- digits
- virtual UINT Digits(void) const=0;
- //--- comment
- virtual LPCWSTR Comment(void) const=0;
- virtual MTAPIRES Comment(LPCWSTR comment)=0;
- //--- MT5 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 type IMTOrder::EnOrderType
- virtual UINT OrderType(void) const=0;
- virtual MTAPIRES OrderType(const UINT type)=0;
- //--- order volume
- virtual UINT64 OrderVolume(void) const=0;
- virtual MTAPIRES OrderVolume(const UINT64 volume)=0;
- //--- order price
- virtual double OrderPrice(void) const=0;
- virtual MTAPIRES OrderPrice(const double price)=0;
- //--- order activation flags
- virtual UINT OrderActivationFlags(void) const=0;
- virtual MTAPIRES OrderActivationFlags(const UINT activation)=0;
- //--- deal ticket in external system (exchange, ECN, etc)
- virtual LPCWSTR DealExternalID(void) const=0;
- virtual MTAPIRES DealExternalID(LPCWSTR id)=0;
- //--- deal action IMTDeal::EnDealAction
- virtual UINT DealAction(void) const=0;
- virtual MTAPIRES DealAction(const UINT action)=0;
- //--- deal volume
- virtual UINT64 DealVolume(void) const=0;
- virtual MTAPIRES DealVolume(const UINT64 volume)=0;
- //--- unfilled order volume
- virtual UINT64 DealVolumeRemaind(void) const=0;
- virtual MTAPIRES DealVolumeRemaind(const UINT64 volume)=0;
- //--- deal price
- virtual double DealPrice(void) const=0;
- virtual MTAPIRES DealPrice(const double price)=0;
- //--- digits set
- virtual MTAPIRES Digits(const UINT digits)=0;
- //--- external system trade account (exchange, ECN, etc)
- virtual LPCWSTR ExternalAccount(void) const=0;
- virtual MTAPIRES ExternalAccount(LPCWSTR account)=0;
- //--- order trigger price
- virtual double OrderPriceTrigger(void) const=0;
- virtual MTAPIRES OrderPriceTrigger(const double price)=0;
- //--- EnOrderTime
- virtual UINT OrderTypeTime(void) const=0;
- virtual MTAPIRES OrderTypeTime(const UINT type)=0;
- //--- order expiration
- virtual INT64 OrderTimeExpiration(void) const=0;
- virtual MTAPIRES OrderTimeExpiration(const INT64 time)=0;
- //--- EnOrderFilling
- virtual UINT OrderTypeFill(void) const=0;
- virtual MTAPIRES OrderTypeFill(const UINT type)=0;
- //--- session start datetime
- virtual INT64 EOSSessionStart(void) const=0;
- virtual MTAPIRES EOSSessionStart(const INT64 start)=0;
- //--- session end datetime
- virtual INT64 EOSSessionEnd(void) const=0;
- virtual MTAPIRES EOSSessionEnd(const INT64 end)=0;
- //--- session settlement price
- virtual double EOSPriceSettlement(void) const=0;
- virtual MTAPIRES EOSPriceSettlement(const double price)=0;
- //--- profit conversion price
- virtual double EOSProfitRateBuy(void) const=0;
- virtual double EOSProfitRateSell(void) const=0;
- virtual MTAPIRES EOSProfitRate(const double rate_buy,const double rate_sell)=0;
- //--- tick value
- virtual double EOSTickValue(void) const=0;
- virtual MTAPIRES EOSTickValue(const double value)=0;
- //--- order price SL
- virtual double OrderPriceSL(void) const=0;
- virtual MTAPIRES OrderPriceSL(const double price)=0;
- //--- order price TP
- virtual double OrderPriceTP(void) const=0;
- virtual MTAPIRES OrderPriceTP(const double price)=0;
- //--- execution price on gateway
- virtual double PriceGateway(void) const=0;
- virtual MTAPIRES PriceGateway(const double price)=0;
- //--- order activation flags
- virtual UINT OrderActivationMode(void) const=0;
- virtual MTAPIRES OrderActivationMode(const UINT activation)=0;
- //--- deal commission
- virtual double DealCommission(void) const=0;
- virtual MTAPIRES DealCommission(const double comm)=0;
- //--- datetime in msc since 1970.01.01
- virtual INT64 DatetimeMsc(void) const=0;
- virtual MTAPIRES DatetimeMsc(const INT64 datetime)=0;
- //--- symbol field new value
- virtual LPCWSTR SymbolNew(void) const=0;
- virtual MTAPIRES SymbolNew(LPCWSTR symbol)=0;
- //--- internal data for API usage
- 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;
- //--- deal storage
- virtual double DealStorage(void) const=0;
- virtual MTAPIRES DealStorage(const double storage)=0;
- //--- rollover values
- virtual double EOSRolloverValueLong(void) const=0;
- virtual double EOSRolloverValueShort(void) const=0;
- virtual MTAPIRES EOSRolloverValue(const double value_long,const double value_short)=0;
- //--- deal reason
- virtual UINT DealReason(void) const=0;
- virtual MTAPIRES DealReason(const UINT reason)=0;
- //--- gateway id
- virtual UINT64 GatewayID(void) const=0;
- virtual MTAPIRES GatewayID(const UINT64 gateway_id)=0;
- //--- MT5 position ticket
- virtual UINT64 Position(void) const=0;
- virtual MTAPIRES Position(const UINT64 position)=0;
- //--- MT5 position ticket
- 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;
- //--- external trade system return code
- virtual int ExternalRetcode(void) const=0;
- virtual MTAPIRES ExternalRetcode(const int retcode)=0;
- //--- order volume with extendede accuracy
- virtual UINT64 OrderVolumeExt(void) const=0;
- virtual MTAPIRES OrderVolumeExt(const UINT64 volume)=0;
- //--- deal volume with extendede accuracy
- virtual UINT64 DealVolumeExt(void) const=0;
- virtual MTAPIRES DealVolumeExt(const UINT64 volume)=0;
- //--- unfilled order volume with extendede accuracy
- virtual UINT64 DealVolumeRemaindExt(void) const=0;
- virtual MTAPIRES DealVolumeRemaindExt(const UINT64 volume)=0;
- };
- //+------------------------------------------------------------------+
|