К разработчикам. Реал-тайм индикатор - страница 3

 
Михаил:

Треть инфы будет теряться в стандартном индикаторе( посмотрите код в первом посте )!

А писать с "нуля" свой индикатор "рука не поднимается" - хорошо же сделан стандартный!

До и как осуществить в своём индикаторе доступ к буферам из советника?

Одним словом - большая головная боль. 

Зачем Temp-массивы? Достаточно при появлении новых данных сдвигать старые данные в индикаторных буферах (и не делать этого, если одновременно с появлением новых бид/аск появился бар - они и так сдвинутся).

И почему вы считаете, что потеряются данные? OnBookEvent разве не обработает все события из очереди?

Про доступ к индикаторным буферам из советника вам уже давали ссылку, совсем недавно было обсуждение и по итогам выложен код в базу.

 
Фьючерсные объемы для МТ:

Объекты или канва.

Разрабы на это не пойдут, гарантия. 

В свете открытия доступа к внешней информации может и пойдут...

Как работать с этой новой инфой в терминале? Свечки минутные нарезать? :))) Или вся это инфа нужна будет только для тестирования?

А так можно будет и ренко и тиковые и всё что душе угодно... И всё без костылей....

 
Andrey Khatimlianskii:

Зачем Temp-массивы? Достаточно при появлении новых данных сдвигать старые данные в индикаторных буферах (и не делать этого, если одновременно с появлением новых бид/аск появился бар - они и так сдвинутся).

И почему вы считаете, что потеряются данные? OnBookEvent разве не обработает все события из очереди?

Про доступ к индикаторным буферам из советника вам уже давали ссылку, совсем недавно было обсуждение и по итогам выложен код в базу. Сейчас найду. 

В OnBookEvent() обрабатывает все события, но отрисовываются буферы только в OnCalculate() с резайзом буферов - "дырки" получатся.

На один OnCalculate() может приходить 100 OnBookEvent() 

А потом, сам размер буфера очень маленький, ну сдвинул 20 раз, а потом? 

 

P/S Не думаю, что из OnBookEvent() можно сдвигать значения буферов.

Завтра попробую. 

 
Михаил:
В OnBookEvent() обрабатывает все события, но отрисовываются буферы только в OnCalculate() с резайзом буферов - "дырки" получатся.
Буфер индикатора можно заполнять из любой функции. А вот размер буфера меняется (сам) только в OnCalculate(). Слово "отрисовываются" не очень правильное.
 
Andrey Miguzov:
Буфер индикатора можно заполнять из любой функции. А вот размер буфера меняется (сам) только в OnCalculate(). Слово "отрисовываются" не очень правильное.

Виноват :)

Буферы нужно не только заполнять, но и сдвигать данные в буферах. А много ли инфы уместится на Н1, где размер буфера ~800 ?

А на малоликвидных инструментах вообще пшик (всего 30-40)!!!!  

Для синтетических Ask и Bid размера буфера INT_MAX малова-то будет.

Хотелось бы ULONG_MAX

И ещё малоприятный момент. Calculate() может приходить раз в минуту!!!! 

>> А так можно будет и ренко и тиковые и всё что душе угодно... И всё без костылей.... 

+1000000000000000000000000000000000 

 
Михаил:

В OnBookEvent() обрабатывает все события, но отрисовываются буферы только в OnCalculate() с резайзом буферов - "дырки" получатся.

На один OnCalculate() может приходить 100 OnBookEvent() 

ОнКалкулейт можно вызывать самому откуда угодно.


Михаил:

А много ли инфы уместится на Н1, где размер буфера ~800 ?

А на малоликвидных инструментах вообще пшик (всего 30-40)!!!!  

Для синтетических Ask и Bid размера буфера INT_MAX малова-то будет.

Ответьте на мой вопрос: куда вы хотите вставить ULONG_MAX данных, если на графике всего 800 точек по горизонтали? Сжимать, или рисовать слева, где нет баров?
В любом случае, ни той ни той возможности нет.

Поэтому вариант 1: рисовать на графике инструмента, у которого больше всего истории (сам график можно скрыть, развернув подокно индикатора на 100%).

И вариант 2: ждать, пока сделают "свои котировки в МТ5", и слать свои бид/аск туда.

 
Andrey Khatimlianskii:

ОнКалкулейт можно вызывать самому откуда угодно.


Ответьте на мой вопрос: куда вы хотите вставить ULONG_MAX данных, если на графике всего 800 точек по горизонтали? Сжимать, или рисовать слева, где нет баров?
В любом случае, ни той ни той возможности нет.

Поэтому вариант 1: рисовать на графике инструмента, у которого больше всего истории (сам график можно скрыть, развернув подокно индикатора на 100%).

И вариант 2: ждать, пока сделают "свои котировки в МТ5", и слать свои бид/аск туда.

 

Вариант 1:

Отображаться будут последние 800 точек, а остальные будут в буфере "невидимыми" графически,

но доступными из кода. 

2. Делать полный скролл, не отображая бары на чарте. 

3. Делать асинхронный скролл, чарта и индикатора 

4. Полуасинхронный скрол (самый лучший) Синхронное скролирование по количеству баров - а дальше только индикатор. 

>> ОнКалкулейт можно вызывать самому откуда угодно.

Вызвать-то можно, но при этом буферы не меняют размера. 

 

P/S Повторяю, что в 99% не интересна привязка ко времени, интересны только сами ценовые значения.

Да и визуально удобнее работать, когда ты видишь в реальном времени, изменения реального(заявки), а не пост (совершилась сделка) рынка

 

P/S Не думаю, что у разработчиков могут возникнуть сложности с реализацией этой идеи (может и заблуждаюсь).

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

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

Нет флага - стандарные функции индикатора, есть флаг - работаем без времени на "всю катушку" :) 

При этом все стандартные прелести индикатора всегда "под рукой". 

 

Изначально неправильное направление для решения отображения котировок. Дать пользователю возможность менять размерность индикаторных буферов - это как вложить гранату в руку обезьяне.

Если и смотреть возможность реализации - то выше советовали: объекты, Canvas. В качестве образца - новый стакан в МТ5 с лентой сделок. Да, работы много, да, придётся самостоятельно решать много вопросов - но это всё проблема программиста и только его.

 

Не путайте пользователя и программиста!

НЕ ПОЛЬЗОВАТЕЛЬ будет переключать индикатор в этот режим. 

P/S И большая просьба.

Не отвечайте за разработчиков.

Откуда Вы можете знать: Может им понравится моя идея? 

 
Михаил:

Не путайте пользователя и программиста!

НЕ ПОЛЬЗОВАТЕЛЬ будет переключать индикатор в этот режим. 

P/S И большая просьба.

Не отвечайте за разработчиков.

Откуда Вы можете знать: Может им понравится моя идея? 

Идеи нужно оформлять в Сервисдеск, а на форуме идёт обмен мнениями. Вам уже несколько человек пытаются подсказать пути решения задачи, просто Вы, видимо не слышите.
Причина обращения: