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

 
ArraySortStruct2_Define(high) // https://www.mql5.com/ru/forum/170952/page222#comment_40289584

void OnStart()
{
  MqlRates Rates[];
  
  CopyRates(_Symbol, PERIOD_CURRENT, 0, 20, Rates);
  
  ArraySortStruct2(Rates, high); // Сортировка по high
  
  ArrayPrint(Rates);
}
 
fxsaber #:

ArraySortStruct2(Rates, high) - это mql5? А как в 4й версии отсортировать по хаям? 

 

bild 3323

Почему поведение индикаторов и советников отличается при инициализации?

При инициализации индикатора (первый запуск, смена любого input-параметра, смена TF-чарта) происходит сброс ВСЕХ глобальных переменных индикатора. С какой целью так сделано? Я понимаю сброс буферов индикаторов, но зачем сбрасывать глобальные переменные? Это чрезвычайно неудобно, так как нет возможности сохранять рабочую информацию в переменных.

При инициализации советника всё происходит как и ожидается, глобальные переменные остаются в сохранности.

Убедительная просьба к разработчикам, сделайте пожалуйста поведение индикаторов при инициализации так как в советниках.

Коды индикатора и советника в качестве доказательства:

#property indicator_chart_window

input int      Input1 = 1;

int a = 0;
int b = 0;

int OnInit()
{
  if (a != Input1)
  {
    Print ("a!");
    a = Input1;
  }
  if (b == 0)
  {
    Print ("b!");
    b = 100;
  }
  Print (a, " ", b);
  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[])
{
  return(rates_total);
}
input int      Input1 = 1;

int a = 0;
int b = 0;

int OnInit()
{
  if (a != Input1)
  {
    Print ("a!");
    a = Input1;
  }
  if (b == 0)
  {
    Print ("b!");
    b = 100;
  }
  Print (a, " ", b);
  return(INIT_SUCCEEDED);
}
 
Andrey Dik #:

bild 3323

Почему поведение индикаторов и советников отличается при инициализации?

При инициализации индикатора (первый запуск, смена любого input-параметра, смена TF-чарта) происходит сброс ВСЕХ глобальных переменных индикатора. С какой целью так сделано? Я понимаю сброс буферов индикаторов, но зачем сбрасывать глобальные переменные? Это чрезвычайно неудобно, так как нет возможности сохранять рабочую информацию в переменных.

При инициализации советника всё происходит как и ожидается, глобальные переменные остаются в сохранности.

Убедительная просьба к разработчикам, сделайте пожалуйста поведение индикаторов при инициализации так как в советниках.

Коды индикатора и советника в качестве доказательства:

Это поведение было всегда. И оно правильное, потому что это индикатор.

И такое поведение работает при смене таймфрема. Предпологается что для индикатора должно быть пересчитано все.

 
Vladimir Pastushak #:

Это поведение было всегда. И оно правильное, потому что это индикатор.

И такое поведение работает при смене таймфрема. Предпологается что для индикатора должно быть пересчитано все.

с чего это Вы решили, что такое поведение правильное? аргументации - 0.

если Вам нужно инициализировать глобальные переменные - можете это делать с удовольствием в OnInit (), но вот если же Вам понадобиться, наоборот, хранить какую то информацию в глобальных переменных (а глобальные переменные терминала не всегда могут спасти ситуацию если речь о достаточно больших массивах), то ничего поделать с этим не сможете!. и Да, это как раз таки Индикатор, в котором не допустимы никакие задержки, так как будет остановлен поток и варианты хранения переменных в файлах или где то ещё просто не допустимы, как раз согласно идеологии работы индикаторов в отличии от остальных типов программ.

 
Andrey Dik #:

с чего это Вы решили, что такое поведение правильное? аргументации - 0.

если Вам нужно инициализировать глобальные переменные - можете это делать с удовольствием в OnInit (), но вот если же Вам понадобиться, наоборот, хранить какую то информацию в глобальных переменных (а глобальные переменные терминала не всегда могут спасти ситуацию если речь о достаточно больших массивах), то ничего поделать с этим не сможете!. и Да, это как раз таки Индикатор, в котором не допустимы никакие задержки, так как будет остановлен поток и варианты хранения глобальных переменных в файлах или где то ещё просто не допустимы, как раз согласно идеологии работы индикаторов в отличии от остальных типов программ.

опыт работы: 9+ лет :)))
с добрым утром!
Все уже давно научились жить с этим. На форуме информации об этом вагон и маленькая вагонетка. 
 
Nikolai Semko #:
1. опыт работы: 9+ лет :)))
2. с добрым утром!
3. Все уже давно научились жить с этим. На форуме информации об этом вагон и маленькая вагонетка. 

1. Это типа тонкий подкол? не утруждайтесь ходить ко мне в профиль, живите своей жизнью)))

2. здрасте.

3. если вы давно и упорно входите в дом через окно аки муха, то это не значит что делаете правильно. люди входят в дом через дверь. напомню вам, есть специально предназначенная функция для инициализации OnInit (), в ней и должен программист инициализировать всё что ему нужно. а всё, что делается без ведома программиста и без его согласия - зло!

[Удален]  
Andrey Dik #:

1. Это типа тонкий подкол? не утруждайтесь ходить ко мне в профиль, живите своей жизнью)))

2. здрасте.

3. если вы давно и упорно входите в дом через окно аки муха, то это не значит что делаете правильно. люди входят в дом через дверь. напомню вам, есть специально предназначенная функция для инициализации OnInit (), в ней и должен программист инициализировать всё что ему нужно. а всё, что делается без ведома программиста и без его согласия - зло!

Извините, огромная просьба, можете скинуть мне bild 3323, спасибо.

 
Vasile Verdes #:

Извините, огромная просьба, можете скинуть мне bild 3323, спасибо.

конечно.

ЗЫ. у Вас в настройках установлено разрешение на получение сообщений только от друзей.
 
Oleksandr Nozemtsev #:

ArraySortStruct2(Rates, high) - это mql5?

Да.

А как в 4й версии отсортировать по хаям? 

Надо либо менять mql5-редакцию, либо брать альтернативные реализации в той ветке.