Новая версия MetaTrader 4 Client Terminal 392

 

MetaTrader 4 Client Terminal Build 392

  1. Исправлена деинициализация списка индикаторов в тестере.
  2. Исправлен показ прибыли в базовой валюте символа.
  3. Исправлены лишние пересчёты индикаторов при показе на графике.
  4. Исправлена утечка памяти при оптимизации.
  5. Добавлен перевод интерфейса на датский язык.
  6. Исправлен перевод интерфейса на немецкий язык.
Автоматическое обновление будет доступно через систему LiveUpdate
 

Понятно... Исправлять ошибочную лишнюю инициализацию индикаторных буферов не стали... :-(

Факты не помогли?

 
Zhunko:

Понятно... Исправлять ошибочную лишнюю инициализацию индикаторных буферов не стали... :-(

Факты не помогли?


Какие факты? Вам же было сказано - используйте IndicatorCounted как основной инструмент для экономного пересчёта.

Как тогда быть с переинициализацией буферов при смене символа-периода? Как быть с переинициализацией буферов при докачке истории в середину? Это - не ошибочная и не лишняя переинициализация!

Факты говорят о другом. Если не сделать эту "ошибочную" и "лишнюю" переинициализацию, то правильно написанный пользовательский ЗигЗаг не пересчитает и не перерисует изменившийся экстремум.

 

Могу добавить, что статей на эту тему было много, вот одна из них - Особенности написания Пользовательских Индикаторов:

Функция "IndicatorCounted" позволяет организовать экономный расчет индикатора. Эта функция возвращает количество баров, имеющихся на момент предыдущего запуска индикатора, то есть, количество уже посчитанных (потенциально, если при предыдущем запуске не было ошибок и не было досрочного завершения) баров, которые не требуют пересчета. При переинициализации пользовательского индикатора либо при значительном обновлении исторических данных это количество автоматически сбрасывается в 0.

 

Rosh, можете ответить чем отличается инициализация индикатора происходящая при запуске терминала от инициализации происходящей при изменении свойств индикатора? Они различны или одинаковы? Почему при изменении свойств индикатора он, затем, прорисовывается весь, а при запуске терминала - нет, хотя и в том и в другом случае в логах указывается одинаковый процесс:

2011.03.17 17:05:09 Fractals EURUSD,M1: initialized




 
zenz:

Rosh, можете ответить чем отличается инициализация индикатора происходящая при запуске терминала от инициализации происходящей при изменении свойств индикатора? Они различны или одинаковы? Почему при изменении свойств индикатора он, затем, прорисовывается весь, а при запуске терминала - нет, хотя и в том и в другом случае в логах указывается одинаковый процесс:

2011.03.17 17:05:09 Fractals EURUSD,M1: initialized


Проверил только что в 392 билде на индикаторе Fractals из Code Base - все отрисовывается полностью.
 
Rosh:

Проверил только что в 392 билде на индикаторе Fractals из Code Base - все отрисовывается полностью.

Извините, только хотел написать, что мой индикатор с этими симптомами я отправил письмом по адресу stringo AT metaquotes.net (послал сегодня где-то в 14-00 Мск) если надо продублирую. Этот лог который я привел просто пример. У моего индикатора процесс такой же, просто я тут экспериментировал с разными индикаторами пытаясь решить проблему. У меня в индикаторе фракталы на минутном графике отображаются из трех таймфреймов: минутном, пятиминутном и часовом.

P.S. Письмо называется "Неправильно работает индикатор в новом билде", отправлено в 14-05 по Москве. Там в коде индикатора и пояснения в чем проблема.

 
zenz:

Извините, только хотел написать, что мой индикатор с этими симптомами я отправил письмом по адресу stringo AT metaquotes.net (послал сегодня где-то в 14-00 Мск) если надо продублирую. Этот лог который я привел просто пример. У моего индикатора процесс такой же, просто я тут экспериментировал с разными индикаторами пытаясь решить проблему. У меня в индикаторе фракталы на минутном графике отображаются из трех таймфреймов: минутном, пятиминутном и часовом.

P.S. Письмо называется "Неправильно работает индикатор в новом билде", отправлено в 14-05 по Москве. Там в коде индикатора и пояснения в чем проблема.


Ваше письмо до сих пор не дошло. Может попробуете через сервисдеск заявку послать? Для этого Вам необходимо будет зарегистрироваться на форуме //
 
stringo:

Ваше письмо до сих пор не дошло. Может попробуете через сервисдеск заявку послать? Для этого Вам необходимо будет зарегистрироваться на форуме //

Посмотрите, пожалуйста, в личные сообщения. Я Вам туда продублировал, думаю, так будет быстрее.
 
stringo:


Какие факты? Вам же было сказано - используйте IndicatorCounted как основной инструмент для экономного пересчёта.

Как тогда быть с переинициализацией буферов при смене символа-периода? Как быть с переинициализацией буферов при докачке истории в середину? Это - не ошибочная и не лишняя переинициализация!

Факты говорят о другом. Если не сделать эту "ошибочную" и "лишнюю" переинициализацию, то правильно написанный пользовательский ЗигЗаг не пересчитает и не перерисует изменившийся экстремум.

Факты выложил в теме про 387 билд по вашей (разработчиков) просьбе.

Ещё раз повторяю. В моей реализации не нужна функция IndicatorCounted(). Потому что у меня данные в буфере не меняются. Мне не надо после каждого обновления графика очищать и заполнять буфера.

Кто Вам мешает проверить работу выложенного мной индикатора на 229 и 392 билдах и сравнить?

 
Zhunko:

Факты выложил в теме про 387 билд по вашей (разработчиков) просьбе.

Ещё раз повторяю. В моей реализации не нужна функция IndicatorCounted(). Потому что у меня данные в буфере не меняются. Мне не надо после каждого обновления графика очищать и заполнять буфера.

Кто Вам мешает проверить работу выложенного мной индикатора на 229 и 392 билдах и сравнить?


Я уже сказал Вам про Ваш индикатор.

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

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

Если Вы не хотите переписывать Ваши индикаторы по-правильному - это Ваше право. Но мы не будем возвращать исправленный баг на прежнее место из-за Вашей прихоти.

Дискуссия на данную тему окончена.

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