Refactoring/Enhancements/Fixes
Breaking Changes:
- Removed the `api` parameter; callbacks no longer need to be in a specific class.
- Topbar callbacks now take a chart as an argument (see updated callback examples)
- Removed the `topbar` parameter from chart declaration. The Topbar will be automatically created upon declaration of a topbar widget.
- Removed the `searchbox` parameter from charts. It will be created upon subscribing to it in `chart.events`.
- Removed `dynamic_loading`.
- Removed ‘volume_enabled’ parameter. Volume will be enabled if the volumn column is present in the dataframe.
- Widgets’ `func` parameter is now declared last.
- Switchers take a tuple of options rather than a variable number of arguments.
- `add_hotkey` renamed to `hotkey`
- Horizontal lines now take a `func` argument rather than `interactive`. This event will emit the Line object that was moved.
- Removed the `name` parameter from `line.set`. Line object names are now declared upon creation.
Enhancements:
- Added the `button` widget to the Topbar.
- Added the color picker to the drawing context menu.
- Charts now have a `candle_data` method, which returns the current data displayed on the chart as a DataFrame.
- Fixed callbacks are now located in the `chart.events` object:
- search (e.g `chart.events.search += on_search`)
- new_bar
- range_change
- Added volume to the legend
- Drawings can now be accessed through `chart.toolbox.drawings`
- added the `style` and `name` parameters to `create_line`
Bug Fixes:
- Fixed a bug causing new charts not to load after `exit` was called.
- Refactored rayline placement to ensure they do not move the visible range.
- Fixed a bug causing the visible range to shift when trendlines are moved past the final candlestick.
- Fixed a bug preventing trendlines and raylines on irregular timeframes.
- Fixed a bug causing the legend to prevent mouse input into the chart.
This commit is contained in:
@ -43,32 +43,30 @@ If `cumulative_volume` is used, the volume data given will be added onto the lat
|
||||
___
|
||||
|
||||
## `create_line` (Line)
|
||||
`color: str` | `width: int` | `price_line: bool` | `price_label: bool` | `-> Line`
|
||||
`name: str` | `color: str` | `style: LINE_STYLE`| `width: int` | `price_line: bool` | `price_label: bool` | `-> Line`
|
||||
|
||||
Creates and returns a `Line` object, representing a `LineSeries` object in Lightweight Charts and can be used to create indicators. As well as the methods described below, the `Line` object also has access to:
|
||||
[`title`](#title), [`marker`](#marker), [`horizontal_line`](#horizontal-line) [`hide_data`](#hide-data), [`show_data`](#show-data) and[`price_line`](#price-line).
|
||||
|
||||
Its instance should only be accessed from this method.
|
||||
|
||||
|
||||
### `set`
|
||||
`data: pd.DataFrame` `name: str`
|
||||
`data: pd.DataFrame`
|
||||
|
||||
Sets the data for the line.
|
||||
|
||||
When not using the `name` parameter, the columns should be named: `time | value` (Not case sensitive).
|
||||
When a name has not been set upon declaration, the columns should be named: `time | value` (Not case sensitive).
|
||||
|
||||
Otherwise, the method will use the column named after the string given in `name`. This name will also be used within the legend of the chart. For example:
|
||||
```python
|
||||
line = chart.create_line()
|
||||
line = chart.create_line('SMA 50')
|
||||
|
||||
# DataFrame with columns: date | SMA 50
|
||||
df = pd.read_csv('sma50.csv')
|
||||
|
||||
line.set(df, name='SMA 50')
|
||||
line.set(df)
|
||||
```
|
||||
|
||||
|
||||
### `update`
|
||||
`series: pd.Series`
|
||||
|
||||
@ -76,7 +74,6 @@ Updates the data for the line.
|
||||
|
||||
This should be given as a Series object, with labels akin to the `line.set()` function.
|
||||
|
||||
|
||||
### `delete`
|
||||
Irreversibly deletes the line.
|
||||
|
||||
@ -263,8 +260,8 @@ ___
|
||||
Shows the hidden candles on the chart.
|
||||
___
|
||||
|
||||
## `add_hotkey`
|
||||
`modifier: 'ctrl'/'shift'/'alt'/'meta'` | `key: str/int/tuple` | `method: object`
|
||||
## `hotkey`
|
||||
`modifier: 'ctrl'/'shift'/'alt'/'meta'` | `key: str/int/tuple` | `func: callable`
|
||||
|
||||
Adds a global hotkey to the chart window, which will execute the method or function given.
|
||||
|
||||
@ -273,26 +270,29 @@ When using a number in `key`, it should be given as an integer. If multiple key
|
||||
```python
|
||||
def place_buy_order(key):
|
||||
print(f'Buy {key} shares.')
|
||||
|
||||
|
||||
|
||||
|
||||
def place_sell_order(key):
|
||||
print(f'Sell all shares, because I pressed {key}.')
|
||||
|
||||
|
||||
chart.add_hotkey('shift', (1, 2, 3), place_buy_order)
|
||||
chart.add_hotkey('shift', 'X', place_sell_order)
|
||||
if __name__ == '__main__':
|
||||
chart = Chart()
|
||||
chart.hotkey('shift', (1, 2, 3), place_buy_order)
|
||||
chart.hotkey('shift', 'X', place_sell_order)
|
||||
chart.show(block=True)
|
||||
```
|
||||
|
||||
___
|
||||
|
||||
## `create_table`
|
||||
`width: int/float` | `height: int/float` | `headings: tuple[str]` | `widths: tuple[float]` | `alignments: tuple[str]` | `position: 'left'/'right'/'top'/'bottom'` | `draggable: bool` | `method: object`
|
||||
`width: int/float` | `height: int/float` | `headings: tuple[str]` | `widths: tuple[float]` | `alignments: tuple[str]` | `position: 'left'/'right'/'top'/'bottom'` | `draggable: bool` | `func: callable` | `-> Table`
|
||||
|
||||
Creates and returns a [`Table`](https://lightweight-charts-python.readthedocs.io/en/latest/tables.html) object.
|
||||
___
|
||||
|
||||
## `create_subchart` (SubChart)
|
||||
`volume_enabled: bool` | `position: 'left'/'right'/'top'/'bottom'`, `width: float` | `height: float` | `sync: bool/str` | `-> SubChart`
|
||||
`position: 'left'/'right'/'top'/'bottom'`, `width: float` | `height: float` | `sync: bool/str` | `scale_candles_only: bool`|`toolbox: bool` | `-> SubChart`
|
||||
|
||||
Creates and returns a `SubChart` object, placing it adjacent to the previous `Chart` or `SubChart`. This allows for the use of multiple chart panels within the same `Chart` window. Its instance should only be accessed by using this method.
|
||||
|
||||
@ -335,7 +335,6 @@ if __name__ == '__main__':
|
||||
|
||||
```
|
||||
|
||||
|
||||
### Synced Line Chart Example:
|
||||
|
||||
```python
|
||||
@ -346,17 +345,16 @@ if __name__ == '__main__':
|
||||
chart = Chart(inner_width=1, inner_height=0.8)
|
||||
chart.time_scale(visible=False)
|
||||
|
||||
chart2 = chart.create_subchart(width=1, height=0.2, sync=True, volume_enabled=False)
|
||||
chart2 = chart.create_subchart(width=1, height=0.2, sync=True)
|
||||
line = chart2.create_line()
|
||||
|
||||
df = pd.read_csv('ohlcv.csv')
|
||||
df2 = pd.read_csv('rsi.csv')
|
||||
|
||||
chart.set(df)
|
||||
line = chart2.create_line()
|
||||
line.set(df2)
|
||||
|
||||
chart.show(block=True)
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user