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

 
Rosh:

В случае наличия позиции Вы получите бесконечный цикл, потому что

равносильно

В коде нет возможности вырваться из цикла, потому что в теле оператора нет break;
Огромное спасибо, там не должно было быть ; Поправил, все работает
 

Ошибочки (билд 421, может кое-что исправлено в 425-м билде, от альпари обновление до 425 пока не поступило):

1. Уже писал в ветке про 3D визуализацию: подписи 3D-графика (наименование шкалы и цена деления) не меняются при изменении параметров для отображении на графике.

2. При быстрой оптимизации график сопориться приблизительно на 10600-м проходе, т.е. оптимизация продолжается 50,51...60 поколение, а график уже не смещается и новые проходы не отображает. При этом на закладке Настройки вместо количества проходов отображается "Ход оптимизации:" и при каких-то невыясненных обстоятельствах всё же меняется на, например, 12420/14400 (цифры приблизительные).

3. Удаленные агенты могут перейти в состояние Busy и так и остаются в этом состоянии,  приходиться их отключать и включать, после этого оптимизация продолжается.

 И вопрос: будет ли возможность изменить вид графика (1D/2D/3D) в процессе оптимизации, а не после её завершения?

 
PiramidaR:

Ошибочки (билд 421, может кое-что исправлено в 425-м билде, от альпари обновление до 425 пока не поступило):

В том же терминале откройте счет от MetaQuotes и он обновится. Потом снова на другой счет переключетесь
 
PiramidaR:

Ошибочки (билд 421, может кое-что исправлено в 425-м билде, от альпари обновление до 425 пока не поступило):

1. Уже писал в ветке про 3D визуализацию: подписи 3D-графика (наименование шкалы и цена деления) не меняются при изменении параметров для отображении на графике.

2. При быстрой оптимизации график сопориться приблизительно на 10600-м проходе, т.е. оптимизация продолжается 50,51...60 поколение, а график уже не смещается и новые проходы не отображает. При этом на закладке Настройки вместо количества проходов отображается "Ход оптимизации:" и при каких-то невыясненных обстоятельствах всё же меняется на, например, 12420/14400 (цифры приблизительные).

3. Удаленные агенты могут перейти в состояние Busy и так и остаются в этом состоянии,  приходиться их отключать и включать, после этого оптимизация продолжается.

 И вопрос: будет ли возможность изменить вид графика (1D/2D/3D) в процессе оптимизации, а не после её завершения?

1,2 Исправлено, но в последний билд не попало

3. Над этой проблемой работаем

Такой возможности не будет 

 
В индикаторах хотелось бы иметь возможность не только указывать значение которое не будет отрисовываться
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);

но и иметь возможность авто-инициализации массива этим значением. Те если в последний бар ничего не присвоено индикатором, то он по умолчанию присваивает то что ему указано в

PLOT_EMPTY_VALUE

а вернее сначало инициализация пустым значением а потом уже пускай индикатор пишет или нет что хочет.

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

ЗЫ написал в эту ветку тк не уверен что это не решено, поэтому пожелание можно рассматривать и как вопрос. Если это решено то расскажите как?

 

Urain:

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

На самом деле там может быть все что угодно, просто обычно везет, что там ноль. В статье Индикатор от индикатора в MQL5 прямо сказано:

Нужна ли инициализация индикаторных буферов?

Массивы в MQL5 не инициализируются по умолчанию каким-либо значением, и это безусловно относится также и к массивам, которые назначаются индикаторным буферам функцией  SetIndexBuffer(). Если массив является индикаторным буфером, то его размер в процессе работы будет зависеть от параметра rates_total в обработчике OnCalculate(). 

Может возникнуть соблазн инициализировать все индикаторные буферы пустым значением EMPTY_VALUE с помощью функции ArrayInitialize(), например, однократно в начале OnCalculate()
//--- если это первый вызов OnCalculate() 
   if(prev_calculated==0)
     {
      ArrayInitialize(TSIBuffer,EMPTY_VALUE);
     }

Но делать этого не рекомендуется вот по какой причине: в течение всего времени работы терминала поступают котировки по символу, на данных которого рассчитывается индикатор. Таким образом, количество баров со временем увеличится, и терминал выделит дополнительную память под индикаторные буфера.

Но значения во вновь присоединенных элементах массива будут иметь любое значение, так как при перераспределении памяти под любой массив инициализация не производится. И первоначальная инициализация может дать обманчивую уверенность, что все элементы массива, которым мы явно не назначали никакого значения, будут заполнены тем же значением, которым мы инициализировали массив в первый раз. Это конечно же не верно, и никогда не стоит полагаться на то, что значение некоторой переменной или элемента массива будет инициализированы нужным нам значением.

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

На самом деле там может быть все что угодно, просто обычно везет, что там ноль. В статье Индикатор от индикатора в MQL5 прямо сказано:


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

а так будет уверенность что там точно указанное значение и на этом основании можно строить дальнейший алгорит.

 
Urain:

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

а так будет уверенность что там точно указанное значение и на этом основании можно строить дальнейший алгорит.

Тоже сталкивался с этим. Поддерживаю: сделать решение на уровне языка.
 
Lizar:
Тоже сталкивался с этим. Поддерживаю: сделать решение на уровне языка.
+1
 

Build 425

Смущает меня вот такая ситуация с тестером: советник прогоняется несколько раз при неизменных условиях, но результаты прогонов отличаются. Отличие небольшое, но...

Проверено на двух машинах, получается 2 разных результата, примерно с равной вероятностью. Что бы это значило?

 

Причина обращения: