Я делаю так:
1. У каждой боксовой свечки есть только два цвета - цвет текста самого кластера и цвет максимального значения по объему
2. Если надо больше цветов - делаем больше свечек, т.е. допустим мы хотим 4 цвета - значит нужны 4 свечки (4 элемента ChartCandleElement), дальше в каждой свечке рисуем только те кластеры, которые относятся к нужному цвету. Т.е. вручную заполняем CandlePriceLevels
3. Но есть один ньюанс - если в свечке для какого либо цвета нет значений или все значения volume равны нулю, то свечка с пустым набором CandlePriceLevels не нарисуется, а пропустится и тогда следующая свечка нарисуется не там где надо и всё поедет. В этом случае для такой свечки я в каком-то одном кластере рисую один уровень CandlePriceLevel с volume = 1.
4. На закуску под боксовыми свечками можно нарисовать профильные свечки по такому же принципу и тогда возможности рисования еще расширятся, так как будут видны и цифры и профили (цвет текста в профиле надо сделать прозрачным или под цвет кластера, чтобы он не накладывался на текст в боксовой свечке).
5. Все границы фреймов в боксовых свечках прозрачные, чтобы не мешали
6. Нельзя задать volume меньше нуля для кластера, тогда свечка не нарисуется. Т.е. до свиданья отрицательная дельта.
Это конечно всё через одно место, но куда плывет корабль StockSharp никому не известно, а делать нормальную фильтрацию и раскраску кластеров они судя по всему не собираются. В общем это единственный способ, который работает.
Картинка что в итоге получается зеленые - аски, ярко зеленые - максимальные аски, красные - биды, зеленая или коричневая подложка - имбаланс по аску/биду:
Надеюсь понятно изложил.