Ошибки, баги, вопросы - страница 3630

 
Vladislav Boyko #:

В Abs (тот индикатор, в подокно которого вы дропаете встроенный MA).

Прочитайте эту страницу полностью: https://www.mql5.com/ru/docs/customind

Там есть пример:

при чём тут это - ошибка в индикаторе который дропают сверху. А он "стандартный"

искусственно ограничивать пользователя в объёме данных не хорошо. и 

в общем случае EMPTY_VALUE бывает не только в самом начале исходных данных, но и где-нибудь в середине. Индикатор должен быть готов к подобному

Общее ощущение - iMA неудачно "ускорили". Теперь он считает неверно, зато очень быстро

 
Maxim Kuznetsov #:

при чём тут это - ошибка в индикаторе который дропают сверху. А он "стандартный"

В индикаторе, который дропают сверху, вызывается вот эта OnCalculate:

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])

В begin будет передано значение, которое указанно в PLOT_DRAW_BEGIN буфера price.

 
Vladislav Boyko #:

В индикаторе, который дропают сверху, вызывается вот эта OnCalculate:

В begin будет передано значение, которое указанно в PLOT_DRAW_BEGIN буфера price.

и что ?

в данных встретится EMPTY_VALUE и "стандартный, встроенный" индикатор превращается в тыкву

вот, приводил уже ссылку на пострадавшего https://www.mql5.com/ru/forum/483868

у него AdMA (встренный iAMA) не сходится с AMA (который в Examples) потому что в данных попался EMPTY_VALUE и экспонентные средние получаются разные

свежая общая ошибка в оконных функциях терминала, по крайней мере в iMA. Не мне её исправлять, у меня даже исходников их нет ;-) 

PS/ для себя любимого и так всё считаю своими методами. просто указываю на наличие БАГА и отсутствие тестирования

Как "вытащить" стандартный индикатор из терминала мт 5
Как "вытащить" стандартный индикатор из терминала мт 5
  • 2025.04.01
  • Anton
  • www.mql5.com
Ребята подскажите, как "вытащить" стандартный индикатор из терминала мт 5 на рабочий стол, для личного пользования ? Напишите путь этого действия...
 
Maxim Kuznetsov #:

и что ?

в данных встретится EMPTY_VALUE и "стандартный, встроенный" индикатор превращается в тыкву

вот, приводил уже ссылку на пострадавшего https://www.mql5.com/ru/forum/483868

у него AdMA (встренный iAMA) не сходится с AMA (который в Examples) потому что в данных попался EMPTY_VALUE и экспонентные средние получаются разные

свежая общая ошибка в оконных функциях терминала, по крайней мере в iMA. Не мне её исправлять, у меня даже исходников их нет ;-) 

PS/ для себя любимого и так всё считаю своими методами. просто указываю на наличие БАГА и отсутствие тестирования

Прикрепите исходник любого индикатора, в подокне которого встроенная MA "неправильно" работает.

 
Vladislav Boyko #:

Прикрепите исходник любого индикатора, в подокне которого встроенная MA "неправильно" работает.

что-же вы такой упрямый :-)

Ошибка там у них, ошибка...

вот индикатор эмулирующий данные с выколами EMPTY_VALUE:

#property copyright "Maxim Kuznetsov"
#property link      "http://luxrade.unaux.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot OVE
#property indicator_label1  "OVE"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double         OVE[];

int OnInit()
{
   SetIndexBuffer(0,OVE,INDICATOR_DATA);
   ArraySetAsSeries(OVE,true);
   return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   ArraySetAsSeries(open,true);
   ArraySetAsSeries(time,true);
   for(int bar=prev_calculated<0?0:prev_calculated; bar<rates_total; bar++) {
      int i=rates_total - bar - 1;
      // эмулируем данные с EMPTY_VALUE
      MqlDateTime dt; TimeToStruct(time[i],dt);
      if ((dt.hour % 2 == 0 ) && dt.min==0 && dt.sec==0) OVE[i]=EMPTY_VALUE;
      else OVE[i]=open[i];
   }
   return(rates_total);
}

Накидываем на него SMA, ожидаем что как минимум получатся мелкие чёрточки - SMA будет рассчитана в тех фрагментах где не попался EMPTY_VALUE.

Но это не так - EMPTY_VALUE посчитается как обычное число и всё переполнится


Файлы:
 
Maxim Kuznetsov #:

что-же вы такой упрямый :-)

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

Ошибки, баги, вопросы

Vladislav Boyko, 2025.04.01 19:33

Прикрепите исходник любого индикатора, в подокне которого встроенная MA "неправильно" работает.

Я сам уже сделал индикатор для воспроизведения (исходник прикрепил). Наглядно:

Файлы:
 
Maxim Kuznetsov #:
Теперь он считает неверно, зато очень быстро

Похоже, метаквоты набирают на работу таких:

;)
 
Maxim Kuznetsov #:

вот индикатор эмулирующий данные с выколами EMPTY_VALUE:

Та ну, если линия дырявая, то это уже не линия. На такое нельзя сверху МА накидывать. Даже если бы значения МА для каждого бара отдельно вычислялись (как вы хотите), то все равно на расстоянии period баров от дырки значения МА были бы мусорные, грубо говоря (и то, при условии, что это не EMA). Куда такое годится?

 

В тестере стратегий, при тестировании, на графике отображаются неизвестные/неправильные ордера. В том числе ордера до начала периода тестирования.

На скриншоте зелеными стрелками обозначены правильные ордера, красными ошибочные.

MetaTrader 5, build 4885

Выпуск              Windows 11 Домашняя

Версия              24H2

Дата установки           ‎21.‎02.‎2025

Сборка ОС     26100.3476

Взаимодействие       Пакет интерфейса компонентов Windows 1000.26100.54.0

 

Пробовал перезагрузить ПО, перезагружал весь компьютер, не помогает.

Пробовал на другом компьютере с Windows7, работает без проблем, лишних ордеров не появляется.

 
Putnik #:

В тестере стратегий, при тестировании, на графике отображаются неизвестные/неправильные ордера. В том числе ордера до начала периода тестирования.

На скриншоте зелеными стрелками обозначены правильные ордера, красными ошибочные.

MetaTrader 5, build 4885

Выпуск              Windows 11 Домашняя

Версия              24H2

Дата установки           ‎21.‎02.‎2025

Сборка ОС     26100.3476

Взаимодействие       Пакет интерфейса компонентов Windows 1000.26100.54.0

 

Пробовал перезагрузить ПО, перезагружал весь компьютер, не помогает.

Пробовал на другом компьютере с Windows7, работает без проблем, лишних ордеров не появляется.

Проверьте шаблон, который используется при визуальном тестировании. Чаще всего это tester.tpl

Похоже, лишние стрелочки - именно оттуда