MT5APIConfigFund.h 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. //+------------------------------------------------------------------+
  2. //| MetaTrader 5 API |
  3. //| Copyright 2000-2019, MetaQuotes Software Corp. |
  4. //| http://www.metaquotes.net |
  5. //+------------------------------------------------------------------+
  6. #pragma once
  7. //+------------------------------------------------------------------+
  8. //| Fund trade account |
  9. //+------------------------------------------------------------------+
  10. class IMTConFundAccount
  11. {
  12. public:
  13. //--- common methods
  14. virtual void Release(void)=0;
  15. virtual MTAPIRES Assign(const IMTConFundAccount* account)=0;
  16. virtual MTAPIRES Clear(void)=0;
  17. //--- login
  18. virtual UINT64 Login(void) const=0;
  19. virtual MTAPIRES Login(const UINT64 login)=0;
  20. //--- name
  21. virtual LPCWSTR Name(void) const=0;
  22. //--- balance
  23. virtual double Balance(void) const=0;
  24. //--- equity
  25. virtual double Equity(void) const=0;
  26. //--- currency
  27. virtual LPCWSTR Currency(void) const=0;
  28. //--- currency digits
  29. virtual UINT CurrencyDigits(void) const=0;
  30. };
  31. //+------------------------------------------------------------------+
  32. //| Fund investor |
  33. //+------------------------------------------------------------------+
  34. class IMTConFundInvestor
  35. {
  36. public:
  37. //--- common methods
  38. virtual void Release(void)=0;
  39. virtual MTAPIRES Assign(const IMTConFundInvestor* investor)=0;
  40. virtual MTAPIRES Clear(void)=0;
  41. //--- login
  42. virtual UINT64 Login(void) const=0;
  43. virtual MTAPIRES Login(const UINT64 login)=0;
  44. //--- name
  45. virtual LPCWSTR Name(void) const=0;
  46. //--- shares
  47. virtual UINT64 SharesVolume(void) const=0;
  48. };
  49. //+------------------------------------------------------------------+
  50. //| Fund config |
  51. //+------------------------------------------------------------------+
  52. class IMTConFund
  53. {
  54. public:
  55. //--- flags
  56. enum EnFlags
  57. {
  58. FLAG_NONE =0x00000000,
  59. FLAG_ENABLED =0x00000001,
  60. //---
  61. FLAG_ALL =FLAG_ENABLED
  62. };
  63. //--- type
  64. enum EnType
  65. {
  66. TYPE_OPEN_END =0,
  67. TYPE_CLOSED_END =1,
  68. //---
  69. TYPE_FIRST =TYPE_OPEN_END,
  70. TYPE_LAST =TYPE_CLOSED_END,
  71. };
  72. //--- recalculation
  73. enum EnRecalculation
  74. {
  75. RECALCULATION_MINUTELY=0,
  76. RECALCULATION_HOURLY =1,
  77. RECALCULATION_DAILY =2,
  78. RECALCULATION_MANUAL =3,
  79. //---
  80. RECALCULATION_FIRST =RECALCULATION_MINUTELY,
  81. RECALCULATION_LAST =RECALCULATION_MANUAL,
  82. };
  83. //--- fees mode
  84. enum EnFeeMode
  85. {
  86. FEE_MODE_AUTOMATIC =0,
  87. FEE_MODE_REPORT =1,
  88. //---
  89. FEE_MODE_FIRST =FEE_MODE_AUTOMATIC,
  90. FEE_MODE_LAST =FEE_MODE_REPORT,
  91. };
  92. //--- management fee charge
  93. enum EnFeePeriod
  94. {
  95. FEE_PERIOD_DAILY =0,
  96. FEE_PERIOD_MONTHLY =1,
  97. FEE_PERIOD_QUARTERLY =2,
  98. FEE_PERIOD_ANNUAL =3,
  99. //---
  100. FEE_PERIOD_FIRST =FEE_PERIOD_DAILY,
  101. FEE_PERIOD_LAST =FEE_PERIOD_ANNUAL
  102. };
  103. //--- assets mode for fee calculation
  104. enum EnFeeAssests
  105. {
  106. FEE_ASSETS_END =0,
  107. FEE_ASSETS_BEGIN =1,
  108. FEE_ASSETS_AVERAGE =2,
  109. //---
  110. FEE_ASSETS_FIRST =FEE_ASSETS_END,
  111. FEE_ASSETS_LAST =FEE_ASSETS_AVERAGE,
  112. };
  113. //--- success fee calculation modes
  114. enum EnFeeSuccessCalc
  115. {
  116. FEE_SUCCESS_CALC_HURDLE_HWM_SOFT=0,
  117. FEE_SUCCESS_CALC_HURDLE_HWM_HARD=1,
  118. //---
  119. FEE_SUCCESS_CALC_FIRST =FEE_SUCCESS_CALC_HURDLE_HWM_SOFT,
  120. FEE_SUCCESS_CALC_LAST =FEE_SUCCESS_CALC_HURDLE_HWM_HARD
  121. };
  122. //--- success fee modes
  123. enum EnFeeSuccessModes
  124. {
  125. FEE_SUCCESS_MODE_BEFORE_MF =0,
  126. FEE_SUCCESS_MODE_AFTER_MF =1,
  127. //---
  128. FEE_SUCCESS_MODE_FIRST =FEE_SUCCESS_MODE_BEFORE_MF,
  129. FEE_SUCCESS_MODE_LAST =FEE_SUCCESS_MODE_AFTER_MF
  130. };
  131. //--- High Water Mark calaculation modes
  132. enum EnFeeSuccessHWMType
  133. {
  134. FEE_SUCCESS_HWM_TYPE_FULL =0,
  135. FEE_SUCCESS_HWM_TYPE_QUATER=1,
  136. FEE_SUCCESS_HWM_TYPE_YEAR =2,
  137. //---
  138. FEE_SUCCESS_HWM_TYPE_FIRST =FEE_SUCCESS_HWM_TYPE_FULL,
  139. FEE_SUCCESS_HWM_TYPE_LAST =FEE_SUCCESS_HWM_TYPE_YEAR
  140. };
  141. //--- common methods
  142. virtual void Release(void)=0;
  143. virtual MTAPIRES Assign(const IMTConFund* fund)=0;
  144. virtual MTAPIRES Clear(void)=0;
  145. //--- name
  146. virtual LPCWSTR Name(void) const=0;
  147. virtual MTAPIRES Name(LPCWSTR name)=0;
  148. //--- Symbol
  149. virtual LPCWSTR Symbol(void) const=0;
  150. virtual MTAPIRES Symbol(LPCWSTR symbol)=0;
  151. //--- Symbol Perfomance
  152. virtual LPCWSTR SymbolPerfomance(void) const=0;
  153. virtual MTAPIRES SymbolPerfomance(LPCWSTR symbol)=0;
  154. //--- Symbol Assets
  155. virtual LPCWSTR SymbolAssets(void) const=0;
  156. virtual MTAPIRES SymbolAssets(LPCWSTR symbol)=0;
  157. //--- Server
  158. virtual UINT64 Server(void) const=0;
  159. virtual MTAPIRES Server(const UINT64 manager)=0;
  160. //--- Manager
  161. virtual UINT64 Manager(void) const=0;
  162. virtual MTAPIRES Manager(const UINT64 manager)=0;
  163. //--- Flags
  164. virtual UINT64 Flags(void) const=0;
  165. virtual MTAPIRES Flags(const UINT64 flags)=0;
  166. //--- Type
  167. virtual UINT Type(void) const=0;
  168. virtual MTAPIRES Type(const UINT type)=0;
  169. //--- Recalculation
  170. virtual UINT Recalculation(void) const=0;
  171. virtual MTAPIRES Recalculation(const UINT recalculation)=0;
  172. //--- start period
  173. virtual INT64 StartDate(void) const=0;
  174. virtual MTAPIRES StartDate(const INT64 date)=0;
  175. //--- end period
  176. virtual INT64 EndDate(void) const=0;
  177. virtual MTAPIRES EndDate(const INT64 date)=0;
  178. //--- currency
  179. virtual LPCWSTR Currency(void) const=0;
  180. virtual MTAPIRES Currency(LPCWSTR currency)=0;
  181. //--- Max capital
  182. virtual double MaxCapital(void) const=0;
  183. virtual MTAPIRES MaxCapital(const double max_capital)=0;
  184. //--- Max investors
  185. virtual UINT MaxInvestors(void) const=0;
  186. virtual MTAPIRES MaxInvestors(const UINT max_investors)=0;
  187. //--- Fee mode
  188. virtual UINT FeeMode(void) const=0;
  189. virtual MTAPIRES FeeMode(const UINT mode)=0;
  190. //--- Fee period
  191. virtual UINT FeePeriod(void) const=0;
  192. virtual MTAPIRES FeePeriod(const UINT period)=0;
  193. //--- Fee account
  194. virtual UINT64 FeeAccount(void) const=0;
  195. virtual MTAPIRES FeeAccount(const UINT64 fee_account)=0;
  196. //--- Management fee Type
  197. virtual UINT FeeManagementType(void) const=0;
  198. virtual MTAPIRES FeeManagementType(const UINT fee)=0;
  199. //--- Management fee value
  200. virtual double FeeManagementValue(void) const=0;
  201. virtual MTAPIRES FeeManagementValue(const double fee)=0;
  202. //--- Management assets mode
  203. virtual UINT FeeManagementAssets(void) const=0;
  204. virtual MTAPIRES FeeManagementAssets(const UINT mode)=0;
  205. //--- Success fee calculation mode
  206. virtual UINT FeeSuccessCalc(void) const=0;
  207. virtual MTAPIRES FeeSuccessCalc(const UINT mode)=0;
  208. //--- Success fee apply mode
  209. virtual UINT FeeSuccessMode(void) const=0;
  210. virtual MTAPIRES FeeSuccessMode(const UINT mode)=0;
  211. //--- Success fee apply mode
  212. virtual double FeeSuccessValue(void) const=0;
  213. virtual MTAPIRES FeeSuccessValue(const double value)=0;
  214. //--- Success fee High Water Mark calculation mode
  215. virtual UINT FeeSuccessHWM(void) const=0;
  216. virtual MTAPIRES FeeSuccessHWM(const UINT mode)=0;
  217. //--- Success fee hurdle rate
  218. virtual double FeeSuccessHurdleRate(void) const=0;
  219. virtual MTAPIRES FeeSuccessHurdleRate(const double rate)=0;
  220. //--- accounts
  221. virtual MTAPIRES AccountAdd(IMTConFundAccount* account)=0;
  222. virtual MTAPIRES AccountUpdate(const UINT pos,const IMTConFundAccount* account)=0;
  223. virtual MTAPIRES AccountDelete(const UINT pos)=0;
  224. virtual MTAPIRES AccountClear(void)=0;
  225. virtual MTAPIRES AccountShift(const UINT pos,const int shift)=0;
  226. virtual UINT AccountTotal(void) const=0;
  227. virtual MTAPIRES AccountNext(const UINT pos,IMTConFundAccount* account) const=0;
  228. //--- investors
  229. virtual MTAPIRES InvestorAdd(IMTConFundInvestor* investor)=0;
  230. virtual MTAPIRES InvestorUpdate(const UINT pos,const IMTConFundInvestor* investor)=0;
  231. virtual MTAPIRES InvestorDelete(const UINT pos)=0;
  232. virtual MTAPIRES InvestorClear(void)=0;
  233. virtual MTAPIRES InvestorShift(const UINT pos,const int shift)=0;
  234. virtual UINT InvestorTotal(void) const=0;
  235. virtual MTAPIRES InvestorNext(const UINT pos,IMTConFundInvestor* investor) const=0;
  236. //--- fund state
  237. virtual double StateCurrentCaptital(void) const=0;
  238. virtual UINT StateCurrentInvestors(void) const=0;
  239. };
  240. //+------------------------------------------------------------------+
  241. //| Mail config events notification interface |
  242. //+------------------------------------------------------------------+
  243. class IMTConFundSink
  244. {
  245. public:
  246. virtual void OnFundAdd(const IMTConFund* /*config*/) { }
  247. virtual void OnFundUpdate(const IMTConFund* /*config*/) { }
  248. virtual void OnFundDelete(const IMTConFund* /*config*/) { }
  249. virtual void OnFundSync(void) { }
  250. };
  251. //+------------------------------------------------------------------+