daily update
This commit is contained in:
95
research/lw_chart_markers.ipynb
Normal file
95
research/lw_chart_markers.ipynb
Normal file
@ -0,0 +1,95 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"import vectorbtpro as vbt\n",
|
||||
"from lightweight_charts import chart, Panel\n",
|
||||
"\n",
|
||||
"# Pulling ETH-USD data\n",
|
||||
"data = vbt.YFData.pull(\"ETH-USD\")\n",
|
||||
"close = data.close\n",
|
||||
"high = data.high\n",
|
||||
"low = data.low\n",
|
||||
"\n",
|
||||
"# Define a simple moving average crossover strategy using EWM\n",
|
||||
"short_ma = vbt.MA.run(close, window=6, wtype=\"exp\").ma\n",
|
||||
"long_ma = vbt.MA.run(close, window=73, wtype=\"exp\").ma\n",
|
||||
"\n",
|
||||
"# Generate signals\n",
|
||||
"long_entries = short_ma > long_ma\n",
|
||||
"long_exits = short_ma < long_ma\n",
|
||||
"short_entries = short_ma < long_ma\n",
|
||||
"short_exits = short_ma > long_ma\n",
|
||||
"\n",
|
||||
"clean_long_entries, clean_long_exits = long_entries.vbt.signals.clean(long_exits)\n",
|
||||
"clean_short_entries, clean_short_exits = short_entries.vbt.signals.clean(short_exits)\n",
|
||||
"\n",
|
||||
"# ohlcv_df = data.ohlcv.get()\n",
|
||||
"\n",
|
||||
"#assume i want to display simple entries or exits on series or ohlcv \n",
|
||||
"#based on tuple positions it determines entries or exits (and set colors and shape accordingly)\n",
|
||||
"pane1 = Panel(\n",
|
||||
" ohlcv=(data.ohlcv.get(), clean_long_entries, clean_short_entries)\n",
|
||||
")\n",
|
||||
"ch = chart([pane1], title=\"Chart with Entry/Exit Markers\", session=None, size=\"s\")\n",
|
||||
"\n",
|
||||
"#if you want to display more entries or exits, use tuples with their colors\n",
|
||||
"pane1 = Panel(\n",
|
||||
" ohlcv=(data.ohlcv.get(),\n",
|
||||
" [(clean_long_entries, \"yellow\"), (clean_short_entries, \"pink\")], #list of entries tuples with color\n",
|
||||
" [(clean_long_exits, \"yellow\"), (clean_short_exits, \"pink\")] #list of exits tuples with color\n",
|
||||
" ), \n",
|
||||
")\n",
|
||||
"\n",
|
||||
"# # Create the chart with the panel\n",
|
||||
"ch = chart([pane1], title=\"Chart with EntryShort/ExitShort (yellow) and EntryLong/ExitLong markers (pink)\", sync=True, session=None, size=\"s\")\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"# # Add the markers to the chart using markers_set method\n",
|
||||
"# entry_signals = pd.DataFrame({\n",
|
||||
"# 'time': clean_long_entries.index.astype(str),\n",
|
||||
"# 'value': clean_long_entries.values\n",
|
||||
"# }).dropna()\n",
|
||||
"# entry_signals['value'] = entry_signals['value'].astype(bool)\n",
|
||||
"\n",
|
||||
"# ch.markers_set(entry_signals, type='entries')"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": ".venv",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.11"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
Reference in New Issue
Block a user