Новая версия MetaTrader 4 Client Terminal 387 и MetaTrader 4 Data Center build 387 - страница 13

 
- Обновился сегодня (1.03.2011), до новой версии и начались проблемы с индикатором, - IND_Correlation.mq4. При включении терминала или при кратковременном сбои связи, индикатор исчезает. Приходиться, или перегружать шаблон, или перейти с таймфрейма, туда-сюда. Не удобно это ребята.)
 
brici:
- Обновился сегодня (1.03.2011), до новой версии и начались проблемы с индикатором, - IND_Correlation.mq4. При включении терминала или при кратковременном сбои связи, индикатор исчезает. Приходиться, или перегружать шаблон, или перейти с таймфрейма, туда-сюда. Не удобно это ребята.)
Сегодня 2 ДЦ предложили обновиться до 388 версии, наверное разработчики еще что-то поправили. Я обновился, пока ничего плохого не заметил. Обновление было с 229, я сначала удивился, потом вспомнил, что тут была ветка про 387
 
Renat:

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

Я специально держу один из терминалов 225 билда на случай, если нужно будет отлаживать интерфейс с DLL. Отладку в последующих версиях вы запретили. Насколько я понимаю, это нужно, чтобы декомпиляторы больше не появлялись. Какое решение вы бы предложили для тех, кому потребуется отладка интерфейса между скриптами MQL и DLL?
 
api:
Я специально держу один из терминалов 225 билда на случай, если нужно будет отлаживать интерфейс с DLL. Отладку в последующих версиях вы запретили. Насколько я понимаю, это нужно, чтобы декомпиляторы больше не появлялись. Какое решение вы бы предложили для тех, кому потребуется отладка интерфейса между скриптами MQL и DLL?

Фактически остается только распринтовка или аналогичные механизмы логирования.

К сожалению, в выборе между защитой и удобством пришлось сделать уйти в сторону защиты.

 
Zhunko:

Вот факты:

1. Загружаете прикреплённый индикатор на график. Появляется ломанная линия.

2. Обновляете окно из контекстного меню - "Обновление". Линия исчезает и не появляется.

Всё происходит из-за оптимизации в коде и ненужной инициализации буферов индикатора при обновлении графика.


Спасибо. Попытаемся разобраться.
 

Zhunko

В индикаторе, который Вы представили, вообще никак не учитывается IndicatorCounted, который является основным инструментом для оптимизации расчётов.

Данные могут поменяться не только по Refresh, но и после обрыва связи. И что? Ваш индикатор это никак не отслеживает. Это - неверно.

Кстати, смену символа и/или периода Ваш индикатор тоже никак не отслеживает (а переинициализация буферов в этом случае была всегда!). Ваш пример наоборот показывает необходимость инициализации индикаторных буферов, чтобы предотвратить ненужные иллюзии.

 
stringo:

Zhunko

В индикаторе, который Вы представили, вообще никак не учитывается IndicatorCounted, который является основным инструментом для оптимизации расчётов.

Данные могут поменяться не только по Refresh, но и после обрыва связи. И что? Ваш индикатор это никак не отслеживает. Это - неверно.

Кстати, смену символа и/или периода Ваш индикатор тоже никак не отслеживает (а переинициализация буферов в этом случае была всегда!). Ваш пример наоборот показывает необходимость инициализации индикаторных буферов, чтобы предотвратить ненужные иллюзии.

Какие иллюзии? Мне это не надо. Это просто развёртка по вертикали и всё. Мне не важно какие данные в буфере. Лишь бы они задавали размер по вертикали.

Почему эта особенность появилась только что в 387, а в прежних билдах не было? Наверняка, все рекламации сейчас по индикаторам от этой ненужной особенности.

Сделайте, лучше, отдельную функцию для принудительной инициализации индикаторных буферов.

 

У меня к разработчикам такой вопрос.

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

А если расчетный алгоритм используется прямо внутри эксперта, как быть в этом случае, ведь в экспертах IndicatorCounted() вроде не работает, по крайней мере я проверял, что он выдает -1.

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

Я уже писал, что сам лично терял на включении советника по недокачанным данным приличные суммы.

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

Я часто использую в экспертах констрункцию:

void my_function()
{
   static int bars;
   int limit=Bars-bars-1;
   bars=Bars-1;
   if (limit<0) return;
   if (limit>1)
   {
      limit=Bars-period-1;
      // Еще данные
   }
   for (int i=limit; i>=0; i--)
   {
      // Расчет переменных
   }
}

Может можно еще чем-то дополнить, чтобы увеличить надежность?

Ведь смысл торговли, как Вы сами понимаете, сводится не только к расчету и рисованию кастомных и прочих индикаторов, но в первую очередь, чтобы заработать. Рынок и так черезвычайно подвижен и сложен и Вы себе, возможно, преставить не можете какое порою возникает нерное напряжение при работе на реальных счетах. А когда еще нужно следить за несовешенством конструкции терминала, то это еще большая нагрузка на все и на здоровье и на ум и на другое. Ведь программирование терминала это хотя и очень сложная, но конкретная цель и задача. А обработка непрерывно извивающегося сигнала, который постоянно меняет частоту, амплитуду, спреды, новости, манипуляции ценой банками и крупными торговцами, жадность брокеров, вообщем как на минном поле. С этой задачкой и доктора наук становятся как маленькие дети и в ужасе покидают Форекс, если попробовали. А потеря больших сумм денег или вообще депозита, очень напоминает смерть какого-то человека. Потом как бы как переволощается по-новой и опять начинает все сначала. Я уважаю Вас как хороших профессионалов в своем деле, и то, что Вы уже сделали, в целом работает хорошо, но я надеюсь что в конце-концов Вы сделаете еще более достойный и надежный продукт.

 
ANG3110:

У меня к разработчикам такой вопрос.

Хоть я и не разработчик, но позволю себе чуть-чуть высказаться

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

Это было во всех билдах, просто исправили некоторые ошибки

А если расчетный алгоритм используется прямо внутри эксперта, как быть в этом случае, ведь в экспертах IndicatorCounted() вроде не работает, по крайней мере я проверял, что он выдает -1.

Не работает и работать не будет

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

МТ4 дорабатываться не будет - максимум исправление ошибок

Я уже писал, что сам лично терял на влючении советника по недокачанным данным приличные суммы.

Это только слова... Нужен разбор полётов почему да как... Виною может быть и неверный/недопиленный алгоритм советника

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

Нужно определиться с терминологией. Что есть недокаченные данные? Вы в советнике можете создать свою функцию IndicatorCounted(), например как вот тут: https://www.mql5.com/ru/articles/247

Может можно еще чем-то дополнить, чтобы увеличить надежность?

Дополнительно ещё можете отслеживать пропуски баров и на этом основании считать историю недокаченной и т.д. и т.п.

 

AlexSTAL:

Это только слова... Нужен разбор полётов почему да как... Виною может быть и неверный/недопиленный алгоритм советника

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

Нужно определиться с терминологией. Что есть недокаченные данные? Вы в советнике можете создать свою функцию IndicatorCounted(), например как вот тут: https://www.mql5.com/ru/articles/247

Может можно еще чем-то дополнить, чтобы увеличить надежность?

Дополнительно ещё можете отслеживать пропуски баров и на этом основании считать историю недокаченной и т.д. и т.п.

Хорошо, я посмотрю статью, на которую Вы ссылаетесь.

Про недокачанные данные... Сейчас за давностью времен я не смогу привести логи. Но выглядело это примерно так.

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

Другой случай. Был оставлен советник, и в его алгоритме был расчет канала, нечто похожее на Боллинжер, но требующий много баров, поскольку там был алгоритм адаптации. Момента, начала торговли я не видел, а увидел минут через 20. Оказалось, что отклонения от адаптироанной средней не посчитались, и канал схлопнулся в линию, как бы лег на среднюю. Советник открывал и закрывал одну позицию за другой и на 0.2-0.3 лота за 20 минут потерял ок. 4500$, при совершенно выигрышном рынке. Такое могло произойти, если было или очень мало данных или что-то не хватило для конструкции котрую я приводил выше.

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

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