- Added `trend_line` and `ray_line` to the Common Methods.
- Added the `toolbox` parameter to chart declaration. This allows horizontal lines, trend lines and rays to be drawn on the chart using hotkeys and buttons.
- cmd-Z will delete the last drawing.
- Drawings can be moved by clicking and dragging.
- Added the `render_drawings` parameter to `set`, which will keep and re-render the drawings displayed on the chart (useful for multiple timeframes!)
Horizontal Lines
- The `horizontal_line` method now returns a HorizontalLine object, containing the methods `update` and `delete`.
- Added the `interactive` parameter to `horizontal_line`, allowing for callbacks to be emitted to the `on_horizontal_line_move` callback method when the line is dragged to a new price (stop losses, limit orders, etc.).
Enhancements:
- added the `precision` method to the Common Methods, allowing for the number of decimal places shown on the price scale to be declared.
- Lines displayed on legends now have toggle switches, allowing for their visibility to be controlled directly within the chart window.
- when using `set`, the column names can now be capitalised, and the `date` column can be the index.
Changes:
- Merged the `title` method into the `price_line` method.
28 lines
679 B
Python
28 lines
679 B
Python
import pandas as pd
|
|
from lightweight_charts import Chart
|
|
|
|
|
|
def calculate_sma(data: pd.DataFrame, period: int = 50):
|
|
def avg(d: pd.DataFrame):
|
|
return d['close'].mean()
|
|
result = []
|
|
for i in range(period - 1, len(data)):
|
|
val = avg(data.iloc[i - period + 1:i])
|
|
result.append({'time': data.iloc[i]['date'], f'SMA {period}': val})
|
|
return pd.DataFrame(result)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
chart = Chart(debug=True)
|
|
chart.legend(visible=True)
|
|
|
|
df = pd.read_csv('ohlcv.csv')
|
|
chart.set(df)
|
|
|
|
line = chart.create_line()
|
|
sma_data = calculate_sma(df, period=50)
|
|
line.set(sma_data, name='SMA 50')
|
|
|
|
chart.show(block=True)
|