MT5APIConfigGroup.h 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698
  1. //+------------------------------------------------------------------+
  2. //| MetaTrader 5 API |
  3. //| Copyright 2000-2019, MetaQuotes Software Corp. |
  4. //| http://www.metaquotes.net |
  5. //+------------------------------------------------------------------+
  6. #pragma once
  7. //+------------------------------------------------------------------+
  8. //| Commission tier config |
  9. //+------------------------------------------------------------------+
  10. class IMTConCommTier
  11. {
  12. public:
  13. //--- commission charge mode
  14. enum EnCommissionMode
  15. {
  16. COMM_MONEY_DEPOSIT =0, // in money, in group deposit currency
  17. COMM_MONEY_SYMBOL_BASE =1, // in money, in symbol base currency
  18. COMM_MONEY_SYMBOL_PROFIT =2, // in money, in symbol profit currency
  19. COMM_MONEY_SYMBOL_MARGIN =3, // in money, in symbol margin currency
  20. COMM_PIPS =4, // in pips
  21. COMM_PERCENT =5, // in percent
  22. COMM_MONEY_SPECIFIED =6, // in money, in specified currency
  23. //--- enumeration borders
  24. COMM_FIRST =COMM_MONEY_DEPOSIT,
  25. COMM_LAST =COMM_MONEY_SPECIFIED
  26. };
  27. //--- commission type by volume
  28. enum EnCommissionVolumeType
  29. {
  30. COMM_TYPE_DEAL =0, // commission per deal
  31. COMM_TYPE_VOLUME =1, // commission per volume
  32. //--- enumeration borders
  33. COMM_TYPE_FIRST =COMM_TYPE_DEAL,
  34. COMM_TYPE_LAST =COMM_TYPE_VOLUME
  35. };
  36. //--- common methods
  37. virtual void Release(void)=0;
  38. virtual MTAPIRES Assign(const IMTConCommTier* group)=0;
  39. virtual MTAPIRES Clear(void)=0;
  40. //--- EnCommissionMode
  41. virtual UINT Mode(void) const=0;
  42. virtual MTAPIRES Mode(const UINT mode)=0;
  43. //--- EnCommissionVolumeType
  44. virtual UINT Type(void) const=0;
  45. virtual MTAPIRES Type(const UINT type)=0;
  46. //--- commission value
  47. virtual double Value(void) const=0;
  48. virtual MTAPIRES Value(const double value)=0;
  49. //--- minimal commission value
  50. virtual double Minimal(void) const=0;
  51. virtual MTAPIRES Minimal(const double value)=0;
  52. //--- tier range from
  53. virtual double RangeFrom(void) const=0;
  54. virtual MTAPIRES RangeFrom(const double value)=0;
  55. //--- tier range to
  56. virtual double RangeTo(void) const=0;
  57. virtual MTAPIRES RangeTo(const double value)=0;
  58. //--- commission currency (for Mode==COMM_MONEY_SPECIFIED)
  59. virtual LPCWSTR Currency(void) const=0;
  60. virtual MTAPIRES Currency(LPCWSTR currency)=0;
  61. //--- maximal commission value
  62. virtual double Maximal(void) const=0;
  63. virtual MTAPIRES Maximal(const double value)=0;
  64. };
  65. //+------------------------------------------------------------------+
  66. //| Commission config interface |
  67. //+------------------------------------------------------------------+
  68. class IMTConCommission
  69. {
  70. public:
  71. //--- commission mode
  72. enum EnCommMode
  73. {
  74. COMM_STANDARD =0, // standard commission
  75. COMM_AGENT =1, // agent commission
  76. //--- enumeration borders
  77. COMM_FIRST =COMM_STANDARD,
  78. COMM_LAST =COMM_AGENT
  79. };
  80. //--- commission range mode
  81. enum EnCommRangeMode
  82. {
  83. COMM_RANGE_VOLUME =0, // range in volumes
  84. COMM_RANGE_TURNOVER_MONEY =1, // turnover in money
  85. COMM_RANGE_TURNOVER_VOLUME=2, // turnover in volume
  86. //--- enumeration borders
  87. COMM_RANGE_FIRST =COMM_RANGE_VOLUME,
  88. COMM_RANGE_LAST =COMM_RANGE_TURNOVER_VOLUME
  89. };
  90. //--- commission charge modes
  91. enum EnCommChargeMode
  92. {
  93. COMM_CHARGE_DAILY =0, // charge at the end of daily
  94. COMM_CHARGE_MONTHLY =1, // charge at the end of month
  95. COMM_CHARGE_INSTANT =2, // charge instantly
  96. //--- enumeration borders
  97. COMM_CHARGE_FIRST =COMM_CHARGE_DAILY,
  98. COMM_CHARGE_LAST =COMM_CHARGE_INSTANT
  99. };
  100. //--- deal entry mode
  101. enum EnCommEntryMode
  102. {
  103. COMM_ENTRY_ALL =0, // both in and out
  104. COMM_ENTRY_IN =1, // in deals
  105. COMM_ENTRY_OUT =2, // out deals
  106. //--- enumeration borders
  107. COMM_ENTRY_FIRST =COMM_ENTRY_ALL,
  108. COMM_ENTRY_LAST =COMM_ENTRY_OUT
  109. };
  110. //--- common methods
  111. virtual void Release(void)=0;
  112. virtual MTAPIRES Assign(const IMTConCommission* group)=0;
  113. virtual MTAPIRES Clear(void)=0;
  114. //--- commission name
  115. virtual LPCWSTR Name(void) const=0;
  116. virtual MTAPIRES Name(LPCWSTR name)=0;
  117. //--- description
  118. virtual LPCWSTR Description(void) const=0;
  119. virtual MTAPIRES Description(LPCWSTR descr)=0;
  120. //--- symbols path
  121. virtual LPCWSTR Path(void) const=0;
  122. virtual MTAPIRES Path(LPCWSTR path)=0;
  123. //--- EnCommMode
  124. virtual UINT Mode(void) const=0;
  125. virtual MTAPIRES Mode(const UINT mode)=0;
  126. //--- EnCommRangeMode
  127. virtual UINT RangeMode(void) const=0;
  128. virtual MTAPIRES RangeMode(const UINT mode)=0;
  129. //--- EnCommChargeMode
  130. virtual UINT ChargeMode(void) const=0;
  131. virtual MTAPIRES ChargeMode(const UINT mode)=0;
  132. //--- commission tiers
  133. virtual MTAPIRES TierAdd(IMTConCommTier* tier)=0;
  134. virtual MTAPIRES TierUpdate(const UINT pos,const IMTConCommTier* tier)=0;
  135. virtual MTAPIRES TierDelete(const UINT pos)=0;
  136. virtual MTAPIRES TierClear(void)=0;
  137. virtual MTAPIRES TierShift(const UINT pos,const int shift)=0;
  138. virtual UINT TierTotal(void) const=0;
  139. virtual MTAPIRES TierNext(const UINT pos,IMTConCommTier* tier) const=0;
  140. //---- turnover calculation currency
  141. virtual LPCWSTR TurnoverCurrency(void) const=0;
  142. virtual MTAPIRES TurnoverCurrency(LPCWSTR currency)=0;
  143. //--- EnCommEntryMode
  144. virtual UINT EntryMode(void) const=0;
  145. virtual MTAPIRES EntryMode(const UINT mode)=0;
  146. };
  147. //+------------------------------------------------------------------+
  148. //| Symbols configuration for clients group |
  149. //+------------------------------------------------------------------+
  150. class IMTConGroupSymbol
  151. {
  152. public:
  153. //--- Requests Execution flags
  154. enum EnREFlags
  155. {
  156. RE_FLAGS_NONE =0, // none
  157. RE_FLAGS_ORDER =1, // confirm orders after price confirmation
  158. //--- enumeration borders
  159. RE_FLAGS_ALL =RE_FLAGS_ORDER
  160. };
  161. //--- Permissions
  162. enum EnPermissionsFlags
  163. {
  164. PERMISSION_NONE =0, // none
  165. PERMISSION_BOOK =1, // allow books for group
  166. //--- enumeration borders
  167. PERMISSION_DEFAULT =PERMISSION_BOOK,
  168. PERMISSION_ALL =PERMISSION_BOOK
  169. };
  170. public:
  171. //--- common methods
  172. virtual void Release(void)=0;
  173. virtual MTAPIRES Assign(const IMTConGroupSymbol* group)=0;
  174. virtual MTAPIRES Clear(void)=0;
  175. //--- setup default values for all fields
  176. virtual MTAPIRES Default(void)=0;
  177. //--- symbol or symbol groups path
  178. virtual LPCWSTR Path(void) const=0;
  179. virtual MTAPIRES Path(LPCWSTR path)=0;
  180. //--- IMTConSymbol::EnTradeMode
  181. virtual UINT TradeMode(void) const=0;
  182. virtual MTAPIRES TradeMode(const UINT mode)=0;
  183. virtual UINT TradeModeDefault(void) const=0;
  184. //--- IMTConSymbol::EnCalcMode
  185. virtual UINT ExecMode(void) const=0;
  186. virtual MTAPIRES ExecMode(const UINT mode)=0;
  187. virtual UINT ExecModeDefault(void) const=0;
  188. //--- IMTConSymbol::EnTradeFillingFlags
  189. virtual UINT FillFlags(void) const=0;
  190. virtual MTAPIRES FillFlags(const UINT flags)=0;
  191. virtual UINT FillFlagsDefault(void) const=0;
  192. //--- IMTConSymbol::EnTradeExpirationFlags
  193. virtual UINT ExpirFlags(void) const=0;
  194. virtual MTAPIRES ExpirFlags(const UINT flags)=0;
  195. virtual UINT ExpirFlagsDefault(void) const=0;
  196. //--- spread difference (0 - floating spread)
  197. virtual INT SpreadDiff(void) const=0;
  198. virtual MTAPIRES SpreadDiff(const INT spread)=0;
  199. virtual INT SpreadDiffDefault(void) const=0;
  200. //--- spread difference balance
  201. virtual INT SpreadDiffBalance(void) const=0;
  202. virtual MTAPIRES SpreadDiffBalance(const INT spread)=0;
  203. virtual INT SpreadDiffBalanceDefault(void) const=0;
  204. //--- stops level
  205. virtual INT StopsLevel(void) const=0;
  206. virtual MTAPIRES StopsLevel(const INT level)=0;
  207. virtual INT StopsLevelDefault(void) const=0;
  208. //--- freeze level
  209. virtual INT FreezeLevel(void) const=0;
  210. virtual MTAPIRES FreezeLevel(const INT level)=0;
  211. virtual INT FreezeLevelDefault(void) const=0;
  212. //--- minimal volume
  213. virtual UINT64 VolumeMin(void) const=0;
  214. virtual MTAPIRES VolumeMin(const UINT64 volume)=0;
  215. virtual UINT64 VolumeMinDefault(void) const=0;
  216. //--- maximal volume
  217. virtual UINT64 VolumeMax(void) const=0;
  218. virtual MTAPIRES VolumeMax(const UINT64 volume)=0;
  219. virtual UINT64 VolumeMaxDefault(void) const=0;
  220. //--- volume step
  221. virtual UINT64 VolumeStep(void) const=0;
  222. virtual MTAPIRES VolumeStep(const UINT64 volume)=0;
  223. virtual UINT64 VolumeStepDefault(void) const=0;
  224. //--- cumulative positions and orders limit
  225. virtual UINT64 VolumeLimit(void) const=0;
  226. virtual MTAPIRES VolumeLimit(const UINT64 volume)=0;
  227. virtual UINT64 VolumeLimitDefault(void) const=0;
  228. //--- IMTConSymbol::EnMarginFlags
  229. virtual UINT MarginFlags(void) const=0;
  230. virtual MTAPIRES MarginFlags(const UINT flags)=0;
  231. virtual UINT MarginFlagsDefault(void) const=0;
  232. //--- initial margin
  233. virtual double MarginInitial(void) const=0;
  234. virtual MTAPIRES MarginInitial(const double margin)=0;
  235. virtual double MarginInitialDefault(void) const=0;
  236. //--- maintenance margin
  237. virtual double MarginMaintenance(void) const=0;
  238. virtual MTAPIRES MarginMaintenance(const double margin)=0;
  239. virtual double MarginMaintenanceDefault(void) const=0;
  240. //--- long orders and positions margin rate
  241. virtual double MarginLong(void) const=0;
  242. virtual MTAPIRES MarginLong(const double margin)=0;
  243. virtual double MarginLongDefault(void) const=0;
  244. //--- short orders and positions margin rate
  245. virtual double MarginShort(void) const=0;
  246. virtual MTAPIRES MarginShort(const double margin)=0;
  247. virtual double MarginShortDefault(void) const=0;
  248. //--- limit orders and positions margin rate
  249. virtual double MarginLimit(void) const=0;
  250. virtual MTAPIRES MarginLimit(const double margin)=0;
  251. virtual double MarginLimitDefault(void) const=0;
  252. //--- stop orders and positions margin rate
  253. virtual double MarginStop(void) const=0;
  254. virtual MTAPIRES MarginStop(const double margin)=0;
  255. virtual double MarginStopDefault(void) const=0;
  256. //--- stop-limit orders and positions margin rate
  257. virtual double MarginStopLimit(void) const=0;
  258. virtual MTAPIRES MarginStopLimit(const double margin)=0;
  259. virtual double MarginStopLimitDefault(void) const=0;
  260. //--- IMTConSymbol::EnSwapMode
  261. virtual UINT SwapMode(void) const=0;
  262. virtual MTAPIRES SwapMode(const UINT mode)=0;
  263. virtual UINT SwapModeDefault(void) const=0;
  264. //--- long positions swaps rate
  265. virtual double SwapLong(void) const=0;
  266. virtual MTAPIRES SwapLong(const double swap)=0;
  267. virtual double SwapLongDefault(void) const=0;
  268. //--- short positions swaps rate
  269. virtual double SwapShort(void) const=0;
  270. virtual MTAPIRES SwapShort(const double swap)=0;
  271. virtual double SwapShortDefault(void) const=0;
  272. //--- 3 time swaps day, EnSwapDay
  273. virtual int Swap3Day(void) const=0;
  274. virtual MTAPIRES Swap3Day(const int day)=0;
  275. virtual int Swap3DayDefault(void) const=0;
  276. //--- request execution timeout
  277. virtual UINT RETimeout(void) const=0;
  278. virtual MTAPIRES RETimeout(const UINT timeout)=0;
  279. virtual UINT RETimeoutDefault(void) const=0;
  280. //--- instant execution check mode
  281. virtual UINT IECheckMode(void) const=0;
  282. virtual MTAPIRES IECheckMode(const UINT mode)=0;
  283. virtual UINT IECheckModeDefault(void) const=0;
  284. //--- instant execution timeout
  285. virtual UINT IETimeout(void) const=0;
  286. virtual MTAPIRES IETimeout(const UINT timeout)=0;
  287. virtual UINT IETimeoutDefault(void) const=0;
  288. //--- instant execution profit slippage
  289. virtual UINT IESlipProfit(void) const=0;
  290. virtual MTAPIRES IESlipProfit(const UINT slippage)=0;
  291. virtual UINT IESlipProfitDefault(void) const=0;
  292. //--- instant execution losing slippage
  293. virtual UINT IESlipLosing(void) const=0;
  294. virtual MTAPIRES IESlipLosing(const UINT slippage)=0;
  295. virtual UINT IESlipLosingDefault(void) const=0;
  296. //--- instant execution max volume
  297. virtual UINT64 IEVolumeMax(void) const=0;
  298. virtual MTAPIRES IEVolumeMax(const UINT64 volume)=0;
  299. virtual UINT64 IEVolumeMaxDefault(void) const=0;
  300. //--- IMTConSymbol::EnOrderFlags
  301. virtual UINT OrderFlags(void) const=0;
  302. virtual MTAPIRES OrderFlags(const UINT flags)=0;
  303. virtual UINT OrderFlagsDefault(void) const=0;
  304. //--- orders and positions margin rates
  305. virtual double MarginRateInitial(const UINT type) const=0;
  306. virtual MTAPIRES MarginRateInitial(const UINT type,const double margin_rate)=0;
  307. virtual double MarginRateInitialDefault(void) const=0;
  308. //--- orders and positions margin rates
  309. virtual double MarginRateMaintenance(const UINT type) const=0;
  310. virtual MTAPIRES MarginRateMaintenance(const UINT type,const double margin_rate)=0;
  311. virtual double MarginRateMaintenanceDefault(void) const=0;
  312. //--- trade symbol liqudity rate in margin calculation
  313. virtual double MarginRateLiquidity(void) const=0;
  314. virtual MTAPIRES MarginRateLiquidity(const double rate)=0;
  315. virtual double MarginRateLiquidityDefault(void) const=0;
  316. //--- request execution flags IMTConGroupSymbol::EnREFlags
  317. virtual UINT REFlags(void) const=0;
  318. virtual MTAPIRES REFlags(const UINT flags)=0;
  319. virtual UINT REFlagsDefault(void) const=0;
  320. //--- hedged positions margin rate
  321. virtual double MarginHedged(void) const=0;
  322. virtual MTAPIRES MarginHedged(const double margin)=0;
  323. virtual double MarginHedgedDefault(void) const=0;
  324. //--- permissions flags
  325. virtual UINT PermissionsFlags(void) const=0;
  326. virtual MTAPIRES PermissionsFlags(const UINT flags)=0;
  327. //--- margin currency rate
  328. virtual double MarginRateCurrency(void) const=0;
  329. virtual MTAPIRES MarginRateCurrency(const double margin_rate)=0;
  330. virtual double MarginRateCurrencyDefault(void) const=0;
  331. //--- book depth limit
  332. virtual UINT BookDepthLimit(void) const=0;
  333. virtual MTAPIRES BookDepthLimit(const UINT depth)=0;
  334. //--- instant execution flags
  335. virtual UINT IEFlags(void) const=0;
  336. virtual MTAPIRES IEFlags(const UINT flags)=0;
  337. virtual UINT IEFlagsDefault(void) const=0;
  338. //--- minimal volume
  339. virtual UINT64 VolumeMinExt(void) const=0;
  340. virtual MTAPIRES VolumeMinExt(const UINT64 volume)=0;
  341. virtual UINT64 VolumeMinExtDefault(void) const=0;
  342. //--- maximal volume
  343. virtual UINT64 VolumeMaxExt(void) const=0;
  344. virtual MTAPIRES VolumeMaxExt(const UINT64 volume)=0;
  345. virtual UINT64 VolumeMaxExtDefault(void) const=0;
  346. //--- volume step
  347. virtual UINT64 VolumeStepExt(void) const=0;
  348. virtual MTAPIRES VolumeStepExt(const UINT64 volume)=0;
  349. virtual UINT64 VolumeStepExtDefault(void) const=0;
  350. //--- cumulative positions and orders limit
  351. virtual UINT64 VolumeLimitExt(void) const=0;
  352. virtual MTAPIRES VolumeLimitExt(const UINT64 volume)=0;
  353. virtual UINT64 VolumeLimitExtDefault(void) const=0;
  354. //--- instant execution max volume
  355. virtual UINT64 IEVolumeMaxExt(void) const=0;
  356. virtual MTAPIRES IEVolumeMaxExt(const UINT64 volume)=0;
  357. virtual UINT64 IEVolumeMaxExtDefault(void) const=0;
  358. };
  359. //+------------------------------------------------------------------+
  360. //| Group configuration interface |
  361. //+------------------------------------------------------------------+
  362. class IMTConGroup
  363. {
  364. public:
  365. //--- group permissions flags
  366. enum EnPermissionsFlags
  367. {
  368. PERMISSION_NONE =0x00000000, // default
  369. PERMISSION_CERT_CONFIRM =0x00000001, // certificate confirmation neccessary
  370. PERMISSION_ENABLE_CONNECTION =0x00000002, // clients connections allowed
  371. PERMISSION_RESET_PASSWORD =0x00000004, // reset password after first logon
  372. PERMISSION_FORCED_OTP_USAGE =0x00000008, // forced usage OTP
  373. PERMISSION_RISK_WARNING =0x00000010, // show risk warning window on start
  374. PERMISSION_REGULATION_PROTECT=0x00000020, // country-specific regulatory protection
  375. //--- enumeration borders
  376. PERMISSION_ALL =PERMISSION_CERT_CONFIRM | PERMISSION_ENABLE_CONNECTION | PERMISSION_RESET_PASSWORD|
  377. PERMISSION_FORCED_OTP_USAGE | PERMISSION_RISK_WARNING | PERMISSION_REGULATION_PROTECT
  378. };
  379. //--- authorization mode
  380. enum EnAuthMode
  381. {
  382. AUTH_STANDARD =0, // standard authorization
  383. AUTH_RSA1024 =1, // RSA1024 certificate
  384. AUTH_RSA2048 =2, // RSA2048 certificate
  385. AUTH_RSA_CUSTOM =3, // RSA custom
  386. //--- enumeration borders
  387. AUTH_FIRST =AUTH_STANDARD,
  388. AUTH_LAST =AUTH_RSA2048
  389. };
  390. //--- Oen-Time-Password mode
  391. enum EnAuthOTPMode
  392. {
  393. AUTH_OTP_DISABLED =0,
  394. AUTH_OTP_TOTP_SHA256 =1,
  395. AUTH_OTP_TOTP_SHA256_WEB =2,
  396. //--- enumeration borders
  397. AUTH_OTP_FIRST =AUTH_OTP_DISABLED,
  398. AUTH_OTP_LAST =AUTH_OTP_TOTP_SHA256_WEB
  399. };
  400. //--- reports generation mode
  401. enum EnReportsMode
  402. {
  403. REPORTS_DISABLED =0, // reports disabled
  404. REPORTS_STANDARD =1, // standard mode
  405. //--- enumeration borders
  406. REPORTS_FIRST =REPORTS_DISABLED,
  407. REPORTS_LAST =REPORTS_STANDARD
  408. };
  409. //--- reports generation flags
  410. enum EnReportsFlags
  411. {
  412. REPORTSFLAGS_NONE =0, // none
  413. REPORTSFLAGS_EMAIL =1, // send reports through email
  414. REPORTSFLAGS_SUPPORT =2, // send reports copies on support email
  415. //--- enumeration borders
  416. REPORTSFLAGS_ALL =REPORTSFLAGS_NONE|REPORTSFLAGS_EMAIL
  417. };
  418. //--- news modes
  419. enum EnNewsMode
  420. {
  421. NEWS_MODE_DISABLED =0, // disable news
  422. NEWS_MODE_HEADERS =1, // enable only news headers
  423. NEWS_MODE_FULL =2, // enable full news
  424. //--- enumeration borders
  425. NEWS_MODE_FIRST =NEWS_MODE_DISABLED,
  426. NEWS_MODE_LAST =NEWS_MODE_FULL
  427. };
  428. //--- internal email modes
  429. enum EnMailMode
  430. {
  431. MAIL_MODE_DISABLED =0, // disable internal email
  432. MAIL_MODE_FULL =1, // enable internal email
  433. //--- enumeration borders
  434. MAIL_MODE_FIRST =MAIL_MODE_DISABLED,
  435. MAIL_MODE_LAST =MAIL_MODE_FULL
  436. };
  437. //--- client history limits
  438. enum EnHistoryLimit
  439. {
  440. TRADE_HISTORY_ALL =0, // unlimited
  441. TRADE_HISTORY_MONTHS_1 =1, // one month
  442. TRADE_HISTORY_MONTHS_3 =2, // 3 months
  443. TRADE_HISTORY_MONTHS_6 =3, // 6 months
  444. TRADE_HISTORY_YEAR_1 =4, // 1 year
  445. TRADE_HISTORY_YEAR_2 =5, // 2 years
  446. TRADE_HISTORY_YEAR_3 =6, // 3 years
  447. //--- enumeration borders
  448. TRADE_HISTORY_FIRST =TRADE_HISTORY_ALL,
  449. TRADE_HISTORY_LAST =TRADE_HISTORY_YEAR_3
  450. };
  451. //--- free margin calculation modes
  452. enum EnFreeMarginMode
  453. {
  454. FREE_MARGIN_NOT_USE_PL =0, // don't use floating profit and loss
  455. FREE_MARGIN_USE_PL =1, // use floating profit and loss
  456. FREE_MARGIN_PROFIT =2, // use floating profit only
  457. FREE_MARGIN_LOSS =3, // use floating loss only
  458. //--- enumeration borders
  459. FREE_MARGIN_FIRST =FREE_MARGIN_NOT_USE_PL,
  460. FREE_MARGIN_LAST =FREE_MARGIN_LOSS
  461. };
  462. //--- EnTransferMode
  463. enum EnTransferMode
  464. {
  465. TRANSFER_MODE_DISABLED =0,
  466. TRANSFER_MODE_NAME =1,
  467. TRANSFER_MODE_GROUP =2,
  468. TRANSFER_MODE_NAME_GROUP =3,
  469. //--- enumeration borders
  470. TRANSFER_MODE_FIRST =TRANSFER_MODE_DISABLED,
  471. TRANSFER_MODE_LAST =TRANSFER_MODE_NAME_GROUP
  472. };
  473. //--- stop-out mode
  474. enum EnStopOutMode
  475. {
  476. STOPOUT_PERCENT =0, // stop-out in percent
  477. STOPOUT_MONEY =1, // stop-out in money
  478. //--- enumeration borders
  479. STOPOUT_FIRST =STOPOUT_PERCENT,
  480. STOPOUT_LAST =STOPOUT_MONEY
  481. };
  482. //--- fixed profit calculation in free margin
  483. enum EnMarginFreeProfitMode
  484. {
  485. FREE_MARGIN_PROFIT_PL =0, // both fixed loss and profit on free margin
  486. FREE_MARGIN_PROFIT_LOSS =1, // only fixed loss on free margin
  487. //--- enumeration borders
  488. FREE_MARGIN_PROFIT_FIRST =FREE_MARGIN_PROFIT_PL,
  489. FREE_MARGIN_PROFIT_LAST =FREE_MARGIN_PROFIT_LOSS
  490. };
  491. //--- group risk management mode
  492. enum EnMarginMode
  493. {
  494. MARGIN_MODE_RETAIL =0, // Retail FX, Retail CFD, Retail Futures
  495. MARGIN_MODE_EXCHANGE_DISCOUNT=1, // Exchange, margin discount rates based
  496. MARGIN_MODE_RETAIL_HEDGED =2, // Retail FX, Retail CFD, Retail Futures with hedged positions
  497. //--- enumeration borders
  498. MARGIN_MODE_FIRST =MARGIN_MODE_RETAIL,
  499. MARGIN_MODE_LAST =MARGIN_MODE_RETAIL_HEDGED
  500. };
  501. //--- margin calculation flags
  502. enum EnMarginFlags
  503. {
  504. MARGIN_FLAGS_NONE =0, // none
  505. MARGIN_FLAGS_CLEAR_ACC =1, // clear accumulated profit at end of day
  506. //--- enumeration borders
  507. MARGIN_FLAGS_ALL =MARGIN_FLAGS_CLEAR_ACC
  508. };
  509. //--- trade rights flags
  510. enum EnTradeFlags
  511. {
  512. TRADEFLAGS_NONE =0x00000000, // none
  513. TRADEFLAGS_SWAPS =0x00000001, // allow swaps charges
  514. TRADEFLAGS_TRAILING =0x00000002, // allow trailing stops
  515. TRADEFLAGS_EXPERTS =0x00000004, // allow expert advisors
  516. TRADEFLAGS_EXPIRATION =0x00000008, // allow orders expiration
  517. TRADEFLAGS_SIGNALS_ALL =0x00000010, // allow trade signals
  518. TRADEFLAGS_SIGNALS_OWN =0x00000020, // allow trade signals only from own server
  519. TRADEFLAGS_SO_COMPENSATION =0x00000040, // allow negative balance compensation after stop out
  520. TRADEFLAGS_SO_FULLY_HEDGED =0x00000080, // allow stop out fully hegded accounts
  521. TRADEFLAGS_FIFO_CLOSE =0x00000100, // allow to close positions by FIFO rule
  522. //--- enumeration borders
  523. TRADEFLAGS_DEFAULT =TRADEFLAGS_SWAPS|TRADEFLAGS_TRAILING|TRADEFLAGS_EXPERTS|TRADEFLAGS_EXPIRATION|TRADEFLAGS_SIGNALS_ALL,
  524. TRADEFLAGS_ALL =TRADEFLAGS_SWAPS|TRADEFLAGS_TRAILING|TRADEFLAGS_EXPERTS|TRADEFLAGS_EXPIRATION|TRADEFLAGS_SIGNALS_ALL|TRADEFLAGS_SIGNALS_OWN|
  525. TRADEFLAGS_SO_COMPENSATION|TRADEFLAGS_SO_FULLY_HEDGED|TRADEFLAGS_FIFO_CLOSE
  526. };
  527. //--- common methods
  528. virtual void Release(void)=0;
  529. virtual MTAPIRES Assign(const IMTConGroup* group)=0;
  530. virtual MTAPIRES Clear(void)=0;
  531. //--- group name
  532. virtual LPCWSTR Group(void) const=0;
  533. virtual MTAPIRES Group(LPCWSTR group)=0;
  534. //--- group trade server ID
  535. virtual UINT64 Server(void) const=0;
  536. virtual MTAPIRES Server(const UINT64 server)=0;
  537. //--- EnPermissionsFlags
  538. virtual UINT64 PermissionsFlags(void) const=0;
  539. virtual MTAPIRES PermissionsFlags(const UINT64 flags)=0;
  540. //--- EnAuthMode
  541. virtual UINT AuthMode(void) const=0;
  542. virtual MTAPIRES AuthMode(const UINT mode)=0;
  543. //--- minimal password length
  544. virtual UINT AuthPasswordMin(void) const=0;
  545. virtual MTAPIRES AuthPasswordMin(const UINT mode)=0;
  546. //--- company name
  547. virtual LPCWSTR Company(void) const=0;
  548. virtual MTAPIRES Company(LPCWSTR company)=0;
  549. //--- company web page URL
  550. virtual LPCWSTR CompanyPage(void) const=0;
  551. virtual MTAPIRES CompanyPage(LPCWSTR page)=0;
  552. //--- company email
  553. virtual LPCWSTR CompanyEmail(void) const=0;
  554. virtual MTAPIRES CompanyEmail(LPCWSTR email)=0;
  555. //--- company support site URL
  556. virtual LPCWSTR CompanySupportPage(void) const=0;
  557. virtual MTAPIRES CompanySupportPage(LPCWSTR page)=0;
  558. //--- company support email
  559. virtual LPCWSTR CompanySupportEmail(void) const=0;
  560. virtual MTAPIRES CompanySupportEmail(LPCWSTR email)=0;
  561. //--- company catalog name (for reports and email templates)
  562. virtual LPCWSTR CompanyCatalog(void) const=0;
  563. virtual MTAPIRES CompanyCatalog(LPCWSTR catalog)=0;
  564. //--- deposit currency
  565. virtual LPCWSTR Currency(void) const=0;
  566. virtual MTAPIRES Currency(LPCWSTR currency)=0;
  567. virtual UINT CurrencyDigits(void) const=0;
  568. //--- EnReportsMode
  569. virtual UINT ReportsMode(void) const=0;
  570. virtual MTAPIRES ReportsMode(const UINT mode)=0;
  571. //--- EnReportsFlags
  572. virtual UINT64 ReportsFlags(void) const=0;
  573. virtual MTAPIRES ReportsFlags(const UINT64 flags)=0;
  574. //--- reports SMTP server address:ports
  575. virtual LPCWSTR ReportsSMTP(void) const=0;
  576. virtual MTAPIRES ReportsSMTP(LPCWSTR server)=0;
  577. //--- reports SMTP server login
  578. virtual LPCWSTR ReportsSMTPLogin(void) const=0;
  579. virtual MTAPIRES ReportsSMTPLogin(LPCWSTR login)=0;
  580. //--- reports SMTP server password
  581. virtual LPCWSTR ReportsSMTPPass(void) const=0;
  582. virtual MTAPIRES ReportsSMTPPass(LPCWSTR password)=0;
  583. //--- EnNewsMode
  584. virtual UINT NewsMode(void) const=0;
  585. virtual MTAPIRES NewsMode(const UINT mode)=0;
  586. //--- news category filter string
  587. virtual LPCWSTR NewsCategory(void) const=0;
  588. virtual MTAPIRES NewsCategory(LPCWSTR category)=0;
  589. //--- allowed news languages (Windows API LANGID used)
  590. virtual MTAPIRES NewsLangAdd(const UINT language)=0;
  591. virtual MTAPIRES NewsLangUpdate(const UINT pos,const UINT language)=0;
  592. virtual MTAPIRES NewsLangDelete(const UINT pos)=0;
  593. virtual MTAPIRES NewsLangClear(void)=0;
  594. virtual UINT NewsLangTotal(void) const=0;
  595. virtual UINT NewsLangNext(const UINT pos) const=0;
  596. //--- EnMailMode
  597. virtual UINT MailMode(void) const=0;
  598. virtual MTAPIRES MailMode(const UINT mode)=0;
  599. //--- EnTradeFlags
  600. virtual UINT64 TradeFlags(void) const=0;
  601. virtual MTAPIRES TradeFlags(const UINT64 flags)=0;
  602. //--- interest rate for free deposit money
  603. virtual double TradeInterestrate(void) const=0;
  604. virtual MTAPIRES TradeInterestrate(const double rate)=0;
  605. //--- virtual credit
  606. virtual double TradeVirtualCredit(void) const=0;
  607. virtual MTAPIRES TradeVirtualCredit(const double credit)=0;
  608. //--- EnFreeMarginMode
  609. virtual UINT MarginFreeMode(void) const=0;
  610. virtual MTAPIRES MarginFreeMode(const UINT freemode)=0;
  611. //--- EnStopOutMode
  612. virtual UINT MarginSOMode(void) const=0;
  613. virtual MTAPIRES MarginSOMode(const UINT level)=0;
  614. //--- Margin Call level value
  615. virtual double MarginCall(void) const=0;
  616. virtual MTAPIRES MarginCall(const double level)=0;
  617. //--- Sto-Out level value
  618. virtual double MarginStopOut(void) const=0;
  619. virtual MTAPIRES MarginStopOut(const double level)=0;
  620. //--- default demo accounts leverage
  621. virtual UINT DemoLeverage(void) const=0;
  622. virtual MTAPIRES DemoLeverage(const UINT leverage)=0;
  623. //--- default demo accounts deposit
  624. virtual double DemoDeposit(void) const=0;
  625. virtual MTAPIRES DemoDeposit(const double deposit)=0;
  626. //--- EnHistoryLimit
  627. virtual UINT LimitHistory(void) const=0;
  628. virtual MTAPIRES LimitHistory(const UINT limit)=0;
  629. //--- max. order limit
  630. virtual UINT LimitOrders(void) const=0;
  631. virtual MTAPIRES LimitOrders(const UINT limit)=0;
  632. //--- max. selected symbols limit
  633. virtual UINT LimitSymbols(void) const=0;
  634. virtual MTAPIRES LimitSymbols(const UINT limit)=0;
  635. //--- commissions
  636. virtual MTAPIRES CommissionAdd(IMTConCommission* commission)=0;
  637. virtual MTAPIRES CommissionUpdate(const UINT pos,const IMTConCommission* commission)=0;
  638. virtual MTAPIRES CommissionDelete(const UINT pos)=0;
  639. virtual MTAPIRES CommissionClear(void)=0;
  640. virtual MTAPIRES CommissionShift(const UINT pos,const int shift)=0;
  641. virtual UINT CommissionTotal(void) const=0;
  642. virtual MTAPIRES CommissionNext(const UINT pos,IMTConCommission* commission) const=0;
  643. virtual MTAPIRES CommissionGet(LPCWSTR name,IMTConCommission* commission) const=0;
  644. //--- groups symbols settings
  645. virtual MTAPIRES SymbolAdd(IMTConGroupSymbol* symbol)=0;
  646. virtual MTAPIRES SymbolUpdate(const UINT pos,const IMTConGroupSymbol* symbol)=0;
  647. virtual MTAPIRES SymbolDelete(const UINT pos)=0;
  648. virtual MTAPIRES SymbolClear(void)=0;
  649. virtual MTAPIRES SymbolShift(const UINT pos,const int shift)=0;
  650. virtual UINT SymbolTotal(void) const=0;
  651. virtual MTAPIRES SymbolNext(const UINT pos,IMTConGroupSymbol* symbol) const=0;
  652. virtual MTAPIRES SymbolGet(LPCWSTR name,IMTConGroupSymbol* symbol) const=0;
  653. //--- margin free profit accounting mode
  654. virtual UINT MarginFreeProfitMode(void) const=0;
  655. virtual MTAPIRES MarginFreeProfitMode(const UINT mode)=0;
  656. //--- group risk management mode - EnMarginMode
  657. virtual UINT MarginMode(void) const=0;
  658. virtual MTAPIRES MarginMode(const UINT mode)=0;
  659. //--- OTP authentication mode - EnAuthOTPMode
  660. virtual UINT AuthOTPMode(void) const=0;
  661. virtual MTAPIRES AuthOTPMode(const UINT mode)=0;
  662. //--- deposit transfer mode - EnTransferMode
  663. virtual UINT TradeTransferMode(void) const=0;
  664. virtual MTAPIRES TradeTransferMode(const UINT mode)=0;
  665. //--- margin calculation flags EnMarginFlags
  666. virtual UINT64 MarginFlags(void) const=0;
  667. virtual MTAPIRES MarginFlags(const UINT64 flags)=0;
  668. //--- max. positions limit
  669. virtual UINT LimitPositions(void) const=0;
  670. virtual MTAPIRES LimitPositions(const UINT limit)=0;
  671. //--- deposit currency digits
  672. virtual MTAPIRES CurrencyDigitsSet(const UINT currency_digits)=0;
  673. //--- reports SMTP email account
  674. virtual LPCWSTR ReportsEmail(void) const=0;
  675. virtual MTAPIRES ReportsEmail(LPCWSTR email)=0;
  676. //--- company deposit URL
  677. virtual LPCWSTR CompanyDepositPage(void) const=0;
  678. virtual MTAPIRES CompanyDepositPage(LPCWSTR url)=0;
  679. //--- company deposit URL
  680. virtual LPCWSTR CompanyWithdrawalPage(void) const=0;
  681. virtual MTAPIRES CompanyWithdrawalPage(LPCWSTR url)=0;
  682. //--- demo groups in days, orders and positions will be deleted after this period
  683. virtual UINT DemoInactivityPeriod(void) const=0;
  684. virtual MTAPIRES DemoInactivityPeriod(const UINT period)=0;
  685. };
  686. //+------------------------------------------------------------------+
  687. //| Group config events notification interface |
  688. //+------------------------------------------------------------------+
  689. class IMTConGroupSink
  690. {
  691. public:
  692. virtual void OnGroupAdd(const IMTConGroup* /*config*/) { }
  693. virtual void OnGroupUpdate(const IMTConGroup* /*config*/) { }
  694. virtual void OnGroupDelete(const IMTConGroup* /*config*/) { }
  695. virtual void OnGroupSync(void) { }
  696. };
  697. //+------------------------------------------------------------------+