MT5APIConfigSpread.h 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. //+------------------------------------------------------------------+
  2. //| MetaTrader 5 API |
  3. //| Copyright 2000-2019, MetaQuotes Software Corp. |
  4. //| http://www.metaquotes.net |
  5. //+------------------------------------------------------------------+
  6. #pragma once
  7. //+------------------------------------------------------------------+
  8. //| Spread leg config |
  9. //+------------------------------------------------------------------+
  10. class IMTConSpreadLeg
  11. {
  12. public:
  13. //--- leg modes
  14. enum EnLegMode
  15. {
  16. LEG_MODE_SYMBOL =0, // symbol specified by Symbol
  17. LEG_MODE_FUTURES =1, // symbol specified by basis in Symbol + expiration range TimeFrom-TimeTo
  18. //--- enumeration borders
  19. LEG_MODE_FIRST =LEG_MODE_SYMBOL,
  20. LEG_MODE_LAST =LEG_MODE_FUTURES
  21. };
  22. //--- common methods
  23. virtual void Release(void)=0;
  24. virtual MTAPIRES Assign(const IMTConSpreadLeg* leg)=0;
  25. virtual MTAPIRES Clear(void)=0;
  26. //--- mode
  27. virtual UINT Mode(void) const=0;
  28. virtual MTAPIRES Mode(const UINT mode)=0;
  29. //--- symbol
  30. virtual LPCWSTR Symbol(void) const=0;
  31. virtual MTAPIRES Symbol(LPCWSTR symbol)=0;
  32. //--- time from
  33. virtual INT64 TimeFrom(void) const=0;
  34. virtual MTAPIRES TimeFrom(const INT64 from)=0;
  35. //--- time to
  36. virtual INT64 TimeTo(void) const=0;
  37. virtual MTAPIRES TimeTo(const INT64 to)=0;
  38. //--- ratio
  39. virtual UINT64 Ratio(void) const=0;
  40. virtual MTAPIRES Ratio(const UINT64 ratio)=0;
  41. //--- ratio double
  42. virtual double RatioDbl(void) const=0;
  43. virtual MTAPIRES RatioDbl(const double ratio)=0;
  44. };
  45. //+------------------------------------------------------------------+
  46. //| Spread config |
  47. //+------------------------------------------------------------------+
  48. class IMTConSpread
  49. {
  50. public:
  51. //--- spread types
  52. enum EnSpreadMarginType
  53. {
  54. MARGIN_TYPE_VALUE =0,
  55. MARGIN_TYPE_MAXIMAL =1,
  56. MARGIN_TYPE_CME_INTER=2,
  57. MARGIN_TYPE_CME_INTRA=3,
  58. //--- enumeration borders
  59. MARGIN_TYPE_FIRST =MARGIN_TYPE_VALUE,
  60. MARGIN_TYPE_LAST =MARGIN_TYPE_CME_INTRA
  61. };
  62. //--- common methods
  63. virtual void Release(void)=0;
  64. virtual MTAPIRES Assign(const IMTConSpread* spread)=0;
  65. virtual MTAPIRES Clear(void)=0;
  66. //--- id
  67. virtual UINT ID(void) const=0;
  68. //--- margin type
  69. virtual UINT MarginType(void) const=0;
  70. virtual MTAPIRES MarginType(const UINT type)=0;
  71. //--- initial margin
  72. virtual double MarginInitial(void) const=0;
  73. virtual MTAPIRES MarginInitial(const double margin)=0;
  74. //--- maintenance margin
  75. virtual double MarginMaintenance(void) const=0;
  76. virtual MTAPIRES MarginMaintenance(const double margin)=0;
  77. //--- leg A
  78. virtual MTAPIRES ALegAdd(IMTConSpreadLeg* leg)=0;
  79. virtual MTAPIRES ALegUpdate(const UINT pos,const IMTConSpreadLeg* leg)=0;
  80. virtual MTAPIRES ALegDelete(const UINT pos)=0;
  81. virtual MTAPIRES ALegClear(void)=0;
  82. virtual MTAPIRES ALegShift(const UINT pos,const int shift)=0;
  83. virtual UINT ALegTotal(void) const=0;
  84. virtual MTAPIRES ALegNext(const UINT pos,IMTConSpreadLeg* leg) const=0;
  85. //--- leg B
  86. virtual MTAPIRES BLegAdd(IMTConSpreadLeg* leg)=0;
  87. virtual MTAPIRES BLegUpdate(const UINT pos,const IMTConSpreadLeg* leg)=0;
  88. virtual MTAPIRES BLegDelete(const UINT pos)=0;
  89. virtual MTAPIRES BLegClear(void)=0;
  90. virtual MTAPIRES BLegShift(const UINT pos,const int shift)=0;
  91. virtual UINT BLegTotal(void) const=0;
  92. virtual MTAPIRES BLegNext(const UINT pos,IMTConSpreadLeg* leg) const=0;
  93. };
  94. //+------------------------------------------------------------------+
  95. //| Spread config events notification interface |
  96. //+------------------------------------------------------------------+
  97. class IMTConSpreadSink
  98. {
  99. public:
  100. virtual void OnSpreadAdd(const IMTConSpread* /*config*/) { }
  101. virtual void OnSpreadUpdate(const IMTConSpread* /*config*/) { }
  102. virtual void OnSpreadDelete(const IMTConSpread* /*config*/) { }
  103. virtual void OnSpreadSync(void) { }
  104. };
  105. //+------------------------------------------------------------------+