96 lines
3.0 KiB
Plaintext
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
|
|
}
|