Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2226

 
Tretyakov Rostyslav #:

работает,

для MT5 функция

double points=SymbolInfoDouble(Symbols[number],SYMBOL_POINT);
 
lynxntech #:

работает,

для MT5 функция

Для mql4 точно такая-же функция отлично работает.

 
Alexey Viktorov #:

Для mql4 точно такая-же функция отлично работает.

у меня МТ5, там должен быть код

double points=SymbolInfoDouble(Symbols[number],SYMBOL_POINT);
 
lynxntech #:

у меня МТ5, там должен быть код

Алексей имел ввиду, что эта функция

double points=SymbolInfoDouble(Symbols[number],SYMBOL_POINT);

работает и в MQL4 и в MQL5

 
Использую такой код для индикаторов на 4ке, что бы работало на 5ке. На текущем ТФ все работает. А вот iTime(NULL,5,0)) на другом ТФ выдает значение текущего ТФ. Как поправить? Как то надо отменить дефайны при вызове  iTime. Если подставить тип ENUM_TIMEFRAMES то выдает ошибку при компиляции, а с int периодом не хочет работать. 
// Позволяет, как в MT4, работать с таймсериями: Open[Pos], High[Pos], Low[Pos], Close[Pos], Time[Pos], Volume[Pos].
// А так же задает привычные MT4-функции: iOpen, iHigh, iLow, iClose, iTime, iVolume.


#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)

input ENUM_TIMEFRAMES TF=PERIOD_M1; // ТаймФрейм prd

int OnInit()
  {
//---
//--------------------------------------------------------------------
Alert(iTime(NULL,(int)TF,0));
Alert(iTime(NULL,5,0));
Alert(iTime(NULL,15,0));
Alert(iTime(NULL,60,0));
Alert(iTime(NULL,240,0));
Alert(iTime(NULL,3600,0));
 
//---
   return(INIT_SUCCEEDED);
  }

// результат
2023.07.17 13:25:11.134 Mi.... (EURGBP,M5)        Alert: 2023.07.17 13:25:00
2023.07.17 13:25:11.134 Mi.... (EURGBP,M5)        Alert: 2023.07.17 13:25:00
2023.07.17 13:25:11.134 Mi.... (EURGBP,M5)        Alert: 2023.07.17 13:25:00
2023.07.17 13:25:11.134 Mi.... (EURGBP,M5)        Alert: 2023.07.17 13:25:00
2023.07.17 13:25:11.134 Mi.... (EURGBP,M5)        Alert: 2023.07.17 13:25:00
 
Valeriy Yastremskiy #:
iTime(NULL,5,0))
iTime(NULL,PERIOD_M5,0))
 
Vitaly Muzichenko #:
 Там дефайн по типам и компилятор ругается на тип таймфрейм енум. Инт нормально тока.
 
Valeriy Yastremskiy #:
 Там дефайн по типам и компилятор ругается на тип таймфрейм енум. Инт нормально тока.

Руается даже если в этой строке

    static T Get(const string Symb,const int TimeFrame,const int iShift)

int заменить на ENUM_TIMEFRAMES

 
Alexey Viktorov #:

Руается даже если в этой строке

int заменить на ENUM_TIMEFRAMES

Да как то жесткая подмена. Здесь правда не пробовал менять.
 
Valeriy Yastremskiy #:
Да как то жесткая подмена. Здесь правда не пробовал менять.
iTime(NULL,PERIOD_M5,0))

и прочие iХХХХ, работают без проблем