| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698 |
- //+------------------------------------------------------------------+
- //| MetaTrader 5 API |
- //| Copyright 2000-2019, MetaQuotes Software Corp. |
- //| http://www.metaquotes.net |
- //+------------------------------------------------------------------+
- #pragma once
- //+------------------------------------------------------------------+
- //| Commission tier config |
- //+------------------------------------------------------------------+
- class IMTConCommTier
- {
- public:
- //--- commission charge mode
- enum EnCommissionMode
- {
- COMM_MONEY_DEPOSIT =0, // in money, in group deposit currency
- COMM_MONEY_SYMBOL_BASE =1, // in money, in symbol base currency
- COMM_MONEY_SYMBOL_PROFIT =2, // in money, in symbol profit currency
- COMM_MONEY_SYMBOL_MARGIN =3, // in money, in symbol margin currency
- COMM_PIPS =4, // in pips
- COMM_PERCENT =5, // in percent
- COMM_MONEY_SPECIFIED =6, // in money, in specified currency
- //--- enumeration borders
- COMM_FIRST =COMM_MONEY_DEPOSIT,
- COMM_LAST =COMM_MONEY_SPECIFIED
- };
- //--- commission type by volume
- enum EnCommissionVolumeType
- {
- COMM_TYPE_DEAL =0, // commission per deal
- COMM_TYPE_VOLUME =1, // commission per volume
- //--- enumeration borders
- COMM_TYPE_FIRST =COMM_TYPE_DEAL,
- COMM_TYPE_LAST =COMM_TYPE_VOLUME
- };
- //--- common methods
- virtual void Release(void)=0;
- virtual MTAPIRES Assign(const IMTConCommTier* group)=0;
- virtual MTAPIRES Clear(void)=0;
- //--- EnCommissionMode
- virtual UINT Mode(void) const=0;
- virtual MTAPIRES Mode(const UINT mode)=0;
- //--- EnCommissionVolumeType
- virtual UINT Type(void) const=0;
- virtual MTAPIRES Type(const UINT type)=0;
- //--- commission value
- virtual double Value(void) const=0;
- virtual MTAPIRES Value(const double value)=0;
- //--- minimal commission value
- virtual double Minimal(void) const=0;
- virtual MTAPIRES Minimal(const double value)=0;
- //--- tier range from
- virtual double RangeFrom(void) const=0;
- virtual MTAPIRES RangeFrom(const double value)=0;
- //--- tier range to
- virtual double RangeTo(void) const=0;
- virtual MTAPIRES RangeTo(const double value)=0;
- //--- commission currency (for Mode==COMM_MONEY_SPECIFIED)
- virtual LPCWSTR Currency(void) const=0;
- virtual MTAPIRES Currency(LPCWSTR currency)=0;
- //--- maximal commission value
- virtual double Maximal(void) const=0;
- virtual MTAPIRES Maximal(const double value)=0;
- };
- //+------------------------------------------------------------------+
- //| Commission config interface |
- //+------------------------------------------------------------------+
- class IMTConCommission
- {
- public:
- //--- commission mode
- enum EnCommMode
- {
- COMM_STANDARD =0, // standard commission
- COMM_AGENT =1, // agent commission
- //--- enumeration borders
- COMM_FIRST =COMM_STANDARD,
- COMM_LAST =COMM_AGENT
- };
- //--- commission range mode
- enum EnCommRangeMode
- {
- COMM_RANGE_VOLUME =0, // range in volumes
- COMM_RANGE_TURNOVER_MONEY =1, // turnover in money
- COMM_RANGE_TURNOVER_VOLUME=2, // turnover in volume
- //--- enumeration borders
- COMM_RANGE_FIRST =COMM_RANGE_VOLUME,
- COMM_RANGE_LAST =COMM_RANGE_TURNOVER_VOLUME
- };
- //--- commission charge modes
- enum EnCommChargeMode
- {
- COMM_CHARGE_DAILY =0, // charge at the end of daily
- COMM_CHARGE_MONTHLY =1, // charge at the end of month
- COMM_CHARGE_INSTANT =2, // charge instantly
- //--- enumeration borders
- COMM_CHARGE_FIRST =COMM_CHARGE_DAILY,
- COMM_CHARGE_LAST =COMM_CHARGE_INSTANT
- };
- //--- deal entry mode
- enum EnCommEntryMode
- {
- COMM_ENTRY_ALL =0, // both in and out
- COMM_ENTRY_IN =1, // in deals
- COMM_ENTRY_OUT =2, // out deals
- //--- enumeration borders
- COMM_ENTRY_FIRST =COMM_ENTRY_ALL,
- COMM_ENTRY_LAST =COMM_ENTRY_OUT
- };
- //--- common methods
- virtual void Release(void)=0;
- virtual MTAPIRES Assign(const IMTConCommission* group)=0;
- virtual MTAPIRES Clear(void)=0;
- //--- commission name
- virtual LPCWSTR Name(void) const=0;
- virtual MTAPIRES Name(LPCWSTR name)=0;
- //--- description
- virtual LPCWSTR Description(void) const=0;
- virtual MTAPIRES Description(LPCWSTR descr)=0;
- //--- symbols path
- virtual LPCWSTR Path(void) const=0;
- virtual MTAPIRES Path(LPCWSTR path)=0;
- //--- EnCommMode
- virtual UINT Mode(void) const=0;
- virtual MTAPIRES Mode(const UINT mode)=0;
- //--- EnCommRangeMode
- virtual UINT RangeMode(void) const=0;
- virtual MTAPIRES RangeMode(const UINT mode)=0;
- //--- EnCommChargeMode
- virtual UINT ChargeMode(void) const=0;
- virtual MTAPIRES ChargeMode(const UINT mode)=0;
- //--- commission tiers
- virtual MTAPIRES TierAdd(IMTConCommTier* tier)=0;
- virtual MTAPIRES TierUpdate(const UINT pos,const IMTConCommTier* tier)=0;
- virtual MTAPIRES TierDelete(const UINT pos)=0;
- virtual MTAPIRES TierClear(void)=0;
- virtual MTAPIRES TierShift(const UINT pos,const int shift)=0;
- virtual UINT TierTotal(void) const=0;
- virtual MTAPIRES TierNext(const UINT pos,IMTConCommTier* tier) const=0;
- //---- turnover calculation currency
- virtual LPCWSTR TurnoverCurrency(void) const=0;
- virtual MTAPIRES TurnoverCurrency(LPCWSTR currency)=0;
- //--- EnCommEntryMode
- virtual UINT EntryMode(void) const=0;
- virtual MTAPIRES EntryMode(const UINT mode)=0;
- };
- //+------------------------------------------------------------------+
- //| Symbols configuration for clients group |
- //+------------------------------------------------------------------+
- class IMTConGroupSymbol
- {
- public:
- //--- Requests Execution flags
- enum EnREFlags
- {
- RE_FLAGS_NONE =0, // none
- RE_FLAGS_ORDER =1, // confirm orders after price confirmation
- //--- enumeration borders
- RE_FLAGS_ALL =RE_FLAGS_ORDER
- };
- //--- Permissions
- enum EnPermissionsFlags
- {
- PERMISSION_NONE =0, // none
- PERMISSION_BOOK =1, // allow books for group
- //--- enumeration borders
- PERMISSION_DEFAULT =PERMISSION_BOOK,
- PERMISSION_ALL =PERMISSION_BOOK
- };
- public:
- //--- common methods
- virtual void Release(void)=0;
- virtual MTAPIRES Assign(const IMTConGroupSymbol* group)=0;
- virtual MTAPIRES Clear(void)=0;
- //--- setup default values for all fields
- virtual MTAPIRES Default(void)=0;
- //--- symbol or symbol groups path
- virtual LPCWSTR Path(void) const=0;
- virtual MTAPIRES Path(LPCWSTR path)=0;
- //--- IMTConSymbol::EnTradeMode
- virtual UINT TradeMode(void) const=0;
- virtual MTAPIRES TradeMode(const UINT mode)=0;
- virtual UINT TradeModeDefault(void) const=0;
- //--- IMTConSymbol::EnCalcMode
- virtual UINT ExecMode(void) const=0;
- virtual MTAPIRES ExecMode(const UINT mode)=0;
- virtual UINT ExecModeDefault(void) const=0;
- //--- IMTConSymbol::EnTradeFillingFlags
- virtual UINT FillFlags(void) const=0;
- virtual MTAPIRES FillFlags(const UINT flags)=0;
- virtual UINT FillFlagsDefault(void) const=0;
- //--- IMTConSymbol::EnTradeExpirationFlags
- virtual UINT ExpirFlags(void) const=0;
- virtual MTAPIRES ExpirFlags(const UINT flags)=0;
- virtual UINT ExpirFlagsDefault(void) const=0;
- //--- spread difference (0 - floating spread)
- virtual INT SpreadDiff(void) const=0;
- virtual MTAPIRES SpreadDiff(const INT spread)=0;
- virtual INT SpreadDiffDefault(void) const=0;
- //--- spread difference balance
- virtual INT SpreadDiffBalance(void) const=0;
- virtual MTAPIRES SpreadDiffBalance(const INT spread)=0;
- virtual INT SpreadDiffBalanceDefault(void) const=0;
- //--- stops level
- virtual INT StopsLevel(void) const=0;
- virtual MTAPIRES StopsLevel(const INT level)=0;
- virtual INT StopsLevelDefault(void) const=0;
- //--- freeze level
- virtual INT FreezeLevel(void) const=0;
- virtual MTAPIRES FreezeLevel(const INT level)=0;
- virtual INT FreezeLevelDefault(void) const=0;
- //--- minimal volume
- virtual UINT64 VolumeMin(void) const=0;
- virtual MTAPIRES VolumeMin(const UINT64 volume)=0;
- virtual UINT64 VolumeMinDefault(void) const=0;
- //--- maximal volume
- virtual UINT64 VolumeMax(void) const=0;
- virtual MTAPIRES VolumeMax(const UINT64 volume)=0;
- virtual UINT64 VolumeMaxDefault(void) const=0;
- //--- volume step
- virtual UINT64 VolumeStep(void) const=0;
- virtual MTAPIRES VolumeStep(const UINT64 volume)=0;
- virtual UINT64 VolumeStepDefault(void) const=0;
- //--- cumulative positions and orders limit
- virtual UINT64 VolumeLimit(void) const=0;
- virtual MTAPIRES VolumeLimit(const UINT64 volume)=0;
- virtual UINT64 VolumeLimitDefault(void) const=0;
- //--- IMTConSymbol::EnMarginFlags
- virtual UINT MarginFlags(void) const=0;
- virtual MTAPIRES MarginFlags(const UINT flags)=0;
- virtual UINT MarginFlagsDefault(void) const=0;
- //--- initial margin
- virtual double MarginInitial(void) const=0;
- virtual MTAPIRES MarginInitial(const double margin)=0;
- virtual double MarginInitialDefault(void) const=0;
- //--- maintenance margin
- virtual double MarginMaintenance(void) const=0;
- virtual MTAPIRES MarginMaintenance(const double margin)=0;
- virtual double MarginMaintenanceDefault(void) const=0;
- //--- long orders and positions margin rate
- virtual double MarginLong(void) const=0;
- virtual MTAPIRES MarginLong(const double margin)=0;
- virtual double MarginLongDefault(void) const=0;
- //--- short orders and positions margin rate
- virtual double MarginShort(void) const=0;
- virtual MTAPIRES MarginShort(const double margin)=0;
- virtual double MarginShortDefault(void) const=0;
- //--- limit orders and positions margin rate
- virtual double MarginLimit(void) const=0;
- virtual MTAPIRES MarginLimit(const double margin)=0;
- virtual double MarginLimitDefault(void) const=0;
- //--- stop orders and positions margin rate
- virtual double MarginStop(void) const=0;
- virtual MTAPIRES MarginStop(const double margin)=0;
- virtual double MarginStopDefault(void) const=0;
- //--- stop-limit orders and positions margin rate
- virtual double MarginStopLimit(void) const=0;
- virtual MTAPIRES MarginStopLimit(const double margin)=0;
- virtual double MarginStopLimitDefault(void) const=0;
- //--- IMTConSymbol::EnSwapMode
- virtual UINT SwapMode(void) const=0;
- virtual MTAPIRES SwapMode(const UINT mode)=0;
- virtual UINT SwapModeDefault(void) const=0;
- //--- long positions swaps rate
- virtual double SwapLong(void) const=0;
- virtual MTAPIRES SwapLong(const double swap)=0;
- virtual double SwapLongDefault(void) const=0;
- //--- short positions swaps rate
- virtual double SwapShort(void) const=0;
- virtual MTAPIRES SwapShort(const double swap)=0;
- virtual double SwapShortDefault(void) const=0;
- //--- 3 time swaps day, EnSwapDay
- virtual int Swap3Day(void) const=0;
- virtual MTAPIRES Swap3Day(const int day)=0;
- virtual int Swap3DayDefault(void) const=0;
- //--- request execution timeout
- virtual UINT RETimeout(void) const=0;
- virtual MTAPIRES RETimeout(const UINT timeout)=0;
- virtual UINT RETimeoutDefault(void) const=0;
- //--- instant execution check mode
- virtual UINT IECheckMode(void) const=0;
- virtual MTAPIRES IECheckMode(const UINT mode)=0;
- virtual UINT IECheckModeDefault(void) const=0;
- //--- instant execution timeout
- virtual UINT IETimeout(void) const=0;
- virtual MTAPIRES IETimeout(const UINT timeout)=0;
- virtual UINT IETimeoutDefault(void) const=0;
- //--- instant execution profit slippage
- virtual UINT IESlipProfit(void) const=0;
- virtual MTAPIRES IESlipProfit(const UINT slippage)=0;
- virtual UINT IESlipProfitDefault(void) const=0;
- //--- instant execution losing slippage
- virtual UINT IESlipLosing(void) const=0;
- virtual MTAPIRES IESlipLosing(const UINT slippage)=0;
- virtual UINT IESlipLosingDefault(void) const=0;
- //--- instant execution max volume
- virtual UINT64 IEVolumeMax(void) const=0;
- virtual MTAPIRES IEVolumeMax(const UINT64 volume)=0;
- virtual UINT64 IEVolumeMaxDefault(void) const=0;
- //--- IMTConSymbol::EnOrderFlags
- virtual UINT OrderFlags(void) const=0;
- virtual MTAPIRES OrderFlags(const UINT flags)=0;
- virtual UINT OrderFlagsDefault(void) const=0;
- //--- orders and positions margin rates
- virtual double MarginRateInitial(const UINT type) const=0;
- virtual MTAPIRES MarginRateInitial(const UINT type,const double margin_rate)=0;
- virtual double MarginRateInitialDefault(void) const=0;
- //--- orders and positions margin rates
- virtual double MarginRateMaintenance(const UINT type) const=0;
- virtual MTAPIRES MarginRateMaintenance(const UINT type,const double margin_rate)=0;
- virtual double MarginRateMaintenanceDefault(void) const=0;
- //--- trade symbol liqudity rate in margin calculation
- virtual double MarginRateLiquidity(void) const=0;
- virtual MTAPIRES MarginRateLiquidity(const double rate)=0;
- virtual double MarginRateLiquidityDefault(void) const=0;
- //--- request execution flags IMTConGroupSymbol::EnREFlags
- virtual UINT REFlags(void) const=0;
- virtual MTAPIRES REFlags(const UINT flags)=0;
- virtual UINT REFlagsDefault(void) const=0;
- //--- hedged positions margin rate
- virtual double MarginHedged(void) const=0;
- virtual MTAPIRES MarginHedged(const double margin)=0;
- virtual double MarginHedgedDefault(void) const=0;
- //--- permissions flags
- virtual UINT PermissionsFlags(void) const=0;
- virtual MTAPIRES PermissionsFlags(const UINT flags)=0;
- //--- margin currency rate
- virtual double MarginRateCurrency(void) const=0;
- virtual MTAPIRES MarginRateCurrency(const double margin_rate)=0;
- virtual double MarginRateCurrencyDefault(void) const=0;
- //--- book depth limit
- virtual UINT BookDepthLimit(void) const=0;
- virtual MTAPIRES BookDepthLimit(const UINT depth)=0;
- //--- instant execution flags
- virtual UINT IEFlags(void) const=0;
- virtual MTAPIRES IEFlags(const UINT flags)=0;
- virtual UINT IEFlagsDefault(void) const=0;
- //--- minimal volume
- virtual UINT64 VolumeMinExt(void) const=0;
- virtual MTAPIRES VolumeMinExt(const UINT64 volume)=0;
- virtual UINT64 VolumeMinExtDefault(void) const=0;
- //--- maximal volume
- virtual UINT64 VolumeMaxExt(void) const=0;
- virtual MTAPIRES VolumeMaxExt(const UINT64 volume)=0;
- virtual UINT64 VolumeMaxExtDefault(void) const=0;
- //--- volume step
- virtual UINT64 VolumeStepExt(void) const=0;
- virtual MTAPIRES VolumeStepExt(const UINT64 volume)=0;
- virtual UINT64 VolumeStepExtDefault(void) const=0;
- //--- cumulative positions and orders limit
- virtual UINT64 VolumeLimitExt(void) const=0;
- virtual MTAPIRES VolumeLimitExt(const UINT64 volume)=0;
- virtual UINT64 VolumeLimitExtDefault(void) const=0;
- //--- instant execution max volume
- virtual UINT64 IEVolumeMaxExt(void) const=0;
- virtual MTAPIRES IEVolumeMaxExt(const UINT64 volume)=0;
- virtual UINT64 IEVolumeMaxExtDefault(void) const=0;
- };
- //+------------------------------------------------------------------+
- //| Group configuration interface |
- //+------------------------------------------------------------------+
- class IMTConGroup
- {
- public:
- //--- group permissions flags
- enum EnPermissionsFlags
- {
- PERMISSION_NONE =0x00000000, // default
- PERMISSION_CERT_CONFIRM =0x00000001, // certificate confirmation neccessary
- PERMISSION_ENABLE_CONNECTION =0x00000002, // clients connections allowed
- PERMISSION_RESET_PASSWORD =0x00000004, // reset password after first logon
- PERMISSION_FORCED_OTP_USAGE =0x00000008, // forced usage OTP
- PERMISSION_RISK_WARNING =0x00000010, // show risk warning window on start
- PERMISSION_REGULATION_PROTECT=0x00000020, // country-specific regulatory protection
- //--- enumeration borders
- PERMISSION_ALL =PERMISSION_CERT_CONFIRM | PERMISSION_ENABLE_CONNECTION | PERMISSION_RESET_PASSWORD|
- PERMISSION_FORCED_OTP_USAGE | PERMISSION_RISK_WARNING | PERMISSION_REGULATION_PROTECT
- };
- //--- authorization mode
- enum EnAuthMode
- {
- AUTH_STANDARD =0, // standard authorization
- AUTH_RSA1024 =1, // RSA1024 certificate
- AUTH_RSA2048 =2, // RSA2048 certificate
- AUTH_RSA_CUSTOM =3, // RSA custom
- //--- enumeration borders
- AUTH_FIRST =AUTH_STANDARD,
- AUTH_LAST =AUTH_RSA2048
- };
- //--- Oen-Time-Password mode
- enum EnAuthOTPMode
- {
- AUTH_OTP_DISABLED =0,
- AUTH_OTP_TOTP_SHA256 =1,
- AUTH_OTP_TOTP_SHA256_WEB =2,
- //--- enumeration borders
- AUTH_OTP_FIRST =AUTH_OTP_DISABLED,
- AUTH_OTP_LAST =AUTH_OTP_TOTP_SHA256_WEB
- };
- //--- reports generation mode
- enum EnReportsMode
- {
- REPORTS_DISABLED =0, // reports disabled
- REPORTS_STANDARD =1, // standard mode
- //--- enumeration borders
- REPORTS_FIRST =REPORTS_DISABLED,
- REPORTS_LAST =REPORTS_STANDARD
- };
- //--- reports generation flags
- enum EnReportsFlags
- {
- REPORTSFLAGS_NONE =0, // none
- REPORTSFLAGS_EMAIL =1, // send reports through email
- REPORTSFLAGS_SUPPORT =2, // send reports copies on support email
- //--- enumeration borders
- REPORTSFLAGS_ALL =REPORTSFLAGS_NONE|REPORTSFLAGS_EMAIL
- };
- //--- news modes
- enum EnNewsMode
- {
- NEWS_MODE_DISABLED =0, // disable news
- NEWS_MODE_HEADERS =1, // enable only news headers
- NEWS_MODE_FULL =2, // enable full news
- //--- enumeration borders
- NEWS_MODE_FIRST =NEWS_MODE_DISABLED,
- NEWS_MODE_LAST =NEWS_MODE_FULL
- };
- //--- internal email modes
- enum EnMailMode
- {
- MAIL_MODE_DISABLED =0, // disable internal email
- MAIL_MODE_FULL =1, // enable internal email
- //--- enumeration borders
- MAIL_MODE_FIRST =MAIL_MODE_DISABLED,
- MAIL_MODE_LAST =MAIL_MODE_FULL
- };
- //--- client history limits
- enum EnHistoryLimit
- {
- TRADE_HISTORY_ALL =0, // unlimited
- TRADE_HISTORY_MONTHS_1 =1, // one month
- TRADE_HISTORY_MONTHS_3 =2, // 3 months
- TRADE_HISTORY_MONTHS_6 =3, // 6 months
- TRADE_HISTORY_YEAR_1 =4, // 1 year
- TRADE_HISTORY_YEAR_2 =5, // 2 years
- TRADE_HISTORY_YEAR_3 =6, // 3 years
- //--- enumeration borders
- TRADE_HISTORY_FIRST =TRADE_HISTORY_ALL,
- TRADE_HISTORY_LAST =TRADE_HISTORY_YEAR_3
- };
- //--- free margin calculation modes
- enum EnFreeMarginMode
- {
- FREE_MARGIN_NOT_USE_PL =0, // don't use floating profit and loss
- FREE_MARGIN_USE_PL =1, // use floating profit and loss
- FREE_MARGIN_PROFIT =2, // use floating profit only
- FREE_MARGIN_LOSS =3, // use floating loss only
- //--- enumeration borders
- FREE_MARGIN_FIRST =FREE_MARGIN_NOT_USE_PL,
- FREE_MARGIN_LAST =FREE_MARGIN_LOSS
- };
- //--- EnTransferMode
- enum EnTransferMode
- {
- TRANSFER_MODE_DISABLED =0,
- TRANSFER_MODE_NAME =1,
- TRANSFER_MODE_GROUP =2,
- TRANSFER_MODE_NAME_GROUP =3,
- //--- enumeration borders
- TRANSFER_MODE_FIRST =TRANSFER_MODE_DISABLED,
- TRANSFER_MODE_LAST =TRANSFER_MODE_NAME_GROUP
- };
- //--- stop-out mode
- enum EnStopOutMode
- {
- STOPOUT_PERCENT =0, // stop-out in percent
- STOPOUT_MONEY =1, // stop-out in money
- //--- enumeration borders
- STOPOUT_FIRST =STOPOUT_PERCENT,
- STOPOUT_LAST =STOPOUT_MONEY
- };
- //--- fixed profit calculation in free margin
- enum EnMarginFreeProfitMode
- {
- FREE_MARGIN_PROFIT_PL =0, // both fixed loss and profit on free margin
- FREE_MARGIN_PROFIT_LOSS =1, // only fixed loss on free margin
- //--- enumeration borders
- FREE_MARGIN_PROFIT_FIRST =FREE_MARGIN_PROFIT_PL,
- FREE_MARGIN_PROFIT_LAST =FREE_MARGIN_PROFIT_LOSS
- };
- //--- group risk management mode
- enum EnMarginMode
- {
- MARGIN_MODE_RETAIL =0, // Retail FX, Retail CFD, Retail Futures
- MARGIN_MODE_EXCHANGE_DISCOUNT=1, // Exchange, margin discount rates based
- MARGIN_MODE_RETAIL_HEDGED =2, // Retail FX, Retail CFD, Retail Futures with hedged positions
- //--- enumeration borders
- MARGIN_MODE_FIRST =MARGIN_MODE_RETAIL,
- MARGIN_MODE_LAST =MARGIN_MODE_RETAIL_HEDGED
- };
- //--- margin calculation flags
- enum EnMarginFlags
- {
- MARGIN_FLAGS_NONE =0, // none
- MARGIN_FLAGS_CLEAR_ACC =1, // clear accumulated profit at end of day
- //--- enumeration borders
- MARGIN_FLAGS_ALL =MARGIN_FLAGS_CLEAR_ACC
- };
- //--- trade rights flags
- enum EnTradeFlags
- {
- TRADEFLAGS_NONE =0x00000000, // none
- TRADEFLAGS_SWAPS =0x00000001, // allow swaps charges
- TRADEFLAGS_TRAILING =0x00000002, // allow trailing stops
- TRADEFLAGS_EXPERTS =0x00000004, // allow expert advisors
- TRADEFLAGS_EXPIRATION =0x00000008, // allow orders expiration
- TRADEFLAGS_SIGNALS_ALL =0x00000010, // allow trade signals
- TRADEFLAGS_SIGNALS_OWN =0x00000020, // allow trade signals only from own server
- TRADEFLAGS_SO_COMPENSATION =0x00000040, // allow negative balance compensation after stop out
- TRADEFLAGS_SO_FULLY_HEDGED =0x00000080, // allow stop out fully hegded accounts
- TRADEFLAGS_FIFO_CLOSE =0x00000100, // allow to close positions by FIFO rule
- //--- enumeration borders
- TRADEFLAGS_DEFAULT =TRADEFLAGS_SWAPS|TRADEFLAGS_TRAILING|TRADEFLAGS_EXPERTS|TRADEFLAGS_EXPIRATION|TRADEFLAGS_SIGNALS_ALL,
- TRADEFLAGS_ALL =TRADEFLAGS_SWAPS|TRADEFLAGS_TRAILING|TRADEFLAGS_EXPERTS|TRADEFLAGS_EXPIRATION|TRADEFLAGS_SIGNALS_ALL|TRADEFLAGS_SIGNALS_OWN|
- TRADEFLAGS_SO_COMPENSATION|TRADEFLAGS_SO_FULLY_HEDGED|TRADEFLAGS_FIFO_CLOSE
- };
- //--- common methods
- virtual void Release(void)=0;
- virtual MTAPIRES Assign(const IMTConGroup* group)=0;
- virtual MTAPIRES Clear(void)=0;
- //--- group name
- virtual LPCWSTR Group(void) const=0;
- virtual MTAPIRES Group(LPCWSTR group)=0;
- //--- group trade server ID
- virtual UINT64 Server(void) const=0;
- virtual MTAPIRES Server(const UINT64 server)=0;
- //--- EnPermissionsFlags
- virtual UINT64 PermissionsFlags(void) const=0;
- virtual MTAPIRES PermissionsFlags(const UINT64 flags)=0;
- //--- EnAuthMode
- virtual UINT AuthMode(void) const=0;
- virtual MTAPIRES AuthMode(const UINT mode)=0;
- //--- minimal password length
- virtual UINT AuthPasswordMin(void) const=0;
- virtual MTAPIRES AuthPasswordMin(const UINT mode)=0;
- //--- company name
- virtual LPCWSTR Company(void) const=0;
- virtual MTAPIRES Company(LPCWSTR company)=0;
- //--- company web page URL
- virtual LPCWSTR CompanyPage(void) const=0;
- virtual MTAPIRES CompanyPage(LPCWSTR page)=0;
- //--- company email
- virtual LPCWSTR CompanyEmail(void) const=0;
- virtual MTAPIRES CompanyEmail(LPCWSTR email)=0;
- //--- company support site URL
- virtual LPCWSTR CompanySupportPage(void) const=0;
- virtual MTAPIRES CompanySupportPage(LPCWSTR page)=0;
- //--- company support email
- virtual LPCWSTR CompanySupportEmail(void) const=0;
- virtual MTAPIRES CompanySupportEmail(LPCWSTR email)=0;
- //--- company catalog name (for reports and email templates)
- virtual LPCWSTR CompanyCatalog(void) const=0;
- virtual MTAPIRES CompanyCatalog(LPCWSTR catalog)=0;
- //--- deposit currency
- virtual LPCWSTR Currency(void) const=0;
- virtual MTAPIRES Currency(LPCWSTR currency)=0;
- virtual UINT CurrencyDigits(void) const=0;
- //--- EnReportsMode
- virtual UINT ReportsMode(void) const=0;
- virtual MTAPIRES ReportsMode(const UINT mode)=0;
- //--- EnReportsFlags
- virtual UINT64 ReportsFlags(void) const=0;
- virtual MTAPIRES ReportsFlags(const UINT64 flags)=0;
- //--- reports SMTP server address:ports
- virtual LPCWSTR ReportsSMTP(void) const=0;
- virtual MTAPIRES ReportsSMTP(LPCWSTR server)=0;
- //--- reports SMTP server login
- virtual LPCWSTR ReportsSMTPLogin(void) const=0;
- virtual MTAPIRES ReportsSMTPLogin(LPCWSTR login)=0;
- //--- reports SMTP server password
- virtual LPCWSTR ReportsSMTPPass(void) const=0;
- virtual MTAPIRES ReportsSMTPPass(LPCWSTR password)=0;
- //--- EnNewsMode
- virtual UINT NewsMode(void) const=0;
- virtual MTAPIRES NewsMode(const UINT mode)=0;
- //--- news category filter string
- virtual LPCWSTR NewsCategory(void) const=0;
- virtual MTAPIRES NewsCategory(LPCWSTR category)=0;
- //--- allowed news languages (Windows API LANGID used)
- virtual MTAPIRES NewsLangAdd(const UINT language)=0;
- virtual MTAPIRES NewsLangUpdate(const UINT pos,const UINT language)=0;
- virtual MTAPIRES NewsLangDelete(const UINT pos)=0;
- virtual MTAPIRES NewsLangClear(void)=0;
- virtual UINT NewsLangTotal(void) const=0;
- virtual UINT NewsLangNext(const UINT pos) const=0;
- //--- EnMailMode
- virtual UINT MailMode(void) const=0;
- virtual MTAPIRES MailMode(const UINT mode)=0;
- //--- EnTradeFlags
- virtual UINT64 TradeFlags(void) const=0;
- virtual MTAPIRES TradeFlags(const UINT64 flags)=0;
- //--- interest rate for free deposit money
- virtual double TradeInterestrate(void) const=0;
- virtual MTAPIRES TradeInterestrate(const double rate)=0;
- //--- virtual credit
- virtual double TradeVirtualCredit(void) const=0;
- virtual MTAPIRES TradeVirtualCredit(const double credit)=0;
- //--- EnFreeMarginMode
- virtual UINT MarginFreeMode(void) const=0;
- virtual MTAPIRES MarginFreeMode(const UINT freemode)=0;
- //--- EnStopOutMode
- virtual UINT MarginSOMode(void) const=0;
- virtual MTAPIRES MarginSOMode(const UINT level)=0;
- //--- Margin Call level value
- virtual double MarginCall(void) const=0;
- virtual MTAPIRES MarginCall(const double level)=0;
- //--- Sto-Out level value
- virtual double MarginStopOut(void) const=0;
- virtual MTAPIRES MarginStopOut(const double level)=0;
- //--- default demo accounts leverage
- virtual UINT DemoLeverage(void) const=0;
- virtual MTAPIRES DemoLeverage(const UINT leverage)=0;
- //--- default demo accounts deposit
- virtual double DemoDeposit(void) const=0;
- virtual MTAPIRES DemoDeposit(const double deposit)=0;
- //--- EnHistoryLimit
- virtual UINT LimitHistory(void) const=0;
- virtual MTAPIRES LimitHistory(const UINT limit)=0;
- //--- max. order limit
- virtual UINT LimitOrders(void) const=0;
- virtual MTAPIRES LimitOrders(const UINT limit)=0;
- //--- max. selected symbols limit
- virtual UINT LimitSymbols(void) const=0;
- virtual MTAPIRES LimitSymbols(const UINT limit)=0;
- //--- commissions
- virtual MTAPIRES CommissionAdd(IMTConCommission* commission)=0;
- virtual MTAPIRES CommissionUpdate(const UINT pos,const IMTConCommission* commission)=0;
- virtual MTAPIRES CommissionDelete(const UINT pos)=0;
- virtual MTAPIRES CommissionClear(void)=0;
- virtual MTAPIRES CommissionShift(const UINT pos,const int shift)=0;
- virtual UINT CommissionTotal(void) const=0;
- virtual MTAPIRES CommissionNext(const UINT pos,IMTConCommission* commission) const=0;
- virtual MTAPIRES CommissionGet(LPCWSTR name,IMTConCommission* commission) const=0;
- //--- groups symbols settings
- virtual MTAPIRES SymbolAdd(IMTConGroupSymbol* symbol)=0;
- virtual MTAPIRES SymbolUpdate(const UINT pos,const IMTConGroupSymbol* symbol)=0;
- virtual MTAPIRES SymbolDelete(const UINT pos)=0;
- virtual MTAPIRES SymbolClear(void)=0;
- virtual MTAPIRES SymbolShift(const UINT pos,const int shift)=0;
- virtual UINT SymbolTotal(void) const=0;
- virtual MTAPIRES SymbolNext(const UINT pos,IMTConGroupSymbol* symbol) const=0;
- virtual MTAPIRES SymbolGet(LPCWSTR name,IMTConGroupSymbol* symbol) const=0;
- //--- margin free profit accounting mode
- virtual UINT MarginFreeProfitMode(void) const=0;
- virtual MTAPIRES MarginFreeProfitMode(const UINT mode)=0;
- //--- group risk management mode - EnMarginMode
- virtual UINT MarginMode(void) const=0;
- virtual MTAPIRES MarginMode(const UINT mode)=0;
- //--- OTP authentication mode - EnAuthOTPMode
- virtual UINT AuthOTPMode(void) const=0;
- virtual MTAPIRES AuthOTPMode(const UINT mode)=0;
- //--- deposit transfer mode - EnTransferMode
- virtual UINT TradeTransferMode(void) const=0;
- virtual MTAPIRES TradeTransferMode(const UINT mode)=0;
- //--- margin calculation flags EnMarginFlags
- virtual UINT64 MarginFlags(void) const=0;
- virtual MTAPIRES MarginFlags(const UINT64 flags)=0;
- //--- max. positions limit
- virtual UINT LimitPositions(void) const=0;
- virtual MTAPIRES LimitPositions(const UINT limit)=0;
- //--- deposit currency digits
- virtual MTAPIRES CurrencyDigitsSet(const UINT currency_digits)=0;
- //--- reports SMTP email account
- virtual LPCWSTR ReportsEmail(void) const=0;
- virtual MTAPIRES ReportsEmail(LPCWSTR email)=0;
- //--- company deposit URL
- virtual LPCWSTR CompanyDepositPage(void) const=0;
- virtual MTAPIRES CompanyDepositPage(LPCWSTR url)=0;
- //--- company deposit URL
- virtual LPCWSTR CompanyWithdrawalPage(void) const=0;
- virtual MTAPIRES CompanyWithdrawalPage(LPCWSTR url)=0;
- //--- demo groups in days, orders and positions will be deleted after this period
- virtual UINT DemoInactivityPeriod(void) const=0;
- virtual MTAPIRES DemoInactivityPeriod(const UINT period)=0;
- };
- //+------------------------------------------------------------------+
- //| Group config events notification interface |
- //+------------------------------------------------------------------+
- class IMTConGroupSink
- {
- public:
- virtual void OnGroupAdd(const IMTConGroup* /*config*/) { }
- virtual void OnGroupUpdate(const IMTConGroup* /*config*/) { }
- virtual void OnGroupDelete(const IMTConGroup* /*config*/) { }
- virtual void OnGroupSync(void) { }
- };
- //+------------------------------------------------------------------+
|