Canvas - это круто! - страница 89

 
Nikolai Semko #:
Дело в том, что при реализации подобного неизбежно столкнетесь с катастрофической нехваткой длины слайдера. 
Как правило подобное реализуют в одном слайдере, а не в одном, ширину кнопки которого можно менять, перетаскивая за её края, меняя таким образом масштаб. Но и такой подход не решает проблему длины слайдера, хотя такой подход более удобный. 

ага, столкнулся уже ;)

сделал длинный

все эти танцы с бубном были только для того

чтобы увидеть, как реально и главное от чего и почему ходит цена

ну все понятно теперь ;)))

в терминале красиво конечно нарисовано, но это не правда!

правильный чарт в прицепе
Файлы:
777.png  15 kb
 
Renat Akhtyamov #:

ага, столкнулся уже ;)

сделал длинный

все эти танцы с бубном были только для того

чтобы увидеть, как реально ходит и главное от чего и почему ходит цена

ну все понятно теперь ;)))

как по мне, так намного удобнее и нагляднее двумерный слайдер, координата по высоте которого отвечает за масштаб.
Что-то наподобие такого:

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

 
Nikolai Semko #:

как по мне, так намного удобнее и нагляднее двумерный слайдер, координата по высоте которого отвечает за масштаб.
Что-то наподобие такого:

у тебя очень крутой получился ;)

 
Renat Akhtyamov #:

у тебя очень крутой получился ;)

Спасибо,
хочу полноценный такой сделать на WebAssembly (на Rust)

 
Nikolai Semko #:

Спасибо,
хочу полноценный такой сделать на WebAssembley (на Rust)

ага

главно не надо ничего переключать

масштабируется минимальный таймфрейм

а то в недоумении - как так, сигналы разные на разных таймфреймах получаются при одной и той же цене?

кто в лес, кто по дрова....

таймфреймы даже не нужны по сути

тики нужны и все

 
Renat Akhtyamov #:

ага

главно не надо ничего переключать

масштабируется минимальный таймфрейм

а то в недоумении - как так, сигналы разные на разных таймфреймах получаются при одной и той же цене?

кто в лес, кто по дрова....

таймфреймы даже не нужны по сути

тики нужны и все

Да, текущая модель таймфреймов очень неудобна. Каждый бар старшего ТФ содержит разное количество минутных бар. При такой структуре, если старший ТФ плавно уменьшить до младшего, то чарты не будут совпадать.
Я нашел для себя приемлемое решение. 
Из M1 я формирую следующие индексные ТФ M2, M4, M8, M16, M32, M64, M128, M256, M1024, M2048 , M4096, M8192
В этом случае каждый бар любого таймфрейма гарантировано содержит одинаковое количество М1. 
Масштабируются все ТФ одинаково и очень лёгкий пересчет ТФ буквально в одно математическое действие. И ещё масса преимуществ. 
То, что каждый бар старшего ТФ может быть разной временной плотности, это меня не смущает, т.к. больше важна не временная плотность, а торговая. 
Вполне допустимо для измерения торговой плотности использовать количество минутных бар. 
Можно пойти дальше и для измерения торговой плотности использовать тики.
 
Nikolai Semko #:
Да, текущая модель таймфреймов очень неудобна. Каждый бар старшего ТФ содержит разное количество минутных бар. При такой структуре, если старший ТФ плавно уменьшить до младшего, то чарты не будут совпадать.
Я нашел для себя приемлемое решение. 
Из M1 я формирую следующие индексные ТФ M2, M4, M8, M16, M32, M64, M128, M256, M1024, M2048 , M4096, M8192
В этом случае каждый бар любого таймфрейма гарантировано содержит одинаковое количество М1. 
Масштабируются все ТФ одинаково и очень лёгкий пересчет ТФ буквально в одно математическое действие. И ещё масса преимуществ. 
То, что каждый бар старшего ТФ может быть разной временной плотности, это меня не смущает, т.к. больше важна не временная плотность, а торговая. 
Вполне допустимо для измерения торговой плотности использовать количество минутных бар. 
Можно пойти дальше и для измерения торговой плотности использовать тики.

я не совсем верно выразился

не масштабируются, а сжимаются.

ТФмы исчезают
 
Renat Akhtyamov #:

я не совсем верно выразился

не масштабируются, а сжимаются.

ТФмы исчезают
Т.к. я использую только М1, то для меня такой проблемы не существует.
Скорей всего это проблема синхронности актуальности формирования массивов старших ТФ, т к. У MQ они тоже все формируются (рассчитываются) из М1
Или твоя ошибка
 

Помогите разобраться с понятием графического ресурса и чем он отличается от понятия графического объекта на графике.

Например, если удалю графический объект, созданный с помощью Canvas с помощью функции ObjectDelete(), и потом в цикле буду снова и снова создавать Canvas объекты с другими именами, но с помощью все того же экземпляр класса Canvas... и снова удалять графические объекты с помощью ObjectDelete(). Это вообще чем-то чревато?

Просто я даже пока не совсем понимаю разницу между ObjectDelete() и С.Destroy(), но вот хотелось бы понять... 

 
leon_17 #:

Помогите разобраться с понятием графического ресурса и чем он отличается от понятия графического объекта на графике.

Например, если удалю графический объект, созданный с помощью Canvas с помощью функции ObjectDelete(), и потом в цикле буду снова и снова создавать Canvas объекты с другими именами, но с помощью все того же экземпляр класса Canvas... и снова удалять графические объекты с помощью ObjectDelete(). Это вообще чем-то чревато?

Просто я даже пока не совсем понимаю разницу между ObjectDelete() и С.Destroy(), но вот хотелось бы понять... 

Канвас это объект, к которому привязан массив пикселей. За привязку этого массива пикселей отвечает Ресурс (см. функцию bool CCanvas::Create())
Плохая практика все время удалять и пересоздавать канвас. 
Хорошая практика создать канвас, когда он нужен и удалить его, когда он больше не будет нужен, например в конце программы. 

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

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