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

 

извините что вмешиваюсь, но ATR и средняя величина high-low это РАЗНЫЕ вещи

 
Vitaly Muzichenko #:

Согласен, облажался :)

Да ничего не облажался.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

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

Maxim121285, 2024.12.29 14:44

Так не работает выдает не то что надо.

void OnStart()
  {

int myATR = iATR(NULL,PERIOD_D1,5);
Print(myATR);
}
//Результат:
//2024.12.29 16:43:08.176       a (EURUSD,H1)   10
В mql4 такого результата не может быть.
 
Maxim Kuznetsov #:

извините что вмешиваюсь, но ATR и средняя величина high-low это РАЗНЫЕ вещи

Это легко проверить! )

//+------------------------------------------------------------------+
//|                                                         iATR.mq5 |
//|                                  Copyright 2024, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   myATR = iATR(NULL, PERIOD_CURRENT, 5);
//---
   return(INIT_SUCCEEDED);
  }
//---
int myATR;
double buf[1];
//---
void OnTick()
  {
   CopyBuffer(myATR, 0, 1, 1, buf);
   double ATR = buf[0];
   ATR = NormalizeDouble(ATR, Digits());
   Comment("\n", "ATR = ", ATR,"\n", "ATR H-L = ", myATR1());
   Print("\n", "ATR = ", ATR,"\n", "ATR H-L = ", myATR1());
//--- Результат:
//--- 2024.12.29 19:18:56.713   Core 01 2024.12.27 22:52:25   ATR = 0.00022
//--- 2024.12.29 19:18:56.713   Core 01 2024.12.27 22:52:25   ATR H-L = 0.00022
  }
//+------------------------------------------------------------------+
double myATR1(void)
     {
      double myATR1 = (iHigh(Symbol(), PERIOD_CURRENT, 1) - iLow(Symbol(), PERIOD_CURRENT, 1)) +
                     (iHigh(Symbol(), PERIOD_CURRENT, 2) - iLow(Symbol(), PERIOD_CURRENT, 2)) +
                     (iHigh(Symbol(), PERIOD_CURRENT, 3) - iLow(Symbol(), PERIOD_CURRENT, 3)) +
                     (iHigh(Symbol(), PERIOD_CURRENT, 4) - iLow(Symbol(), PERIOD_CURRENT, 4)) +
                     (iHigh(Symbol(), PERIOD_CURRENT, 5) - iLow(Symbol(), PERIOD_CURRENT, 5));
      double myATR2 = NormalizeDouble(myATR1 / 5, Digits());
      return myATR2;
     }
 
Maxim121285 #:

Это легко проверить! )

достаточно в справочник посмотреть.. :-)

они считаются чуть иначе

 
Vitaly Muzichenko #:

Спасибо вам за подсказку )

Еще один вопрос.

Можно как-то убрать с графика индикатор, мне нужен только результ внутри кода?

 
Maxim Kuznetsov #:

достаточно в справочник посмотреть.. :-)

они считаются чуть иначе

А почему тогда значения одинаковые?

 
Maxim121285 #:

А почему тогда значения одинаковые?

открывай справочник, смотри и думай. 

всё-же просто, учите мат.часть  - "true range" это не только high минус low

 
Maxim121285 #:

Спасибо вам за подсказку )

Еще один вопрос.

Можно как-то убрать с графика индикатор, мне нужен только результ внутри кода?

int OnInit()
  {
  TesterHideIndicators(true);
   myATR = iATR(NULL, PERIOD_CURRENT, 5);
//---
   return(INIT_SUCCEEDED);
  }
 
Alexey Viktorov #:

Да ничего не облажался.

В mql4 такого результата не может быть.

Это обсуждение первого, и не видно с какой платформы

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

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

Maxim121285, 2024.12.29 12:47

Подскажите как из индикатора ATR получить данные для Советника.

Пришслось кастылить )

  double myATR(void)
     {
      double myATR = (iHigh(Symbol(), PERIOD_D1, 1) - iLow(Symbol(), PERIOD_D1, 1)) +
                     (iHigh(Symbol(), PERIOD_D1, 2) - iLow(Symbol(), PERIOD_D1, 2)) +
                     (iHigh(Symbol(), PERIOD_D1, 3) - iLow(Symbol(), PERIOD_D1, 3)) +
                     (iHigh(Symbol(), PERIOD_D1, 4) - iLow(Symbol(), PERIOD_D1, 4)) +
                     (iHigh(Symbol(), PERIOD_D1, 5) - iLow(Symbol(), PERIOD_D1, 5));
      double myATR1 = NormalizeDouble(myATR / 5, Digits());
      return myATR1;
     }

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

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

Maxim121285, 2024.12.29 17:21

Это легко проверить! )

//+------------------------------------------------------------------+
//|                                                         iATR.mq5 |
//|                                  Copyright 2024, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   myATR = iATR(NULL, PERIOD_CURRENT, 5);
//---
   return(INIT_SUCCEEDED);
  }
//---
int myATR;
double buf[1];
//---
void OnTick()
  {
   CopyBuffer(myATR, 0, 1, 1, buf);
   double ATR = buf[0];
   ATR = NormalizeDouble(ATR, Digits());
   Comment("\n", "ATR = ", ATR,"\n", "ATR H-L = ", myATR1());
   Print("\n", "ATR = ", ATR,"\n", "ATR H-L = ", myATR1());
//--- Результат:
//--- 2024.12.29 19:18:56.713   Core 01 2024.12.27 22:52:25   ATR = 0.00022
//--- 2024.12.29 19:18:56.713   Core 01 2024.12.27 22:52:25   ATR H-L = 0.00022
  }
//+------------------------------------------------------------------+
double myATR1(void)
     {
      double myATR1 = (iHigh(Symbol(), PERIOD_CURRENT, 1) - iLow(Symbol(), PERIOD_CURRENT, 1)) +
                     (iHigh(Symbol(), PERIOD_CURRENT, 2) - iLow(Symbol(), PERIOD_CURRENT, 2)) +
                     (iHigh(Symbol(), PERIOD_CURRENT, 3) - iLow(Symbol(), PERIOD_CURRENT, 3)) +
                     (iHigh(Symbol(), PERIOD_CURRENT, 4) - iLow(Symbol(), PERIOD_CURRENT, 4)) +
                     (iHigh(Symbol(), PERIOD_CURRENT, 5) - iLow(Symbol(), PERIOD_CURRENT, 5));
      double myATR2 = NormalizeDouble(myATR1 / 5, Digits());
      return myATR2;
     }

А вас не смущает, что в комментарий и в распечатку подано одно и тоже?


ОТМЕНЯЕТСЯ: Я не сразу увидел способ распечатки…