MT5APIDataset.h 51 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787
  1. //+------------------------------------------------------------------+
  2. //| MetaTrader 5 API Server |
  3. //| Copyright 2000-2019, MetaQuotes Software Corp. |
  4. //| http://www.metaquotes.net |
  5. //+------------------------------------------------------------------+
  6. #pragma once
  7. //+------------------------------------------------------------------+
  8. //| Dataset column interface |
  9. //+------------------------------------------------------------------+
  10. class IMTDatasetColumn
  11. {
  12. public:
  13. //--- column data types
  14. enum EnType
  15. {
  16. //--- base types
  17. TYPE_INT8 =0, // Integer (8 bits)
  18. TYPE_UINT8 =1, // Unsigned Integer (8 bits)
  19. TYPE_INT16 =2, // Integer (16 bits)
  20. TYPE_UINT16 =3, // Unsigned Integer (16 bits)
  21. TYPE_INT32 =4, // Integer (32 bits)
  22. TYPE_UINT32 =5, // Unsigned Integer (32 bits)
  23. TYPE_INT64 =6, // Integer (64 bits)
  24. TYPE_UINT64 =7, // Unsigned Integer (64 bits)
  25. TYPE_DOUBLE =8, // Double
  26. TYPE_MONEY =9, // Money (Double)
  27. TYPE_STRING =10, // Unicode String
  28. TYPE_DATE =11, // Date (Int64)
  29. TYPE_TIME =12, // Time (Int64)
  30. TYPE_DATETIME =13, // Datetime (Int64)
  31. TYPE_TIME_MSC =14, // Time in milliseconds (Int64)
  32. TYPE_DATETIME_MSC =15, // Datetime in milliseconds (Int64)
  33. //--- prices
  34. TYPE_PRICE =100, // Price (Double)
  35. TYPE_PRICES =101, // Bid/Ask (Double[2])
  36. TYPE_PRICE_POSITION =102, // Price for positions (Double)
  37. //--- volumes
  38. TYPE_VOLUME =200, // Volume (UInt64)
  39. TYPE_VOLUME_ORDER =201, // Initial Volume/Current Volume (UInt64[2])
  40. TYPE_VOLUME_EXT =202, // Volume with extended accuracy (UInt64)
  41. TYPE_VOLUME_ORDER_EXT =203, // Initial Volume/Current Volume with extended accuracy (UInt64[2])
  42. //--- positions
  43. TYPE_POSITION_TYPE =300, // Position Type (UInt)
  44. //--- orders
  45. TYPE_ORDER_TYPE =400, // Order Type (UInt)
  46. TYPE_ORDER_TYPE_TIME =401, // Order Type by Time (UInt)
  47. TYPE_ORDER_TYPE_REASON =402, // Order Type by Reason (UInt)
  48. TYPE_ORDER_STATUS =403, // Order Status (UInt)
  49. TYPE_ORDER_FILLING =404, // Order Filling (UInt)
  50. //--- deals
  51. TYPE_DEAL_ACTION =500, // Deal Action (UInt)
  52. TYPE_DEAL_ENTRY =501, // Deal Entry (UInt)
  53. //--- accounts
  54. TYPE_USER_LOGIN =600, // Account Login (UInt64)
  55. TYPE_USER_LEVERAGE =601, // Account Leverage (UInt)
  56. //--- clients
  57. TYPE_CLIENT_ID =700, // Client Id (UInt64)
  58. //--- enumeration borders
  59. TYPE_FIRST =TYPE_INT8,
  60. TYPE_LAST =TYPE_CLIENT_ID
  61. };
  62. //--- column flags
  63. enum EnFlags
  64. {
  65. FLAG_NONE =0x00000000, // none flags
  66. FLAG_PRIMARY =0x00000001, // primary integer column
  67. FLAG_HIDDEN_VIEW =0x00000002, // hidden in grid view
  68. FLAG_HIDDEN_SAVE =0x00000004, // hidden in saved file
  69. FLAG_HIDDEN =FLAG_HIDDEN_VIEW|FLAG_HIDDEN_SAVE, // hidden in grid and file
  70. FLAG_LEFT =0x00000008, // force align left
  71. FLAG_RIGHT =0x00000010, // force align right
  72. FLAG_CENTER =FLAG_LEFT|FLAG_RIGHT, // force align center
  73. //--- enumeration borders
  74. FLAG_ALL =FLAG_PRIMARY|FLAG_HIDDEN|FLAG_CENTER
  75. };
  76. //--- color
  77. enum EnColumnColor
  78. {
  79. COLUMN_COLOR_AUTO =0xFFFFFFFF, // auto color
  80. };
  81. //--- common methods
  82. virtual void Release(void)=0;
  83. virtual MTAPIRES Assign(const IMTDatasetColumn *column)=0;
  84. virtual MTAPIRES Clear(void)=0;
  85. //--- name
  86. virtual LPCWSTR Name(void) const=0;
  87. virtual MTAPIRES Name(LPCWSTR name)=0;
  88. //--- column id
  89. virtual UINT ColumnID(void) const=0;
  90. virtual MTAPIRES ColumnID(const UINT column_id)=0;
  91. //--- type IMTDatasetColumn::EnType
  92. virtual UINT Type(void) const=0;
  93. virtual MTAPIRES Type(const UINT type)=0;
  94. //--- column relative width
  95. virtual UINT Width(void) const=0;
  96. virtual MTAPIRES Width(const UINT width)=0;
  97. //--- column max width in pixels
  98. virtual UINT WidthMax(void) const=0;
  99. virtual MTAPIRES WidthMax(const UINT width_max)=0;
  100. //--- default digits
  101. virtual UINT Digits(void) const=0;
  102. virtual MTAPIRES Digits(const UINT digits)=0;
  103. //--- column digits reference
  104. virtual UINT DigitsColumn(void) const=0;
  105. virtual MTAPIRES DigitsColumn(const UINT column_id)=0;
  106. //--- flags IMTDatasetColumn::EnFlags
  107. virtual UINT64 Flags(void) const=0;
  108. virtual MTAPIRES Flags(const UINT64 flags)=0;
  109. //--- offset
  110. virtual UINT Offset(void) const=0;
  111. virtual MTAPIRES Offset(const UINT offset)=0;
  112. //--- size
  113. virtual UINT Size(void) const=0;
  114. virtual MTAPIRES Size(const UINT size)=0;
  115. //--- chart color
  116. virtual UINT Color(void) const=0;
  117. virtual MTAPIRES Color(const UINT color)=0;
  118. };
  119. //+------------------------------------------------------------------+
  120. //| Dataset summary interface |
  121. //+------------------------------------------------------------------+
  122. class IMTDatasetSummary
  123. {
  124. public:
  125. //--- summary data types
  126. enum EnType
  127. {
  128. //--- base types
  129. TYPE_INT =0, // Integer (64 bits)
  130. TYPE_UINT =1, // Unsigned Integer (64 bits)
  131. TYPE_DOUBLE =2, // Double
  132. TYPE_MONEY =3, // Money
  133. TYPE_STRING =4, // Unicode String
  134. TYPE_DATE =5, // Date
  135. TYPE_TIME =6, // Time
  136. TYPE_DATETIME =7, // Datetime
  137. //--- prices
  138. TYPE_PRICE =100, // Price
  139. TYPE_PRICES =101, // Bid/Ask
  140. //--- volumes
  141. TYPE_VOLUME =200, // Volume
  142. TYPE_VOLUME_ORDER =201, // Initial Volume/Current Volume (UInt64[2])
  143. TYPE_VOLUME_EXT =202, // Volume with extended accuracy (UInt64)
  144. TYPE_VOLUME_ORDER_EXT =203, // Initial Volume/Current Volume with extended accuracy (UInt64[2])
  145. //--- enumeration borders
  146. TYPE_FIRST =TYPE_INT,
  147. TYPE_LAST =TYPE_VOLUME_ORDER_EXT
  148. };
  149. //--- summary flags
  150. enum EnFlags
  151. {
  152. FLAG_NONE =0x0, // none flag
  153. };
  154. //--- common methods
  155. virtual void Release(void)=0;
  156. virtual MTAPIRES Assign(const IMTDatasetSummary *summary)=0;
  157. virtual MTAPIRES Clear(void)=0;
  158. //--- column id
  159. virtual UINT ColumnID(void) const=0;
  160. virtual MTAPIRES ColumnID(const UINT column_id)=0;
  161. //--- line index
  162. virtual UINT Line(void) const=0;
  163. virtual MTAPIRES Line(const UINT line)=0;
  164. //--- column for merging (merging from ColumnID to MergeColumn)
  165. virtual UINT MergeColumn(void) const=0;
  166. virtual MTAPIRES MergeColumn(const UINT column_id)=0;
  167. //--- text color
  168. virtual UINT Color(void) const=0;
  169. virtual MTAPIRES Color(const UINT color)=0;
  170. //--- flags IMTDatasetSummary::EnFlags
  171. virtual UINT64 Flags(void) const=0;
  172. virtual MTAPIRES Flags(const UINT64 flags)=0;
  173. //--- type IMTDatasetSummary::EnType
  174. virtual UINT Type(void) const=0;
  175. //--- digits
  176. virtual UINT Digits(void) const=0;
  177. virtual MTAPIRES Digits(const UINT digits)=0;
  178. //--- integer
  179. virtual INT64 ValueInt(void) const=0;
  180. virtual MTAPIRES ValueInt(const INT64 value)=0;
  181. //--- unsigned integer
  182. virtual UINT64 ValueUInt(void) const=0;
  183. virtual MTAPIRES ValueUInt(const UINT64 value)=0;
  184. //--- double
  185. virtual double ValueDouble(void) const=0;
  186. virtual MTAPIRES ValueDouble(const double value)=0;
  187. //--- money
  188. virtual double ValueMoney(void) const=0;
  189. virtual MTAPIRES ValueMoney(const double value)=0;
  190. //--- string
  191. virtual LPCWSTR ValueString(void) const=0;
  192. virtual MTAPIRES ValueString(LPCWSTR value)=0;
  193. //--- date
  194. virtual INT64 ValueDate(void) const=0;
  195. virtual MTAPIRES ValueDate(const INT64 value)=0;
  196. //--- time
  197. virtual INT64 ValueTime(void) const=0;
  198. virtual MTAPIRES ValueTime(const INT64 value)=0;
  199. //--- datetime
  200. virtual INT64 ValueDateTime(void) const=0;
  201. virtual MTAPIRES ValueDateTime(const INT64 value)=0;
  202. //--- price
  203. virtual double ValuePrice(void) const=0;
  204. virtual MTAPIRES ValuePrice(const double value)=0;
  205. //--- prices
  206. virtual double ValuePricesBid(void) const=0;
  207. virtual double ValuePricesAsk(void) const=0;
  208. virtual MTAPIRES ValuePrices(const double value_bid,const double value_ask)=0;
  209. //--- volume
  210. virtual UINT64 ValueVolume(void) const=0;
  211. virtual MTAPIRES ValueVolume(const UINT64 value)=0;
  212. //--- order volume
  213. virtual UINT64 ValueVolumeInitial(void) const=0;
  214. virtual UINT64 ValueVolumeCurrent(void) const=0;
  215. virtual MTAPIRES ValueVolume(const UINT64 value_initial,const UINT64 value_current)=0;
  216. //--- volume with extended accuracy
  217. virtual UINT64 ValueVolumeExt(void) const=0;
  218. virtual MTAPIRES ValueVolumeExt(const UINT64 value)=0;
  219. //--- order volume with extended accuracy
  220. virtual UINT64 ValueVolumeExtInitial(void) const=0;
  221. virtual UINT64 ValueVolumeExtCurrent(void) const=0;
  222. virtual MTAPIRES ValueVolumeExt(const UINT64 value_initial,const UINT64 value_current)=0;
  223. };
  224. //+------------------------------------------------------------------+
  225. //| Dataset interface |
  226. //+------------------------------------------------------------------+
  227. class IMTDataset
  228. {
  229. public:
  230. //--- flags
  231. enum EnDataSetFlags
  232. {
  233. DATASET_FLAG_NONE =0x0, // no flags
  234. };
  235. public:
  236. //--- common methods
  237. virtual MTAPIRES Assign(const IMTDataset *data)=0;
  238. virtual MTAPIRES Clear(void)=0;
  239. //--- flags
  240. virtual UINT64 Flags(void) const=0;
  241. virtual MTAPIRES Flags(const UINT64 flags)=0;
  242. //--- reserverd properites methods
  243. virtual MTAPIRES Reserved1(void)=0;
  244. virtual MTAPIRES Reserved2(void)=0;
  245. virtual MTAPIRES Reserved3(void)=0;
  246. virtual MTAPIRES Reserved4(void)=0;
  247. //--- data set column management
  248. virtual IMTDatasetColumn* ColumnCreate(void)=0;
  249. virtual MTAPIRES ColumnClear(void)=0;
  250. virtual MTAPIRES ColumnAdd(const IMTDatasetColumn *column)=0;
  251. virtual MTAPIRES ColumnDelete(const UINT pos)=0;
  252. virtual UINT ColumnTotal(void) const=0;
  253. virtual UINT ColumnSize(void) const=0;
  254. virtual MTAPIRES ColumnNext(const UINT pos,IMTDatasetColumn *column)=0;
  255. virtual MTAPIRES ColumnReserved1(void)=0;
  256. virtual MTAPIRES ColumnReserved2(void)=0;
  257. //--- data set row management
  258. virtual MTAPIRES RowClear(void)=0;
  259. virtual MTAPIRES RowWrite(const void *data,const UINT size)=0;
  260. virtual UINT RowTotal(void) const=0;
  261. virtual MTAPIRES RowRead(const UINT pos,void *data,const UINT size) const=0;
  262. virtual MTAPIRES RowReserved2(void)=0;
  263. //--- data set summary management
  264. virtual IMTDatasetSummary* SummaryCreate(void)=0;
  265. virtual MTAPIRES SummaryClear(void)=0;
  266. virtual MTAPIRES SummaryAdd(const IMTDatasetSummary *summary)=0;
  267. virtual MTAPIRES SummaryDelete(const UINT pos)=0;
  268. virtual MTAPIRES SummaryNext(const UINT pos,IMTDatasetSummary *summary)=0;
  269. virtual UINT SummaryTotal(void) const=0;
  270. virtual MTAPIRES SummaryReserved1(void)=0;
  271. virtual MTAPIRES SummaryReserved2(void)=0;
  272. //--- life control
  273. virtual void Release(void)=0;
  274. };
  275. //+------------------------------------------------------------------+
  276. //| Datatset request field |
  277. //+------------------------------------------------------------------+
  278. class IMTDatasetField
  279. {
  280. public:
  281. //--- filed type
  282. enum EnFieldType
  283. {
  284. TYPE_NONE =0, // none
  285. TYPE_INT =1, // integer
  286. TYPE_UINT =2, // unsigned integer
  287. TYPE_DOUBLE =3, // double
  288. TYPE_STRING =4, // string
  289. //--- enumeration borders
  290. TYPE_FIRST =TYPE_NONE,
  291. TYPE_LAST =TYPE_STRING
  292. };
  293. //--- Request fields id enumeration
  294. enum EnFieldId
  295. {
  296. //--- User fields enumeration
  297. FIELD_USER_LOGIN =1, // UINT64 , login
  298. FIELD_USER_GROUP =2, // wchar_t[64] , group
  299. FIELD_USER_CERT_SERIAL_NUMBER =3, // UINT64 , certificate serial number
  300. FIELD_USER_RIGHTS =4, // UINT64 , EnUsersRights
  301. FIELD_USER_REGISTRATION =5, // INT64 , registration datetime (filled by MT5)
  302. FIELD_USER_LAST_ACCESS =6, // INT64 , last access datetime (filled by MT5)
  303. FIELD_USER_NAME =7, // wchar_t[128], name
  304. FIELD_USER_COMPANY =8, // wchar_t[32] , company
  305. FIELD_USER_ACCOUNT =9, // wchar_t[64] , external system account (exchange, ECN, etc)
  306. FIELD_USER_COUNTRY =10, // wchar_t[32] , country
  307. FIELD_USER_LANGUAGE =11, // UINT , client language (WinAPI LANGID)
  308. FIELD_USER_CITY =12, // wchar_t[32] , city
  309. FIELD_USER_STATE =13, // wchar_t[32] , state
  310. FIELD_USER_ZIP_CODE =14, // wchar_t[16] , ZIP code
  311. FIELD_USER_ADDRESS =15, // wchar_t[128], address
  312. FIELD_USER_PHONE =16, // wchar_t[32] , phone
  313. FIELD_USER_EMAIL =17, // wchar_t[64] , email
  314. FIELD_USER_ID =18, // wchar_t[32] , additional ID
  315. FIELD_USER_STATUS =19, // wchar_t[16] , additional status
  316. FIELD_USER_COMMENT =20, // wchar_t[64] , comment
  317. FIELD_USER_COLOR =21, // UINT , color (WinAPI COLORREF)
  318. FIELD_USER_PHONE_PASSWORD =22, // wchar_t[32] , phone password
  319. FIELD_USER_LEVERAGE =23, // UINT , leverage
  320. FIELD_USER_AGENT =24, // UINT64 , agent account
  321. FIELD_USER_BALANCE =25, // double , balance
  322. FIELD_USER_CREDIT =26, // double , credit
  323. FIELD_USER_INTEREST_RATE =27, // double , accumulated interest rate
  324. FIELD_USER_COMMISSION_DAILY =28, // double , accumulated daily commissions
  325. FIELD_USER_COMMISSION_MONTHLY =29, // double , accumulated monthly commissions
  326. FIELD_USER_COMMISSION_AGENT_DAILY =30, // double , accumulated daily agent commissions
  327. FIELD_USER_COMMISSION_AGENT_MONTHLY =31, // double , accumulated monthly agent commissions
  328. FIELD_USER_BALANCE_PREV_DAY =32, // double , previous day balance state
  329. FIELD_USER_BALANCE_PREV_MONTH =33, // double , previous month balance state
  330. FIELD_USER_EQUITY_PREV_DAY =34, // double , previous day equity state
  331. FIELD_USER_EQUITY_PREV_MONTH =35, // double , previous month equity state
  332. FIELD_USER_LAST_PASS_CHANGE =36, // INT64 , last password change datetime (filled by MT5)
  333. FIELD_USER_MQID =37, // UINT , client's MetaQuotes ID
  334. FIELD_USER_LEAD_CAMPAIGN =38, // wchar_t[32] , lead campaign
  335. FIELD_USER_LEAD_SOURCE =39, // wchar_t[32] , lead source
  336. FIELD_USER_CLIENT_ID =40, // UINT64 , client id
  337. //--- User fields enumeration borders
  338. FIELD_USER_FIRST =FIELD_USER_LOGIN,
  339. FIELD_USER_LAST =FIELD_USER_CLIENT_ID,
  340. //--- Client fields enumeration
  341. FIELD_CLIENT_ID =1001, // UINT64 , client id
  342. FIELD_CLIENT_CREATED_TIME =1002, // INT64 , creation date and time
  343. FIELD_CLIENT_CREATED_BY =1003, // UINT64 , login of manager who created the client
  344. FIELD_CLIENT_MODIFIED_TIME =1004, // INT64 , modification date
  345. FIELD_CLIENT_MODIFIED_BY =1005, // UINT64 , login of manager who modified the client
  346. FIELD_CLIENT_TYPE =1006, // UINT , client type (EnClientType)
  347. FIELD_CLIENT_STATUS =1007, // UINT , client status (EnClientStatus)
  348. FIELD_CLIENT_ASSIGNED_MANAGER =1008, // UINT64 , assigned manager login
  349. FIELD_CLIENT_COMMENT =1009, // wchar_t[128], comment
  350. FIELD_CLIENT_COMPLIANCE_APPROVED_BY =1010, // UINT64 , login of manager who approved the client
  351. FIELD_CLIENT_COMPLIANCE_CLIENT_CATEGORY=1011, // wchar_t[64] , customer classification according to the rules of the local regulator
  352. FIELD_CLIENT_COMPLIANCE_TIME_APPROVAL =1012, // INT64 , approval date and time
  353. FIELD_CLIENT_COMPLIANCE_TIME_TERMINATION=1013, // INT64 , agreement termination date and time
  354. FIELD_CLIENT_LEAD_CAMPAIGN =1014, // wchar_t[64] , lead campaign
  355. FIELD_CLIENT_LEAD_SOURCE =1015, // wchar_t[64] , lead source
  356. FIELD_CLIENT_INTRODUCER =1016, // wchar_t[32] , IB or Referal
  357. FIELD_CLIENT_PERSON_TITLE =1017, // wchar_t[16] , title
  358. FIELD_CLIENT_PERSON_NAME =1018, // wchar_t[32] , first name
  359. FIELD_CLIENT_PERSON_MIDDLE_NAME =1019, // wchar_t[32] , middle name
  360. FIELD_CLIENT_PERSON_LAST_NAME =1020, // wchar_t[32] , second name
  361. FIELD_CLIENT_PERSON_BIRTH_DATE =1021, // INT64 , date of birth (file time, number of 100-nanosecond since 12:00 A.M. January 1, 1601 UTC)
  362. FIELD_CLIENT_PERSON_CITIZENSHIP =1022, // wchar_t[64] , citizenship
  363. FIELD_CLIENT_PERSON_GENDER =1023, // UINT , gender (EnGender)
  364. FIELD_CLIENT_PERSON_TAX_ID =1024, // wchar_t[64] , tax id
  365. FIELD_CLIENT_PERSON_DOCUMENT_TYPE =1025, // wchar_t[16] , document type
  366. FIELD_CLIENT_PERSON_DOCUMENT_NUMBER =1026, // wchar_t[32] , document number
  367. FIELD_CLIENT_PERSON_DOCUMENT_DATE =1027, // INT64 , document issue or expiration date
  368. FIELD_CLIENT_PERSON_DOCUMENT_EXTRA =1028, // wchar_t[64] , document extra data
  369. FIELD_CLIENT_PERSON_EMPLOYMENT =1029, // UINT , employment status (EnEmployment)
  370. FIELD_CLIENT_PERSON_INDUSTRY =1030, // UINT , employment industry (EnEmploymentIndustry)
  371. FIELD_CLIENT_PERSON_EDUCATION =1031, // UINT , education level (EnEducationLevel)
  372. FIELD_CLIENT_PERSON_WEALTH_SOURCE =1032, // UINT , wealth source (EnWealthSource)
  373. FIELD_CLIENT_PERSON_ANNUAL_INCOME =1033, // double , annual income, USD
  374. FIELD_CLIENT_PERSON_NET_WORTH =1034, // double , net worth, USD
  375. FIELD_CLIENT_PERSON_ANNUAL_DEPOSIT =1035, // double , annual deposit, USD
  376. FIELD_CLIENT_COMPANY_NAME =1036, // wchar_t[64] , company name
  377. FIELD_CLIENT_COMPANY_REG_NUMBER =1037, // wchar_t[64] , company registration number
  378. FIELD_CLIENT_COMPANY_REG_DATE =1038, // INT64 , company registration date
  379. FIELD_CLIENT_COMPANY_REG_AUTHORITY =1039, // wchar_t[64] , company registration authority
  380. FIELD_CLIENT_COMPANY_VAT =1040, // wchar_t[64] , VAT registration number
  381. FIELD_CLIENT_COMPANY_LEI =1041, // wchar_t[64] , EI number for EMIR reports
  382. FIELD_CLIENT_COMPANY_LICENSE_NUMBER =1042, // wchar_t[64] , license number
  383. FIELD_CLIENT_COMPANY_LICENSE_AUTHORITY =1043, // wchar_t[64] , license issuer authority
  384. FIELD_CLIENT_COMPANY_COUNTRY =1044, // wchar_t[64] , company registration country
  385. FIELD_CLIENT_COMPANY_ADDRESS =1045, // wchar_t[64] , company registration address
  386. FIELD_CLIENT_COMPANY_WEBSITE =1046, // wchar_t[64] , company website
  387. FIELD_CLIENT_CONTACT_PREFERRED =1047, // UINT , preferred communication type
  388. FIELD_CLIENT_CONTACT_LANGUAGE =1048, // wchar_t[64] , communication language
  389. FIELD_CLIENT_CONTACT_EMAIL =1049, // wchar_t[64] , email (or multiple comma-separated emails)
  390. FIELD_CLIENT_CONTACT_PHONE =1050, // wchar_t[128], phone numbers (or multiple comma-separated phone numbers)
  391. FIELD_CLIENT_CONTACT_MESSENGERS =1051, // wchar_t[128], messengers in format: "skype:username, qq:5454535454"
  392. FIELD_CLIENT_CONTACT_SOCIALNETWORKS =1052, // wchar_t[128], social networks ids: "fb:user_id, vk:user_id"
  393. FIELD_CLIENT_CONTACT_LAST_DATE =1053, // INT64 , date and time of the last contact
  394. FIELD_CLIENT_ADDRESS_COUNTRY =1054, // wchar_t[64] , address - country
  395. FIELD_CLIENT_ADDRESS_POSTCODE =1055, // wchar_t[16] , address - zip code
  396. FIELD_CLIENT_ADDRESS_STREET =1056, // wchar_t[128], address - street address
  397. FIELD_CLIENT_ADDRESS_STATE =1057, // wchar_t[64] , address - state, province or district
  398. FIELD_CLIENT_ADDRESS_CITY =1058, // wchar_t[64] , address - city or town
  399. FIELD_CLIENT_EXPERIENCE_FX =1059, // UINT , Forex trading experience (EnTradingExperience)
  400. FIELD_CLIENT_EXPERIENCE_CFD =1060, // UINT , CFD trading experience (EnTradingExperience)
  401. FIELD_CLIENT_EXPERIENCE_FUTURES =1061, // UINT , futures trading experience (EnTradingExperience)
  402. FIELD_CLIENT_EXPERIENCE_STOCKS =1062, // UINT , stocks trading experience (EnTradingExperience)
  403. //--- Client fields enumeration borders
  404. FIELD_CLIENT_FIRST =FIELD_CLIENT_ID,
  405. FIELD_CLIENT_LAST =FIELD_CLIENT_EXPERIENCE_STOCKS,
  406. //--- Deal fields enumeration
  407. FIELD_DEAL_DEAL =2001, // UINT64 , deal ticket
  408. FIELD_DEAL_EXTERNAL_ID =2002, // wchar_t[32] , deal ticket in external system (exchange, ECN, etc)
  409. FIELD_DEAL_LOGIN =2003, // UINT64 , client login
  410. FIELD_DEAL_DEALER =2004, // UINT64 , processed dealer login (0-means auto)
  411. FIELD_DEAL_ORDER =2005, // UINT64 , deal order ticket
  412. FIELD_DEAL_ACTION =2006, // UINT , EnDealAction
  413. FIELD_DEAL_ENTRY =2007, // UINT , EnEntryFlags
  414. FIELD_DEAL_DIGITS =2008, // UINT , price digits
  415. FIELD_DEAL_DIGITS_CURRENCY =2009, // UINT , currency digits
  416. FIELD_DEAL_CONTRACT_SIZE =2010, // double , symbol contract size
  417. FIELD_DEAL_TIME =2011, // INT64 , deal creation datetime in seconds
  418. FIELD_DEAL_SYMBOL =2012, // wchar_t[32] , deal symbol
  419. FIELD_DEAL_PRICE =2013, // double , deal price
  420. FIELD_DEAL_VOLUME_EXT =2014, // UINT64 , deal volume with extended accuracy
  421. FIELD_DEAL_PROFIT =2015, // double , deal profit
  422. FIELD_DEAL_STORAGE =2016, // double , deal collected swaps
  423. FIELD_DEAL_COMMISSION =2017, // double , deal commission
  424. FIELD_DEAL_RATE_PROFIT =2018, // double , profit conversion rate (from symbol profit currency to deposit currency)
  425. FIELD_DEAL_RATE_MARGIN =2019, // double , margin conversion rate (from symbol margin currency to deposit currency)
  426. FIELD_DEAL_EXPERT_ID =2020, // UINT64 , expert id (filled by expert advisor)
  427. FIELD_DEAL_POSITION_ID =2021, // UINT64 , position id
  428. FIELD_DEAL_COMMENT =2022, // wchar_t[32] , deal comment
  429. FIELD_DEAL_PROFIT_RAW =2023, // double , deal profit in symbol's profit currency
  430. FIELD_DEAL_PRICE_POSITION =2024, // double , closed position price
  431. FIELD_DEAL_VOLUME_CLOSED_EXT =2025, // UINT64 , closed volume with extended accuracy
  432. FIELD_DEAL_TICK_VALUE =2026, // double , tick value
  433. FIELD_DEAL_TICK_SIZE =2027, // double , tick size
  434. FIELD_DEAL_FLAGS =2028, // UINT64 , flags
  435. FIELD_DEAL_TIME_MSC =2029, // INT64 , deal creation datetime in msc since 1970.01.01
  436. FIELD_DEAL_REASON =2030, // UINT , EnDealReason
  437. FIELD_DEAL_GATEWAY =2031, // wchar_t[16] , source gateway name
  438. FIELD_DEAL_PRICE_GATEWAY =2032, // double , deal price on gateway
  439. FIELD_DEAL_MODIFICATION_FLAGS =2033, // UINT , modification flags
  440. FIELD_DEAL_PRICE_SL =2034, // double , order SL
  441. FIELD_DEAL_PRICE_TP =2035, // double , order TP
  442. //--- Deal fields enumeration borders
  443. FIELD_DEAL_FIRST =FIELD_DEAL_DEAL,
  444. FIELD_DEAL_LAST =FIELD_DEAL_PRICE_TP,
  445. //--- ïîëÿ çàïðîñà áàçû çàÿâîê
  446. FIELD_ORDER_ORDER =3001, // UINT64 , order ticket
  447. FIELD_ORDER_EXTERNAL_ID =3002, // wchar_t[32] , order ticket in external system (exchange, ECN, etc)
  448. FIELD_ORDER_LOGIN =3003, // UINT64 , client login
  449. FIELD_ORDER_DEALER =3004, // UINT64 , processed dealer login (0-means auto)
  450. FIELD_ORDER_SYMBOL =3005, // wchar_t[32] , order symbol
  451. FIELD_ORDER_TIME_SETUP =3006, // INT64 , time of order reception from a client into the system
  452. FIELD_ORDER_TIME_EXPIRATION =3007, // INT64 , order expiration time
  453. FIELD_ORDER_TIME_DONE =3008, // INT64 , order cancellation time
  454. FIELD_ORDER_TYPE =3009, // UINT , order type
  455. FIELD_ORDER_TYPE_FILL =3010, // UINT , order type by filling
  456. FIELD_ORDER_TYPE_TIME =3011, // UINT , order type by time
  457. FIELD_ORDER_TYPE_REASON =3012, // UINT , order creation reason
  458. FIELD_ORDER_PRICE_ORDER =3013, // double , order price
  459. FIELD_ORDER_PRICE_TRIGGER =3014, // double , order execution price
  460. FIELD_ORDER_PRICE_CURRENT =3015, // double , current order prioce
  461. FIELD_ORDER_PRICE_SL =3016, // double , stop-loss price
  462. FIELD_ORDER_PRICE_TP =3017, // double , take-profit price
  463. FIELD_ORDER_VOLUME_INITIAL =3018, // UINT64 , starting order volume
  464. FIELD_ORDER_VOLUME_CURRENT =3019, // UINT64 , current order volume
  465. FIELD_ORDER_STATE =3020, // UINT , actual order state
  466. FIELD_ORDER_EXPERT_ID =3021, // UINT64 , expert ID
  467. FIELD_ORDER_POSITION_ID =3022, // UINT64 , position ID which the order opens or closes
  468. FIELD_ORDER_COMMENT =3023, // wchar_t[32] , order comment
  469. FIELD_ORDER_CONTRACT_SIZE =3024, // double , order contract size
  470. FIELD_ORDER_DIGITS =3025, // UINT , number of digits of order symbol
  471. FIELD_ORDER_DIGITS_CURRENCY =3026, // UINT , number of digits of order currency
  472. FIELD_ORDER_POSITION_BY_ID =3027, // UINT64 , counter Position ID for Close-By orders
  473. FIELD_ORDER_MARGIN_RATE =3028, // double , margin conversion rate at the creation time
  474. FIELD_ORDER_TIME_SETUP_MSC =3029, // INT64 , order reception from a client into the system in milliseconds
  475. FIELD_ORDER_TIME_DONE_MSC =3030, // INT64 , order cancellation time in milliseconds
  476. FIELD_ORDER_MODIFICATION_FLAGS =3031, // UINT , order modification flags
  477. FIELD_ORDER_ACTIVATION_MODE =3032, // UINT , order activation mode (for manager)
  478. FIELD_ORDER_ACTIVATION_TIME =3033, // INT64 , order activation time (for manager)
  479. FIELD_ORDER_ACTIVATION_PRICE =3034, // double , order activation price (for manager)
  480. FIELD_ORDER_ACTIVATION_FLAGS =3035, // UINT , order activation flags
  481. //--- ãðàíèöû id ïîëåé çàïðîñà áàçû èñòîðèè çàÿâîê
  482. FIELD_ORDER_FIRST =FIELD_ORDER_ORDER,
  483. FIELD_ORDER_LAST =FIELD_ORDER_ACTIVATION_FLAGS,
  484. //--- ïîëÿ çàïðîñà áàçû äíåâíûõ îò÷¸òîâ
  485. FIELD_DAILY_DATE_TIME =4001, // INT64 , report generation date and time
  486. FIELD_DAILY_DATE_TIME_PREV =4002, // INT64 , date and time of previous report generation
  487. FIELD_DAILY_LOGIN =4003, // UINT64 , login
  488. FIELD_DAILY_NAME =4004, // wchar_t[128], name
  489. FIELD_DAILY_GROUP =4005, // wchar_t[64] , group
  490. FIELD_DAILY_CURRENCY =4006, // wchar_t[32] , currency
  491. FIELD_DAILY_DIGITS_CURRENCY =4007, // UINT , number of digits of report currency
  492. FIELD_DAILY_COMPANY =4008, // wchar_t[64] , company
  493. FIELD_DAILY_EMAIL =4009, // wchar_t[64] , e-mail
  494. FIELD_DAILY_BALANCE =4010, // double , balance
  495. FIELD_DAILY_CREDIT =4011, // double , credit
  496. FIELD_DAILY_INTEREST_RATE =4012, // double , interest rate
  497. FIELD_DAILY_COMMISSION_DAILY =4013, // double , commission daily
  498. FIELD_DAILY_COMMISSION_MONTHLY =4014, // double , commission monthly
  499. FIELD_DAILY_AGENT_DAILY =4015, // double , commission daily
  500. FIELD_DAILY_AGENT_MONTHLY =4016, // double , commission monthly
  501. FIELD_DAILY_BALANCE_PREV_DAY =4017, // double , last day balance
  502. FIELD_DAILY_BALANCE_PREV_MONTH =4018, // double , last month balance
  503. FIELD_DAILY_EQUITY_PREV_DAY =4019, // double , last day equity
  504. FIELD_DAILY_EQUITY_PREV_MONTH =4020, // double , last month equity
  505. FIELD_DAILY_MARGIN =4021, // double , margin
  506. FIELD_DAILY_MARGIN_FREE =4022, // double , free margin
  507. FIELD_DAILY_MARGIN_LEVEL =4023, // double , margin level
  508. FIELD_DAILY_MARGIN_LEVERAGE =4024, // UINT , margin leverage
  509. FIELD_DAILY_PROFIT =4025, // double , floating profit
  510. FIELD_DAILY_PROFIT_STORAGE =4026, // double , storage
  511. FIELD_DAILY_PROFIT_COMMISSION =4027, // double , commission
  512. FIELD_DAILY_PROFIT_EQUITY =4028, // double , equity
  513. FIELD_DAILY_DAILY_PROFIT =4029, // double , daily fixed profit details
  514. FIELD_DAILY_DAILY_BALANCE =4030, // double , daily balance operations
  515. FIELD_DAILY_DAILY_CREDIT =4031, // double , daily credit operations
  516. FIELD_DAILY_DAILY_CHARGE =4032, // double , fees per day
  517. FIELD_DAILY_DAILY_CORRECTION =4033, // double , correction for the day
  518. FIELD_DAILY_DAILY_BONUS =4034, // double , bonuses per day
  519. FIELD_DAILY_DAILY_STORAGE =4035, // double , closed positions swap
  520. FIELD_DAILY_DAILY_COMM_INSTANT =4036, // double , commission charged immediately
  521. FIELD_DAILY_DAILY_COMM_ROUND =4037, // double , deferred commission
  522. FIELD_DAILY_DAILY_AGENT =4038, // double , agency commissions per day
  523. FIELD_DAILY_DAILY_INTEREST =4039, // double , interest per day
  524. FIELD_DAILY_PROFIT_ASSETS =4040, // double , assets
  525. FIELD_DAILY_PROFIT_LIABILITIES =4041, // double , liabilities
  526. //--- ãðàíèöû id ïîëåé çàïðîñà áàçû äíåâíûõ îò÷¸òîâ
  527. FIELD_DAILY_FIRST =FIELD_DAILY_DATE_TIME,
  528. FIELD_DAILY_LAST =FIELD_DAILY_PROFIT_LIABILITIES,
  529. //--- ïîëÿ çàïðîñà áàçû ïîçèöèé
  530. FIELD_POSITION_LOGIN =5001, // UINT64 , owner client login
  531. FIELD_POSITION_SYMBOL =5002, // wchar_t[32] , position symbol
  532. FIELD_POSITION_ACTION =5003, // UINT , EnPositionAction
  533. FIELD_POSITION_DIGITS =5004, // UINT , number of digits of order symbol
  534. FIELD_POSITION_DIGITS_CURRENCY =5005, // UINT , number of digits of order currency
  535. FIELD_POSITION_CONTRACT_SIZE =5006, // double , symbol contract size
  536. FIELD_POSITION_TIME_CREATE =5007, // INT64 , position create time
  537. FIELD_POSITION_TIME_UPDATE =5008, // INT64 , position last update time
  538. FIELD_POSITION_PRICE_OPEN =5009, // double , position weighted average open price
  539. FIELD_POSITION_PRICE_CURRENT =5010, // double , position current price
  540. FIELD_POSITION_PRICE_SL =5011, // double , position SL price
  541. FIELD_POSITION_PRICE_TP =5012, // double , position TP price
  542. FIELD_POSITION_VOLUME =5013, // UINT64 , position volume
  543. FIELD_POSITION_PROFIT =5014, // double , position floating profit
  544. FIELD_POSITION_STORAGE =5015, // double , position accumulated swaps
  545. FIELD_POSITION_RATE_PROFIT =5016, // double , profit conversion rate (from symbol profit currency to deposit currency)
  546. FIELD_POSITION_RATE_MARGIN =5017, // double , margin conversion rate (from symbol margin currency to deposit currency)
  547. FIELD_POSITION_EXPERT_ID =5018, // UINT64 , expert id (filled by expert advisor)
  548. FIELD_POSITION_EXPERT_POSITION_ID =5019, // UINT64 , expert position id
  549. FIELD_POSITION_COMMENT =5020, // wchar_t[32] , comment
  550. FIELD_POSITION_ACTIVATION_MODE =5021, // UINT , order activation state, time and price
  551. FIELD_POSITION_ACTIVATION_TIME =5022, // INT64 , activation mode
  552. FIELD_POSITION_ACTIVATION_PRICE =5023, // double , actionvation time
  553. FIELD_POSITION_ACTIVATION_FLAGS =5024, // UINT , actiovation flags
  554. FIELD_POSITION_TIME_CREATE_MSC =5025, // INT64 , position create time in msc since 1970.01.01
  555. FIELD_POSITION_TIME_UPDATE_MSC =5026, // INT64 , position last update time in msc since 1970.01.01
  556. FIELD_POSITION_DEALER =5027, // UINT64 , processed dealer login (0-means auto) (first position deal dealer)
  557. FIELD_POSITION_POSITION =5028, // UINT64 , position ticket
  558. FIELD_POSITION_EXTERNAL_ID =5029, // wchar_t[32] , position ticket in external system (exchange, ECN, etc)
  559. FIELD_POSITION_MODIFICATION_FLAGS =5030, // UINT , modification flags
  560. FIELD_POSITION_REASON =5031, // UINT , position reason - EnPositionReason
  561. FIELD_POSITION_VOLUME_EXT =5032, // UINT64 , position volume
  562. //--- ãðàíèöû id ïîëåé çàïðîñà áàçû ïîçèöèé
  563. FIELD_POSITION_FIRST =FIELD_POSITION_LOGIN,
  564. FIELD_POSITION_LAST =FIELD_POSITION_VOLUME_EXT,
  565. //--- enumeration borders
  566. FIELD_FIRST =FIELD_USER_FIRST,
  567. FIELD_LAST =FIELD_POSITION_LAST
  568. };
  569. //--- flags
  570. enum EnFieldFlags
  571. {
  572. FLAG_NONE =0x0000000, // none
  573. FLAG_SELECT =0x0000001, // select field
  574. //--- enumeration borders
  575. FLAG_DEFAULT =FLAG_SELECT,
  576. FLAG_ALL =FLAG_SELECT
  577. };
  578. //--- gender enumeration
  579. enum EnGender
  580. {
  581. GENDER_UNSPECIFIED =0, // unspecified
  582. GENDER_MALE =1, // male
  583. GENDER_FEMALE =2, // female
  584. //--- enumeration borders
  585. GENDER_FIRST =GENDER_UNSPECIFIED,
  586. GENDER_LAST =GENDER_FEMALE
  587. };
  588. //--- client type enumeration
  589. enum EnClientType
  590. {
  591. CLIENT_TYPE_UNDEFINED =0, // undefined
  592. CLIENT_TYPE_INDIVIDUAL =1, // individual
  593. CLIENT_TYPE_CORPORATE =2, // corporate
  594. CLIENT_TYPE_FUND =3, // fund
  595. //--- enumeration borders
  596. CLIENT_TYPE_FIRST =CLIENT_TYPE_UNDEFINED,
  597. CLIENT_TYPE_LAST =CLIENT_TYPE_FUND
  598. };
  599. //--- client status enumeration
  600. enum EnClientStatus
  601. {
  602. //--- Not a client yet - Demo accounts
  603. CLIENT_STATUS_UNREGISTERED =0, // Anonymous user (demo account without data)
  604. CLIENT_STATUS_REGISTERED =100, // The user who opened a demo account and left contact information (lead)
  605. CLIENT_STATUS_NOTINTERESTED =200, // The user who left the contact information, but does not want to open an account
  606. //--- Not a client yet - Preliminary
  607. CLIENT_STATUS_APPLICATION_INCOMPLETED =300, // The user who filled out the form to open a real account
  608. CLIENT_STATUS_APPLICATION_COMPLETED =400, // The user who filled out the questionnaire to open a real account and provided all the documents
  609. CLIENT_STATUS_APPLICATION_INFORMATION =500, // User to open an account that requires additional information
  610. CLIENT_STATUS_APPLICATION_REJECTED =600, // The user who filled out the questionnaire to open a real account but to whom the account was not opened according to the results of the verification of documents
  611. //--- Client
  612. CLIENT_STATUS_APPROVED =700, // The client who opened a real account
  613. CLIENT_STATUS_FUNDED =800, // Customer with a real account refilled
  614. CLIENT_STATUS_ACTIVE =900, // A client with a real account with money that made at least one transaction in the last 90 days
  615. CLIENT_STATUS_INACTIVE =1000, // A client with a real money account that has not been traded in the past 90 days
  616. CLIENT_STATUS_SUSPENDED =1100, // Client with a real account, trading on which is suspended at the initiative of the company
  617. //--- No longer client
  618. CLIENT_STATUS_CLOSED =1200, // Client who had a real account (s) and who closed them on his own initiative
  619. CLIENT_STATUS_TERMINATED =1300, // The client who had a real account (s), with which the contract was terminated at the initiative of the company
  620. //--- enumeration borders
  621. CLIENT_STATUS_FIRST =CLIENT_STATUS_UNREGISTERED,
  622. CLIENT_STATUS_LAST =CLIENT_STATUS_TERMINATED
  623. };
  624. //--- employment status enumeration
  625. enum EnEmployment
  626. {
  627. EMPLOY_UNEMPLOYED =0, // unemployed
  628. EMPLOY_EMPLOYED =1, // employed
  629. EMPLOY_SELF_EMPLOYED =2, // self employed
  630. EMPLOY_RETIRED =3, // retired
  631. EMPLOY_STUDENT =4, // student
  632. EMPLOY_OTHER =5, // other
  633. //--- enumeration borders
  634. EMPLOY_FIRST =EMPLOY_UNEMPLOYED,
  635. EMPLOY_LAST =EMPLOY_OTHER
  636. };
  637. //--- employment industry enumeration
  638. enum EnEmploymentIndustry
  639. {
  640. INDUSTRY_NONE =0, // none
  641. INDUSTRY_AGRICULTURE =1, // agriculture
  642. INDUSTRY_CONSTRUCTION =2, // construction
  643. INDUSTRY_MANAGEMENT =3, // management
  644. INDUSTRY_COMMUNICATION =4, // communication
  645. INDUSTRY_EDUCATION =5, // education
  646. INDUSTRY_GOVERNMENT =6, // government
  647. INDUSTRY_HEALTHCARE =7, // healthcare
  648. INDUSTRY_TOURISM =8, // tourism
  649. INDUSTRY_IT =9, // IT
  650. INDUSTRY_SECURITY =10, // security
  651. INDUSTRY_MANUFACTURING =11, // manufacturing
  652. INDUSTRY_MARKETING =12, // marketing
  653. INDUSTRY_SCIENCE =13, // science
  654. INDUSTRY_ENGINEERING =14, // engineering
  655. INDUSTRY_TRANSPORT =15, // transport
  656. INDUSTRY_OTHER =16, // other
  657. //--- enumeration borders
  658. INDUSTRY_FIRST =INDUSTRY_AGRICULTURE,
  659. INDUSTRY_LAST =INDUSTRY_OTHER
  660. };
  661. //--- education level enumeration
  662. enum EnEducationLevel
  663. {
  664. EDUCATION_LEVEL_NONE =0, // none
  665. EDUCATION_LEVEL_HIGH_SCHOOL =1, // high school
  666. EDUCATION_LEVEL_BACHELOR =2, // bachelor
  667. EDUCATION_LEVEL_MASTER =3, // master
  668. EDUCATION_LEVEL_PHD =4, // PhD
  669. EDUCATION_LEVEL_OTHER =5, // other
  670. //--- enumeration borders
  671. EDUCATION_LEVEL_FIRST =EDUCATION_LEVEL_NONE,
  672. EDUCATION_LEVEL_LAST =EDUCATION_LEVEL_OTHER
  673. };
  674. //--- wealth source enumeration
  675. enum EnWealthSource
  676. {
  677. WEALTH_SOURCE_EMPLOYMENT =0, // employment
  678. WEALTH_SOURCE_SAVINGS =1, // savings
  679. WEALTH_SOURCE_INHERITANCE =2, // inheritance
  680. WEALTH_SOURCE_OTHER =3, // other
  681. //--- enumeration borders
  682. WEALTH_SOURCE_FIRST =WEALTH_SOURCE_EMPLOYMENT,
  683. WEALTH_SOURCE_LAST =WEALTH_SOURCE_OTHER
  684. };
  685. //--- preferred communication enumeration
  686. enum EnPreferredCommunication
  687. {
  688. PREFERRED_COMMUNICATION_UNDEFINED =0, // undefined
  689. PREFERRED_COMMUNICATION_EMAIL =1, // email
  690. PREFERRED_COMMUNICATION_PHONE =2, // phone
  691. PREFERRED_COMMUNICATION_PHONE_SMS =3, // phone SMS
  692. PREFERRED_COMMUNICATION_MESSENGER =4, // messenger
  693. //--- enumeration borders
  694. PREFERRED_COMMUNICATION_FIRST =PREFERRED_COMMUNICATION_UNDEFINED,
  695. PREFERRED_COMMUNICATION_LAST =PREFERRED_COMMUNICATION_MESSENGER
  696. };
  697. //--- trading experience enumeration
  698. enum EnTradingExperience
  699. {
  700. EXPERIENCE_LESS_1_YEAR =0, // less than 1 year
  701. EXPERIENCE_1_3_YEAR =1, // 1 to 3 years
  702. EXPERIENCE_ABOVE_3_YEAR =2, // above 3 years
  703. //--- enumeration borders
  704. EXPERIENCE_FIRST =EXPERIENCE_LESS_1_YEAR,
  705. EXPERIENCE_LAST =EXPERIENCE_ABOVE_3_YEAR
  706. };
  707. public:
  708. //--- common methods
  709. virtual void Release(void)=0;
  710. virtual MTAPIRES Assign(const IMTDatasetField *field)=0;
  711. virtual MTAPIRES Clear(void)=0;
  712. //--- field id, EnFieldId
  713. virtual UINT Id(void) const=0;
  714. virtual MTAPIRES Id(const UINT id)=0;
  715. //--- type, EnFieldType
  716. virtual UINT Type(void) const=0;
  717. //--- offset in bytes
  718. virtual UINT Offset(void) const=0;
  719. virtual MTAPIRES Offset(const UINT offset)=0;
  720. //--- size in bytes
  721. virtual UINT Size(void) const=0;
  722. virtual MTAPIRES Size(const UINT size)=0;
  723. //--- flags, EnFieldFlags
  724. virtual UINT64 Flags(void) const=0;
  725. virtual MTAPIRES Flags(const UINT64 flags)=0;
  726. //--- reserverd properites methods
  727. virtual MTAPIRES Reserved1(void)=0;
  728. virtual MTAPIRES Reserved2(void)=0;
  729. virtual MTAPIRES Reserved3(void)=0;
  730. virtual MTAPIRES Reserved4(void)=0;
  731. //--- add where value(s)
  732. virtual MTAPIRES WhereAddInt(const INT64 value)=0;
  733. virtual MTAPIRES WhereAddIntArray(const INT64 *values,const UINT values_total)=0;
  734. virtual MTAPIRES WhereAddUInt(const UINT64 value)=0;
  735. virtual MTAPIRES WhereAddUIntArray(const UINT64 *values,const UINT values_total)=0;
  736. virtual MTAPIRES WhereAddDouble(const double value)=0;
  737. virtual MTAPIRES WhereAddDoubleArray(const double *values,const UINT values_total)=0;
  738. virtual MTAPIRES WhereAddString(LPCWSTR value)=0;
  739. virtual MTAPIRES WhereAddStringArray(LPCWSTR *values,const UINT values_total)=0;
  740. //--- reserverd where methods
  741. virtual MTAPIRES WhereReserved1(void)=0;
  742. virtual MTAPIRES WhereReserved2(void)=0;
  743. virtual MTAPIRES WhereReserved3(void)=0;
  744. virtual MTAPIRES WhereReserved4(void)=0;
  745. //--- between values int
  746. virtual MTAPIRES BetweenInt(const INT64 from,const INT64 to)=0;
  747. virtual MTAPIRES BetweenUInt(const UINT64 from,const UINT64 to)=0;
  748. virtual MTAPIRES BetweenDouble(const double from,const double to)=0;
  749. //--- reserverd between methods
  750. virtual MTAPIRES BetweenReserved1(void)=0;
  751. virtual MTAPIRES BetweenReserved2(void)=0;
  752. virtual MTAPIRES BetweenReserved3(void)=0;
  753. virtual MTAPIRES BetweenReserved4(void)=0;
  754. };
  755. //+------------------------------------------------------------------+
  756. //| Report request interface |
  757. //+------------------------------------------------------------------+
  758. class IMTDatasetRequest
  759. {
  760. public:
  761. //--- common methods
  762. virtual void Release(void)=0;
  763. virtual MTAPIRES Assign(const IMTDatasetRequest *request)=0;
  764. virtual MTAPIRES Clear(void)=0;
  765. //--- reserverd properites methods
  766. virtual MTAPIRES Reserved1(void)=0;
  767. virtual MTAPIRES Reserved2(void)=0;
  768. virtual MTAPIRES Reserved3(void)=0;
  769. virtual MTAPIRES Reserved4(void)=0;
  770. //--- fields
  771. virtual IMTDatasetField* FieldCreate(void)=0;
  772. virtual MTAPIRES FieldAdd(const IMTDatasetField *field)=0;
  773. virtual MTAPIRES FieldUpdate(const UINT pos,const IMTDatasetField *field)=0;
  774. virtual MTAPIRES FieldDelete(const UINT pos)=0;
  775. virtual MTAPIRES FieldClear(void)=0;
  776. virtual MTAPIRES FieldShift(const UINT pos,const int shift)=0;
  777. virtual UINT FieldTotal(void) const=0;
  778. virtual MTAPIRES FieldNext(const UINT pos,IMTDatasetField *field) const=0;
  779. //--- reserverd fields methods
  780. virtual MTAPIRES FieldReserved1(void)=0;
  781. virtual MTAPIRES FieldReserved2(void)=0;
  782. virtual MTAPIRES FieldReserved3(void)=0;
  783. virtual MTAPIRES FieldReserved4(void)=0;
  784. };
  785. //+------------------------------------------------------------------+