hoffstadt / hoffstadt/DearPyGui

Candle Series does not plot 1 min candle bodies

Open
#1,659 1 comment 0 reactions 0 assignees View on GitHub
category: plots priority: high type: bug
Dominant language
C++
Stars
15.6k
Forks
783
PR merge metrics
No merged PRs in 30d

Description

Candles with 1min time resolutions are not handled properly: the body of the candle is not plotted as shown is this example.
2min bar bodies however are properly drawn.

Here is some data and a small test that shows the problem:

```
import dearpygui.dearpygui as dpg

dpg.create_context()
dpg.create_viewport(title="Demo", width=1200, height=800)
dpg.setup_dearpygui()

x = [1621429200.0, 1621429260.0, 1621429320.0, 1621429380.0, 1621429440.0, 1621429500.0, 1621429560.0, 1621429620.0, 1621429680.0, 1621429740.0, 1621429800.0, 1621429860.0, 1621429920.0, 1621429980.0, 1621430040.0, 1621430100.0, 1621430160.0, 1621430220.0, 1621430280.0, 1621430340.0, 1621430400.0, 1621430460.0, 1621430520.0, 1621430580.0, 1621430640.0, 1621430700.0, 1621430760.0, 1621430820.0, 1621430880.0, 1621430940.0, 1621431000.0, 1621431060.0, 1621431120.0, 1621431180.0, 1621431240.0, 1621431300.0, 1621431360.0, 1621431420.0, 1621431480.0, 1621431540.0]
c = [35234.62, 34483.64, 34203.46, 33591.59, 32801.65, 33333.4, 32988.19, 33081.37, 32398.02, 31361.26, 30101, 31392.53, 32100, 32129.27, 32093.54, 32300.46, 33269.47, 33500, 33541.98, 34464.52, 35337.6, 35181.77, 33141.61, 33982.11, 34048.84, 34500.01, 34400, 34270.97, 34270.05, 34000, 33601.85, 34102.48, 34290.33, 34620.33, 34900.78, 35469.28, 35113.97, 35250, 35109.89, 35513.51]
o = [35226.38, 35234.62, 34483.65, 34179.61, 33591.59, 32800.47, 33358.6, 32901.09, 33084.2, 32674.76, 31361.26, 30101, 30980.33, 32180.03, 32129.27, 32103.94, 32437.76, 33269.47, 33534.58, 33540, 34475.5, 35348.35, 35299.52, 33141.61, 33982.11, 34029.01, 34500.01, 34467.85, 34270.97, 34270.05, 34000, 33601.86, 34152.69, 34290.33, 34620.33, 34900.78, 35484.44, 35112.82, 35221.98, 35114.7]
h = [35234.62, 36013.2, 34700, 34400, 33842.25, 34185.18, 33590, 33351.82, 33700, 32674.76, 31450.54, 31474.97, 32400.01, 32666, 32500, 32500, 33400, 33666, 33966, 34587.07, 35700, 35900, 35552.91, 34000, 34200, 34540.32, 35000, 34644.14, 34501.74, 34370, 34039.38, 34295.62, 34400, 34939, 35000, 35777.77, 35742.5, 35500, 35400, 35549.03]
l = [35226.38, 34000, 33972.76, 33570.38, 32500, 32641.15, 32780.98, 32667.44, 32250, 31337, 30100, 30000, 30925.82, 31750, 31200, 32000, 32200, 33044.82, 32963.04, 33499.99, 34416.47, 35180, 33000, 33000, 33600, 33590.85, 34200.1, 34000, 33662.52, 33788.17, 33500, 33500.04, 33703.05, 33871.99, 34457.77, 34800, 35000, 35000, 35000, 35068.32]

# artificially create a 2min bar spacing
xx = [t+i*1*60 for i, t in enumerate(x)]

# do the gui layout
with dpg.window(tag="main_window"):
with dpg.plot(label="Candle Series", height=500, width=-1):
dpg.add_plot_legend()
xaxis = dpg.add_plot_axis(dpg.mvXAxis, label="Day", time=True)
with dpg.plot_axis(dpg.mvYAxis, label="USDT"):
dpg.add_line_series(x, o, label="open")
dpg.add_line_series(x, c, label="close")
dpg.add_line_series(x, h, label="high")
dpg.add_line_series(x, l, label="low")
dpg.add_candle_series(x, opens=o, closes=c, highs=h, lows=l, label="Bar-BTCUSDT")
dpg.fit_axis_data(dpg.top_container_stack())
dpg.fit_axis_data(xaxis)
with dpg.plot(label="Candle Series", height=500, width=-1):
dpg.add_plot_legend()
xaxis = dpg.add_plot_axis(dpg.mvXAxis, label="Day", time=True)
with dpg.plot_axis(dpg.mvYAxis, label="USDT"):
dpg.add_line_series(xx, o, label="open")
dpg.add_line_series(xx, c, label="close")
dpg.add_line_series(xx, h, label="high")
dpg.add_line_series(xx, l, label="low")
dpg.add_candle_series(xx, opens=o, closes=c, highs=h, lows=l, label="Bar-BTCUSDT", )
dpg.fit_axis_data(dpg.top_container_stack())
dpg.fit_axis_data(xaxis)

dpg.show_viewport()
dpg.set_primary_window("main_window", True)
dpg.start_dearpygui()
dpg.destroy_context()
```

Would be great if it could be fixed. Also for bars with less than 1min resolution, e.g. as needed for instance in HFT.

Regarding the documentation it would be good to clarify if the order of the values in `set_values` for a candle series is as in the
`add_candle_series` i.e.

```
dpg.set_value(self.series_tag(update.key), [update.time, update.open, update.close, update.low, update.high])
```

## Version of Dear PyGui

Version: 1.4.0
Operating System: macOs 11.5.2

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.