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

 
Maxim Kuznetsov #:

это у вас средняя величина high-low (средний размер свечи)

вообще тут полезна была-бы местная wiki (справочник по тех.индикаторам, но его нет), иные ссылки ведут к конкурентам или в https://en.wikipedia.org/wiki/Average_true_range .. впрочем у конкурентов детальнее :-)

iATR != avg (high-low)

Как это нет? А это что?


 
Alexey Viktorov #:

Как это нет? А это что?


в пику этому https://www.mql5.com/ru/docs/indicators/iatr

разночтение между хелпом и сайтом наличествует


Документация по MQL5: Технические индикаторы / iATR
Документация по MQL5: Технические индикаторы / iATR
  • www.mql5.com
Возвращает хэндл индикатора Average True Range. Всего один буфер. Параметры symbol [in]  Символьное имя инструмента, на данных которого будет...
 
Maxim Kuznetsov #:

в пику этому https://www.mql5.com/ru/docs/indicators/iatr

разночтение между хелпом и сайтом наличествует

Это разница между хелпом по MT5 и справкой по MQL5.

 
Maxim121285 #:
Попробовать сравнивать в процентном соотношении.
Или.
К примеру есть двадцать периодов (свечек),
выстраиваем их по возрастанию. Откидываем пять периодов с лева и пять с права, и всё это усреднить.

только откидывать ничего не надо.

А надо - провести стат.исследование на уровне лабораторки по теор.вер, построить гистограммы, взять типичное значение и от него ориентироваться.

Довольно просто, благо что вы почти всё уже проделали: есть показания iATR на предыдущем баре (те которые уже точно не увеличаться), и можно отдельно посчитать типичное или среднее (или сразу всё распределение) high-low для конкретного момента (времени суток, дня недели) за предыдущие наблюдения. Остаётся вывести зависимость между ATR и high-low по заданному времени. Можно в табличном виде и интерполировать.

Получаете статистический прогноз и некие пределы, если цена выходит за них на объективно посчитанные отклонения - значит происходит что-то необычное. Если отрезок времени прошёл (бар закрылся), а цена глубоко внутри пределов - значит тоже необычное, но флет.

 
JRandomTrader #:

Это разница между хелпом по MT5 и справкой по MQL5.

отгадайте которую из них получает программист нажав F1 на iATR

при этом они не связаны между собой и ни по каким ссылкам не перейти от iATR к Average True Range

собственно отчасти потому и последние 2 страницы обсуждений и для кого-то новые открытия :-) Зато новый логотип

 
Tretyakov Rostyslav #:
а обращения к функции zig() вообще нет нигде.

Сверил два кода, двух zig(), всё идентично.

 
Maxim Kuznetsov #:

только откидывать ничего не надо.

А надо - провести стат.исследование на уровне лабораторки по теор.вер, построить гистограммы, взять типичное значение и от него ориентироваться.

Довольно просто, благо что вы почти всё уже проделали: есть показания iATR на предыдущем баре (те которые уже точно не увеличаться), и можно отдельно посчитать типичное или среднее (или сразу всё распределение) high-low для конкретного момента (времени суток, дня недели) за предыдущие наблюдения. Остаётся вывести зависимость между ATR и high-low по заданному времени. Можно в табличном виде и интерполировать.

Получаете статистический прогноз и некие пределы, если цена выходит за них на объективно посчитанные отклонения - значит происходит что-то необычное. Если отрезок времени прошёл (бар закрылся), а цена глубоко внутри пределов - значит тоже необычное, но флет.

То что вы педложили, для меня пока ещё непонятно )

Нехватает знаний, но я над этим работаю.

 
Игорь #:

Сверил два кода, двух zig(), всё идентично.

Вы не внимательно читаете.

Первое: у Вас второй рисующий буфер "HighMapBuffer" вместо "ZigZag_Buffer".

Второе: Ваш zig(...) индикатор не увидит пока Вы не укажите на него.

 

my_ATR_HL

Требуетя сделать функцию  my_ATR_HL. 

Условия следующие: 

За выбраный период цен, High минус Low. (для простаты будем считать 10 периодов). К примеру ATR_HL: 150, 78, 240, 469, 69, 65, 127, 49, 84, 185

Нужно выстроить их по порядку :  49, 65,  69,  78, 84,  127,  150,  185,  240,  469.

и откинуть из выборки по 20 процентов самых Больших и Наименьших значений. т.е остается :  49, 65,  69,  78, 84,  127,  150,  185,  240,  469.

Дальше эти значения  69,  78, 84,  127,  150,  185. сложить и разделить на количество оставшихся значений "6".


Подскажите, правильный ли ход мысли.

1. Сбор данных в масив mATR[].

2. Путем вычислений больше меньше, все эти данные в другой масив, допустим normATR[]. ()

3. Из  normATR[] - получаю данные с [2] по [7].

4.  Cложить и разделить на количество оставшихся значений "6"

Или я опять начинаю кастылить )

//+------------------------------------------------------------------+
//|                                                     myATR_HL.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"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   myATR(10);
//---
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void myATR(int total = 0)
  {
//---
   int period_atr = 1; //--- сдвиг периода
   double mATR[]; //--- массив для периодов
   ArrayInitialize(mATR, total); //--- инициализация массива
   ArrayResize(mATR, total); //--- устанавливает новый размер массива
//---
//+------------------------------------------------------------------+
//|                        ATR HIGH - LOW                            |
//+------------------------------------------------------------------+
   for(int i = 0; i < total; i++)
     {
      mATR[i] = iHigh(NULL, PERIOD_CURRENT, period_atr) - iLow(NULL, PERIOD_CURRENT, period_atr);
      //---Округление числа с плавающей точкой до указанной точности
      mATR[i] = NormalizeDouble(mATR[i] * 100000, Digits()); 
      period_atr++;//--- сдвиг периода
      Print(i, " ATR = ", (int)mATR[i]); // Распечатка.
     }
  }
//+------------------------------------------------------------------+
/*
Результат:

2024.12.30 17:50:40.141 myATR_HL (EURUSD,M15)   0 ATR = 150
2024.12.30 17:50:40.141 myATR_HL (EURUSD,M15)   1 ATR = 78
2024.12.30 17:50:40.141 myATR_HL (EURUSD,M15)   2 ATR = 240
2024.12.30 17:50:40.141 myATR_HL (EURUSD,M15)   3 ATR = 469
2024.12.30 17:50:40.141 myATR_HL (EURUSD,M15)   4 ATR = 69
2024.12.30 17:50:40.141 myATR_HL (EURUSD,M15)   5 ATR = 65
2024.12.30 17:50:40.141 myATR_HL (EURUSD,M15)   6 ATR = 127
2024.12.30 17:50:40.141 myATR_HL (EURUSD,M15)   7 ATR = 49
2024.12.30 17:50:40.141 myATR_HL (EURUSD,M15)   8 ATR = 84
2024.12.30 17:50:40.141 myATR_HL (EURUSD,M15)   9 ATR = 185

*/
 
Maxim121285 #:

То что вы педложили, для меня пока ещё непонятно )

Нехватает знаний, но я над этим работаю.

возможно это я так непонятно поясняю :-)

вот смотри - сам по себе отдельно взятый ATR не значит почти ничего. Как и любой другой. 

у ATR есть замечательное свойство - внутри дня он стационарен (пики/впадины примерно в одно и то-же время каждый день), а величина хоть и отстаёт но характеризует рыночную активность.

--

Предположим ты хочешь прогнозировать размер свечи M30. Например чтобы ставить стопы. Или  если свеча "слишком длинная", то что-то торгануть.

(дальнейшее можно даже в Excel делать - экспортировать данные и на досуге крутить/вертеть)

Если просто выведешь зависимость ATR->размер_свечи (построишь двумерный график), то это будет пальцем в небо. Даже навскидку - в первую половину дня будет недобор, во вторую перебор.

Можешь попробовать вывести зависимость время_дня->размер_свечи, они есть, но будет тоже нехорошо, там слишком большой разброс.

А если объединить эти подходы - (время_дня,ATR)->размер_свечи то есть 3-х мерный график, поверхность - будет сильно точнее. Но данных мало, не все точки заполненны - нужен интерполятор, функция которая пройдёт по контрольным точкам и заполнит прогалы.

В итоге получится что в любой момент времени, ты можешь опираясь на статистику, довольно точно определить размер (пределы) будущей свечи.

---

PS1/ когда будешь искать зависимости - будешь волей-неволей строить гистограммы (то самое, сортировать) и типичная величина (которая по центру, чаще встречается) будет важнее средне-арифметической.

PS2/ 3-х мерных графиков (ф-ций 2-х переменных) понадобиться минимум 2, чтобы получились пределы - "в 85% случаев свеча не более Zmax" "в 15% свеча менее Zmin" и можно какое-то среднее "в половине случаев свеча около Ztyp"

PS3/ чтобы совсем хорошело, а для старших ТФ обязательно, стоит учитывать наклон SMA (потому-что он неявно влияет на ATR и создаёт "помеху")