Библиотеки: CPrice

 

CPrice:

Экземпляр класса возвращает такие данные, как Bid, Ask, High, Low, цены открытия и закрытия текущей свечи или любой указанной в параметрах, а также время открытия свечи.

Автор: Dmitry Melnichenko

 

Посмотрите такой вариант

#define DEFINE_TIMESERIE(NAME,FUNC,T)                                                                         \
  class CLASS##NAME                                                                                           \
  {                                                                                                           \
  public:                                                                                                     \
    static T Get(const string Symb,const int TimeFrame,const int iShift)                                      \
    {                                                                                                         \
      T tValue[];                                                                                             \
                                                                                                              \
      return((Copy##FUNC((Symb == NULL) ? _Symbol : Symb, _Period, iShift, 1, tValue) > 0) ? tValue[0] : -1); \
    }                                                                                                         \
                                                                                                              \
    T operator[](const int iPos) const                                                                        \
    {                                                                                                         \
      return(CLASS##NAME::Get(_Symbol, _Period, iPos));                                                       \
    }                                                                                                         \
  };                                                                                                          \
                                                                                                              \
  CLASS##NAME NAME;                                                                                           \
                                                                                                              \
  T i##NAME(const string Symb,const int TimeFrame,const int iShift)                                           \
  {                                                                                                           \
    return(CLASS##NAME::Get(Symb, TimeFrame, iShift));                                                        \
  }

DEFINE_TIMESERIE(Volume,TickVolume,long)
DEFINE_TIMESERIE(Time,Time,datetime)
DEFINE_TIMESERIE(Open,Open,double)
DEFINE_TIMESERIE(High,High,double)
DEFINE_TIMESERIE(Low,Low,double)
DEFINE_TIMESERIE(Close,Close,double)

Можно, как в  MT4, вызывать Open[bar], High[bar], Time[bar], Volume[bar] и т.д. А также iHigh(...), iClose(...) и другие.

 
fxsaber:

Посмотрите такой вариант

Можно, как в  MT4, вызывать Open[bar], High[bar], Time[bar], Volume[bar] и т.д. А также iHigh(...), iClose(...) и другие.

В отличие от MT4, где обращение к Open[], High[], Low[], Close[] гарантированно возвращают значения, в МТ5 функции типа CopyClose() могут возвращать -1, т.е. возвращаемое значение нужно проверять. Т.е. прямого пути перевода кода из МТ4 в МТ5 не существует.
 
Dmitry Fedoseev:
В отличие от MT4, где обращение к Open[], High[], Low[], Close[] гарантированно возвращают значения, в МТ5 функции типа CopyClose() могут возвращать -1, т.е. возвращаемое значение нужно проверять. Т.е. прямого пути перевода кода из МТ4 в МТ5 не существует.
Как воспроизвести ситуацию, в которой MT5 не сможет повторить поведение MT4?
Причина обращения: