MT5APIDaily.h 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. //+------------------------------------------------------------------+
  2. //| MetaTrader 5 API Server |
  3. //| Copyright 2000-2019, MetaQuotes Software Corp. |
  4. //| http://www.metaquotes.net |
  5. //+------------------------------------------------------------------+
  6. #pragma once
  7. //+------------------------------------------------------------------+
  8. //| Trade account interface |
  9. //+------------------------------------------------------------------+
  10. class IMTDaily
  11. {
  12. public:
  13. //--- common methods
  14. virtual void Release(void)=0;
  15. virtual MTAPIRES Assign(const IMTDaily* exec)=0;
  16. virtual MTAPIRES Clear(void)=0;
  17. //--- date and time
  18. virtual INT64 Datetime(void) const=0;
  19. virtual MTAPIRES Datetime(const INT64 datetime)=0;
  20. //--- previous generation datetime
  21. virtual INT64 DatetimePrev(void) const=0;
  22. virtual MTAPIRES DatetimePrev(const INT64 datetime)=0;
  23. //--- login
  24. virtual UINT64 Login(void) const=0;
  25. virtual MTAPIRES Login(const UINT64 login)=0;
  26. //--- name
  27. virtual LPCWSTR Name(void) const=0;
  28. virtual MTAPIRES Name(LPCWSTR name)=0;
  29. //--- group
  30. virtual LPCWSTR Group(void) const=0;
  31. virtual MTAPIRES Group(LPCWSTR group)=0;
  32. //--- currency
  33. virtual LPCWSTR Currency(void) const=0;
  34. virtual MTAPIRES Currency(LPCWSTR curr)=0;
  35. virtual UINT CurrencyDigits(void) const=0;
  36. //--- company
  37. virtual LPCWSTR Company(void) const=0;
  38. virtual MTAPIRES Company(LPCWSTR company)=0;
  39. //--- e-mail
  40. virtual LPCWSTR EMail(void) const=0;
  41. virtual MTAPIRES EMail(LPCWSTR mail)=0;
  42. //--- balance
  43. virtual double Balance(void) const=0;
  44. virtual MTAPIRES Balance(const double balance)=0;
  45. //--- credit
  46. virtual double Credit(void) const=0;
  47. virtual MTAPIRES Credit(const double credit)=0;
  48. //--- interest rate
  49. virtual double InterestRate(void) const=0;
  50. virtual MTAPIRES InterestRate(const double credit)=0;
  51. //--- commission daily
  52. virtual double CommissionDaily(void) const=0;
  53. virtual MTAPIRES CommissionDaily(const double comm)=0;
  54. //--- commission monthly
  55. virtual double CommissionMonthly(void) const=0;
  56. virtual MTAPIRES CommissionMonthly(const double comm)=0;
  57. //--- commission daily
  58. virtual double AgentDaily(void) const=0;
  59. virtual MTAPIRES AgentDaily(const double agent)=0;
  60. //--- commission monthly
  61. virtual double AgentMonthly(void) const=0;
  62. virtual MTAPIRES AgentMonthly(const double agent)=0;
  63. //--- last day balance
  64. virtual double BalancePrevDay(void) const=0;
  65. virtual MTAPIRES BalancePrevDay(const double balance)=0;
  66. //--- last month balance
  67. virtual double BalancePrevMonth(void) const=0;
  68. virtual MTAPIRES BalancePrevMonth(const double balance)=0;
  69. //--- last day equity
  70. virtual double EquityPrevDay(void) const=0;
  71. virtual MTAPIRES EquityPrevDay(const double balance)=0;
  72. //--- last month equity
  73. virtual double EquityPrevMonth(void) const=0;
  74. virtual MTAPIRES EquityPrevMonth(const double balance)=0;
  75. //---
  76. //--- margin
  77. //---
  78. virtual double Margin(void) const=0;
  79. virtual MTAPIRES Margin(const double margin)=0;
  80. //--- free margin
  81. virtual double MarginFree(void) const=0;
  82. virtual MTAPIRES MarginFree(const double margin_free)=0;
  83. //--- margin level
  84. virtual double MarginLevel(void) const=0;
  85. virtual MTAPIRES MarginLevel(const double margin_level)=0;
  86. //--- margin leverage
  87. virtual UINT MarginLeverage(void) const=0;
  88. virtual MTAPIRES MarginLeverage(const UINT leverage)=0;
  89. //---
  90. //--- floating profit
  91. //---
  92. virtual double Profit(void) const=0;
  93. virtual MTAPIRES Profit(const double profit)=0;
  94. //--- storage
  95. virtual double ProfitStorage(void) const=0;
  96. virtual MTAPIRES ProfitStorage(const double storage)=0;
  97. //--- commission
  98. virtual double ProfitCommission(void) const=0;
  99. virtual MTAPIRES ProfitCommission(const double commission)=0;
  100. //--- equity
  101. virtual double ProfitEquity(void) const=0;
  102. virtual MTAPIRES ProfitEquity(const double equity)=0;
  103. //---
  104. //--- daily fixed profit details
  105. //---
  106. virtual double DailyProfit(void) const=0;
  107. virtual MTAPIRES DailyProfit(const double profit)=0;
  108. //---
  109. virtual double DailyBalance(void) const=0;
  110. virtual MTAPIRES DailyBalance(const double balance)=0;
  111. //---
  112. virtual double DailyCredit(void) const=0;
  113. virtual MTAPIRES DailyCredit(const double comm)=0;
  114. //---
  115. virtual double DailyCharge(void) const=0;
  116. virtual MTAPIRES DailyCharge(const double charge)=0;
  117. //---
  118. virtual double DailyCorrection(void) const=0;
  119. virtual MTAPIRES DailyCorrection(const double correction)=0;
  120. //---
  121. virtual double DailyBonus(void) const=0;
  122. virtual MTAPIRES DailyBonus(const double bonus)=0;
  123. //---
  124. virtual double DailyStorage(void) const=0;
  125. virtual MTAPIRES DailyStorage(const double storage)=0;
  126. //---
  127. virtual double DailyCommInstant(void) const=0;
  128. virtual MTAPIRES DailyCommInstant(const double comm)=0;
  129. //---
  130. virtual double DailyCommRound(void) const=0;
  131. virtual MTAPIRES DailyCommRound(const double comm)=0;
  132. //---
  133. virtual double DailyAgent(void) const=0;
  134. virtual MTAPIRES DailyAgent(const double comm)=0;
  135. //---
  136. virtual double DailyInterest(void) const=0;
  137. virtual MTAPIRES DailyInterest(const double interest)=0;
  138. //--- list of open positions
  139. virtual MTAPIRES PositionAdd(IMTPosition* position)=0;
  140. virtual MTAPIRES PositionUpdate(const UINT pos,const IMTPosition* position)=0;
  141. virtual MTAPIRES PositionDelete(const UINT pos)=0;
  142. virtual MTAPIRES PositionClear(void)=0;
  143. virtual MTAPIRES PositionShift(const UINT pos,const int shift)=0;
  144. virtual UINT PositionTotal(void) const=0;
  145. virtual MTAPIRES PositionNext(const UINT pos,IMTPosition* position) const=0;
  146. virtual MTAPIRES PositionGet(LPCWSTR symbol,IMTPosition* position) const=0;
  147. //--- list of open orders
  148. virtual MTAPIRES OrderAdd(IMTOrder* order)=0;
  149. virtual MTAPIRES OrderUpdate(const UINT pos,const IMTOrder* order)=0;
  150. virtual MTAPIRES OrderDelete(const UINT pos)=0;
  151. virtual MTAPIRES OrderClear(void)=0;
  152. virtual MTAPIRES OrderShift(const UINT pos,const int shift)=0;
  153. virtual UINT OrderTotal(void) const=0;
  154. virtual MTAPIRES OrderNext(const UINT pos,IMTOrder* order) const=0;
  155. virtual MTAPIRES OrderGet(const UINT64 ticket,IMTOrder* order) const=0;
  156. //--- assets
  157. virtual double ProfitAssets(void) const=0;
  158. virtual MTAPIRES ProfitAssets(const double assets)=0;
  159. //--- liabilities
  160. virtual double ProfitLiabilities(void) const=0;
  161. virtual MTAPIRES ProfitLiabilities(const double liabilities)=0;
  162. };
  163. //+------------------------------------------------------------------+
  164. //| Deal array interface |
  165. //+------------------------------------------------------------------+
  166. class IMTDailyArray
  167. {
  168. public:
  169. //--- common methods
  170. virtual void Release(void)=0;
  171. virtual MTAPIRES Assign(const IMTDailyArray* array)=0;
  172. virtual MTAPIRES Clear(void)=0;
  173. //--- add
  174. virtual MTAPIRES Add(IMTDaily* daily)=0;
  175. virtual MTAPIRES AddCopy(const IMTDaily* daily)=0;
  176. virtual MTAPIRES Add(IMTDailyArray* array)=0;
  177. virtual MTAPIRES AddCopy(const IMTDailyArray* array)=0;
  178. //--- delete & detach
  179. virtual MTAPIRES Delete(const UINT pos)=0;
  180. virtual IMTDaily* Detach(const UINT pos)=0;
  181. //--- update
  182. virtual MTAPIRES Update(const UINT pos,IMTDaily* daily)=0;
  183. virtual MTAPIRES UpdateCopy(const UINT pos,const IMTDaily* daily)=0;
  184. virtual MTAPIRES Shift(const UINT pos,const int shift)=0;
  185. //--- data access
  186. virtual UINT Total(void) const=0;
  187. virtual IMTDaily* Next(const UINT index) const=0;
  188. //--- sorting and search
  189. virtual MTAPIRES Sort(MTSortFunctionPtr sort_function)=0;
  190. virtual int Search(const void *key,MTSortFunctionPtr sort_function) const=0;
  191. virtual int SearchGreatOrEq(const void *key,MTSortFunctionPtr sort_function) const=0;
  192. virtual int SearchGreater(const void *key,MTSortFunctionPtr sort_function) const=0;
  193. virtual int SearchLessOrEq(const void *key,MTSortFunctionPtr sort_function) const=0;
  194. virtual int SearchLess(const void *key,MTSortFunctionPtr sort_function) const=0;
  195. virtual int SearchLeft(const void *key,MTSortFunctionPtr sort_function) const=0;
  196. virtual int SearchRight(const void *key,MTSortFunctionPtr sort_function) const=0;
  197. };
  198. //+------------------------------------------------------------------+
  199. //| Deals events notification interface |
  200. //+------------------------------------------------------------------+
  201. class IMTDailySink
  202. {
  203. public:
  204. virtual void OnDailyAdd(const IMTDaily* /*daily*/) { }
  205. virtual void OnDailyUpdate(const IMTDaily* /*daily*/) { }
  206. virtual void OnDailyDelete(const IMTDaily* /*daily*/) { }
  207. virtual void OnDailyClean(const UINT64 /*login*/) { }
  208. virtual void OnDailySync(void) { }
  209. };
  210. //+------------------------------------------------------------------+