Files
strategy-lab/research/chartMultipleMarkers.ipynb

96 lines
3.0 KiB
Plaintext

{
"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
}