MT5APIConfigFeeder.h 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. //+------------------------------------------------------------------+
  2. //| MetaTrader 5 API |
  3. //| Copyright 2000-2019, MetaQuotes Software Corp. |
  4. //| http://www.metaquotes.net |
  5. //+------------------------------------------------------------------+
  6. #pragma once
  7. #include "MT5APIConfigParam.h"
  8. //+------------------------------------------------------------------+
  9. //| Datafeed module description |
  10. //+------------------------------------------------------------------+
  11. class IMTConFeederModule
  12. {
  13. public:
  14. //--- necessary fields flags
  15. enum EnFeedersFieldFlags
  16. {
  17. FEED_FIELD_SERVER=1, // server field
  18. FEED_FIELD_LOGIN =2, // login field
  19. FEED_FIELD_PASS =4, // password field
  20. FEED_FIELD_PARAM =8, // parameters
  21. //--- enumeration borders
  22. FEED_FIELD_NONE =0,
  23. FEED_FIELD_ALL =FEED_FIELD_SERVER|FEED_FIELD_LOGIN|FEED_FIELD_PASS|FEED_FIELD_PARAM
  24. };
  25. //--- common methods
  26. virtual void Release(void)=0;
  27. virtual MTAPIRES Assign(const IMTConFeederModule* param)=0;
  28. virtual MTAPIRES Clear(void)=0;
  29. //--- default datafeed name
  30. virtual LPCWSTR Name(void) const=0;
  31. //--- vendor name
  32. virtual LPCWSTR Vendor(void) const=0;
  33. //--- datafeed description
  34. virtual LPCWSTR Description(void) const=0;
  35. //--- datafeed file name
  36. virtual LPCWSTR Module(void) const=0;
  37. //--- default feed server address
  38. virtual LPCWSTR FeedServer(void) const=0;
  39. //--- default feed server login
  40. virtual LPCWSTR FeedLogin(void) const=0;
  41. //--- default feed server password
  42. virtual LPCWSTR FeedPassword(void) const=0;
  43. //--- datafeed version
  44. virtual UINT Version(void) const=0;
  45. //--- datafeed available modes (IMTConFeeder::EnFeedersFlags)
  46. virtual UINT Modes(void) const=0;
  47. //--- changeable EnFeedersFieldFlags
  48. virtual UINT Fields(void) const=0;
  49. //--- default datafeed parameters
  50. virtual UINT ParameterTotal(void) const=0;
  51. virtual MTAPIRES ParameterNext(const UINT pos,IMTConParam* param) const=0;
  52. virtual MTAPIRES ParameterGet(LPCWSTR name,IMTConParam* param) const=0;
  53. };
  54. //+------------------------------------------------------------------+
  55. //| Symbols name and price translation config |
  56. //+------------------------------------------------------------------+
  57. class IMTConFeederTranslate
  58. {
  59. public:
  60. //--- common methods
  61. virtual void Release(void)=0;
  62. virtual MTAPIRES Assign(const IMTConFeederTranslate* param)=0;
  63. virtual MTAPIRES Clear(void)=0;
  64. //--- symbol name in datafeed
  65. virtual LPCWSTR Source(void) const=0;
  66. virtual MTAPIRES Source(LPCWSTR source)=0;
  67. //--- symbol name in MT5
  68. virtual LPCWSTR Symbol(void) const=0;
  69. virtual MTAPIRES Symbol(LPCWSTR symbol)=0;
  70. //--- bid markup in points
  71. virtual INT BidMarkup(void) const=0;
  72. virtual MTAPIRES BidMarkup(const INT markup)=0;
  73. //--- ask markup in points
  74. virtual INT AskMarkup(void) const=0;
  75. virtual MTAPIRES AskMarkup(const INT markup)=0;
  76. //--- digits
  77. virtual UINT Digits(void) const=0;
  78. };
  79. //+------------------------------------------------------------------+
  80. //| Datafeed config interface |
  81. //+------------------------------------------------------------------+
  82. class IMTConFeeder
  83. {
  84. public:
  85. //--- datafeed working flags
  86. enum EnFeedersFlags
  87. {
  88. FEED_FLAG_QUOTES =1, // feeder should send quotes
  89. FEED_FLAG_NEWS =2, // feeder should send news
  90. FEED_FLAG_REMOTE =8, // feeder works as remote service
  91. //--- flags borders
  92. FEED_FLAG_NONE =0,
  93. FEED_FLAG_ALL =FEED_FLAG_QUOTES|FEED_FLAG_NEWS|FEED_FLAG_REMOTE
  94. };
  95. //--- datafeed working modes
  96. enum EnFeedersMode
  97. {
  98. FEEDER_DISABLED =0,
  99. FEEDER_ENABLED =1,
  100. //--- enumeration borders
  101. FEEDER_FIRST =FEEDER_DISABLED,
  102. FEEDER_LAST =FEEDER_ENABLED
  103. };
  104. //--- common methods
  105. virtual void Release(void)=0;
  106. virtual MTAPIRES Assign(const IMTConFeeder* param)=0;
  107. virtual MTAPIRES Clear(void)=0;
  108. //--- datafeed name
  109. virtual LPCWSTR Name(void) const=0;
  110. virtual MTAPIRES Name(LPCWSTR name)=0;
  111. //--- datafeed module filename
  112. virtual LPCWSTR Module(void) const=0;
  113. virtual MTAPIRES Module(LPCWSTR name)=0;
  114. //--- feed server address
  115. virtual LPCWSTR FeedServer(void) const=0;
  116. virtual MTAPIRES FeedServer(LPCWSTR server)=0;
  117. //--- feed server login
  118. virtual LPCWSTR FeedLogin(void) const=0;
  119. virtual MTAPIRES FeedLogin(LPCWSTR login)=0;
  120. //--- feed server password
  121. virtual LPCWSTR FeedPassword(void) const=0;
  122. virtual MTAPIRES FeedPassword(LPCWSTR password)=0;
  123. //--- EnFeedersMode
  124. virtual UINT Mode(void) const=0;
  125. virtual MTAPIRES Mode(const UINT mode)=0;
  126. //--- EnFeedersFlags
  127. virtual UINT Flags(void) const=0;
  128. virtual MTAPIRES Flags(const UINT flags)=0;
  129. //--- comma separated news keywords
  130. virtual LPCWSTR Keywords(void) const=0;
  131. virtual MTAPIRES Keywords(LPCWSTR keywords)=0;
  132. //--- news category
  133. virtual LPCWSTR Categories(void) const=0;
  134. virtual MTAPIRES Categories(LPCWSTR categories)=0;
  135. //--- obsolete value
  136. virtual UINT ObsoleteValue(void) const=0;
  137. virtual MTAPIRES ObsoleteValue(const UINT value)=0;
  138. //--- datafeed reconnect timeout
  139. virtual UINT TimeoutReconnect(void) const=0;
  140. virtual MTAPIRES TimeoutReconnect(const UINT timeout)=0;
  141. //--- datafeed sleep timeout
  142. virtual UINT TimeoutSleep(void) const=0;
  143. virtual MTAPIRES TimeoutSleep(const UINT timeout)=0;
  144. //--- reconnect attempts before timeout
  145. virtual UINT TimeoutAttempts(void) const=0;
  146. virtual MTAPIRES TimeoutAttempts(const UINT attempts)=0;
  147. //--- datafeed additional parameters access
  148. virtual MTAPIRES ParameterAdd(IMTConParam* param)=0;
  149. virtual MTAPIRES ParameterUpdate(const UINT pos,const IMTConParam* param)=0;
  150. virtual MTAPIRES ParameterDelete(const UINT pos)=0;
  151. virtual MTAPIRES ParameterClear(void)=0;
  152. virtual MTAPIRES ParameterShift(const UINT pos,const int shift)=0;
  153. virtual UINT ParameterTotal(void) const=0;
  154. virtual MTAPIRES ParameterNext(const UINT pos,IMTConParam* param) const=0;
  155. virtual MTAPIRES ParameterGet(LPCWSTR name,IMTConParam* param) const=0;
  156. //--- list of symbols for translating quotes
  157. virtual MTAPIRES SymbolAdd(LPCWSTR path)=0;
  158. virtual MTAPIRES SymbolUpdate(const UINT pos,LPCWSTR path)=0;
  159. virtual MTAPIRES SymbolDelete(const UINT pos)=0;
  160. virtual MTAPIRES SymbolClear(void)=0;
  161. virtual MTAPIRES SymbolShift(const UINT pos,const int shift)=0;
  162. virtual UINT SymbolTotal(void) const=0;
  163. virtual LPCWSTR SymbolNext(const UINT pos) const=0;
  164. //--- list of symbols translations
  165. virtual MTAPIRES TranslateAdd(IMTConFeederTranslate* param)=0;
  166. virtual MTAPIRES TranslateUpdate(const UINT pos,const IMTConFeederTranslate* param)=0;
  167. virtual MTAPIRES TranslateDelete(const UINT pos)=0;
  168. virtual MTAPIRES TranslateClear(void)=0;
  169. virtual MTAPIRES TranslateShift(const UINT pos,const int shift)=0;
  170. virtual UINT TranslateTotal(void) const=0;
  171. virtual MTAPIRES TranslateNext(const UINT pos,IMTConFeederTranslate* param) const=0;
  172. virtual MTAPIRES TranslateGet(LPCWSTR symbol,IMTConFeederTranslate* param) const=0;
  173. //--- gateway server address
  174. virtual LPCWSTR GatewayServer(void) const=0;
  175. virtual MTAPIRES GatewayServer(LPCWSTR server)=0;
  176. //--- gateway server login
  177. virtual UINT64 GatewayLogin(void) const=0;
  178. virtual MTAPIRES GatewayLogin(UINT64 login)=0;
  179. //--- gateway server password
  180. virtual LPCWSTR GatewayPassword(void) const=0;
  181. virtual MTAPIRES GatewayPassword(LPCWSTR password)=0;
  182. //--- feeder state information
  183. virtual bool StateConnected(void) const=0;
  184. virtual UINT StateReceivedTicks(void) const=0;
  185. virtual UINT StateReceivedBooks(void) const=0;
  186. virtual UINT StateReceivedNews(void) const=0;
  187. virtual UINT StateTrafficIn(void) const=0;
  188. virtual UINT StateTrafficOut(void) const=0;
  189. };
  190. //+------------------------------------------------------------------+
  191. //| Datafeed config events notification interface |
  192. //+------------------------------------------------------------------+
  193. class IMTConFeederSink
  194. {
  195. public:
  196. virtual void OnFeederAdd(const IMTConFeeder* /*feeder*/) { }
  197. virtual void OnFeederUpdate(const IMTConFeeder* /*feeder*/) { }
  198. virtual void OnFeederDelete(const IMTConFeeder* /*feeder*/) { }
  199. virtual void OnFeederSync(void) { }
  200. };
  201. //+------------------------------------------------------------------+