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

 
paladin800:
Говорят же история сама автоматически загрузится. Перед выставлением продукта в маркете попробуйте индикатор на каком-нибудь экзотическом торговом инструменте, по которому точно никогда ничего не делали с огромным периодом и посмотрите что будет. Если будут косяки тогда пишите в сервис-деск.

ну, я как бы знаю, о чём спрашиваю.

У меня ситуация такая - индикатор может быть запущен от m1 до H8, но при этом

а) всегда используются m1-данные;

б) в зависимости от входных параметров, могут быть использованы (а могут и не быть) один  или несколько дополнительных периодов m2...h8.

 Итого, в выходной закидываю на график индикатор, сразу же при попытке получить данные с периода отличного от периода графика получаю ошибку\сообщение, что данные готовятся.

Но следующий тик придёт только в понедельник. 

Выходит, без таймера никак.

Lizar:

Как мне видится, вариант без нормальных тиков был бы правильнее так:

  1. Запускаем индикатор
  2. Начинает загружаться история. Пользователь на чарте видит, что идет загрузка истории. Лучше, если это будет прогресс-бар или %. Либо другой видимый знак свыше.
  3. После 100% синхронизации приходит событие OnCalculate с prev_calculated=0 и последними ценами
  4. Индикатор успешно рассчитывается 
+++ (только должно вызывать для всех сформированных периодов)
 
notused:

+++ (только должно вызывать для всех сформированных периодов)

Безусловно, все, что заказано в OnInit() у официанта должно быть приготовлено и подано к столу в OnCalculate().
 
Lizar:
Безусловно, все, что заказано в OnInit() у официанта должно быть приготовлено и подано к столу в OnCalculate().

Это частичное решение.  

Полное - это без "заказа" в OnInit(), а на основе автоматического "оповещения" потоков, породивших закачку\построение истории.

Хотя, как очередной костыль, сойдёт и в OnInit().

 

Как убрать действия (флажки (новости) ? срочно пожалуйста

действия

 

В контекстном меню календаря выбрать "Удалить все события"

 
alexl:

В контекстном меню календаря выбрать "Удалить все события"

Спасибо, два раза с таким сталкивался, долго они не появлялись, как их отключить, сегодня они сразу все появились, может из-за обновления?
 
notused:

Это частичное решение.  

Полное - это без "заказа" в OnInit(), а на основе автоматического "оповещения" потоков, породивших закачку\построение истории.

Поясните, что-то, похоже, упускаю. Кто этот автоматический "оповещатель"? И кто будет порождать закачку/построение истории, если кроме меня никому не известно какая мне история потребуется? 
 
notused:

Это частичное решение.  

Полное - это без "заказа" в OnInit(), а на основе автоматического "оповещения" потоков, породивших закачку\построение истории

Мне тоже не понятно...что за автоматическое оповещение потоков? 

А если выходной день - то тиков не будет, а мы хотим чтобы индикатор нам строился в любое время, в выходной день мы же можем подкачать себе историю,  не так ли? Т.е. нам придется подкачать историю,  а потом за один подход функции он калькулейт все рассчитать...без разницы что зацикливать - он инит или он калькулейт перед копированием...просто сделать какой-то оповещатель по состоянию загрузки и ограничить итераций в цикле, и если за эти,  например, 100 итераций история не закачалась - оповещать об ошибке и все останавливать(такое будет например когда соединения с интернетом нет и истории тоже нет)...думаю лучше зациклить он инит...я не правильно мыслю? Объясните мне тогда в чем плиз...и как тогда правильно:-) 

 
Lizar:
Поясните, что-то, похоже, упускаю. Кто этот автоматический "оповещатель"? И кто будет порождать закачку/построение истории, если кроме меня никому не известно какая мне история потребуется? 

условно говоря, есть класс, который занимается расчётами.  И допустим у меня есть метод Calc(номер\дата дня). Этот метод возвращает true, если удалось всё подсчитать и в этом случае можно обращаться к другим методам для вытягивания данных для индикаторных буферов\графических объектов.

 Теперь есть индикатор - он вообще не в курсе, как там что считается и какие периоды используются (а в чём смысл ООП?) - его задача вывести данные если они доступны, а какие там периоды используются - тупо не известно (а может ещё инструменты другие - мало ли, какие бывают индикаторы). Конечно, класс можно расширить методом, который вернёт используемые периоды, но не факт что при создании класса, используемые периоды - известны. Конечно, в крайнем случае, можно "заказать" в OnInit() все периоды, но это наверное не рационально.

Каждый индикатор запускается в отдельном потоке. Терминал мог бы запоминать потоки, которые породили построение истории и эти же потоки оповещать об окончании этого процесса посредством того же OnCalculate() в индикаторах или OnTick() в экспертах (хотя в экспертах мне пока не надо :))

Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.