Библиотеки: EAToMath - страница 12

 
fxsaber #:
Результаты самого правого столбца предсказуемы - мат. режим.
👍👍👍
 

В исходниках библиотеки имеется Rates.mqh. Пример его отдельного использования.

#include <fxsaber\EAToMath\Rates.mqh> // https://www.mql5.com/ru/code/61283

void OnTick()
{
  static RATES Rates;
  
  Rates.Calc(); // Обновляем данные баров.
  
  MqlRates Bar[1];
  
//  if (Rates.Copy(0, Bar[0]))
  if (Rates.Copy(0, 1, Bar) > 0)     // Запросили свежий бар.
    Comment(RATE::ToString(Bar[0])); // Выводим текущий бар.
}

Возможно, кто-то сможет предложить идеи для большей производительности своих баров.

 
fxsaber #:

В исходниках библиотеки имеется Rates.mqh. Пример его отдельного использования.

Возможно, кто-то сможет предложить идеи для большей производительности своих баров.

  #ifndef RATES_HIGH_OFF
    this.high = ::MathMax(this.high, Tick.bid);
  #endif // #ifndef RATES_HIGH_OFF

  #ifndef RATES_LOW_OFF
    this.low = ::MathMin(this.low, Tick.bid);
  #endif // #ifndef RATES_LOW_OFF
Будет ли лучше, если переделать это в условное выражение if?
 
hini #:
Будет ли лучше, если переделать это в условное выражение if?
Предполагалось, что может быть такой вариант.
    this.high = ::MathMax(this.high, Tick.bid);
    this.low = ::MathMin(this.low, Tick.ask);
 
bool GetHighLow( MqlRates &Rates, const int NumBar = 1 )
{
#ifdef EATOMATH_RATES // _RATES(RatesD1, 2, PERIOD_D1)
  const bool Res = RatesD1.Copy(NumBar, Rates); // https://www.mql5.com/ru/forum/490718/page11#comment_59389352
#else // #ifdef EATOMATH_RATES
  MqlRates TmpRates[1];

  const bool Res = (CopyRates(_Symbol, PERIOD_D1, NumBar, 1, TmpRates) > 0);

  if (Res)
    Rates = TmpRates[0];
#endif // #ifdef EATOMATH_RATES #else

  return(Res);
}

При включенном EATOMATH_RATES и без него значения Rates и TmpRates[0] различаются. Чья это ошибка?

 
hini #:

При включенном EATOMATH_RATES и без него значения Rates и TmpRates[0] различаются. Чья это ошибка?

Это Ваше предположение или имеется подтверждение?
 
fxsaber # :
Это Ваше предположение или имеется подтверждение?
Возможно, я ошибаюсь.