chore: ruff format notebook

This commit is contained in:
Matthias 2024-08-19 19:59:15 +02:00
parent d2c908b1ab
commit ce66fbb595
2 changed files with 73 additions and 78 deletions

View File

@ -21,10 +21,10 @@ project_root = "somedir/freqtrade"
i = 0 i = 0
try: try:
os.chdir(project_root) os.chdir(project_root)
if not Path('LICENSE').is_file(): if not Path("LICENSE").is_file():
i = 0 i = 0
while i < 4 and (not Path('LICENSE').is_file()): while i < 4 and (not Path("LICENSE").is_file()):
os.chdir(Path(Path.cwd(), '../')) os.chdir(Path(Path.cwd(), "../"))
i += 1 i += 1
project_root = Path.cwd() project_root = Path.cwd()
except FileNotFoundError: except FileNotFoundError:
@ -63,7 +63,8 @@ from freqtrade.data.history import load_pair_history
from freqtrade.enums import CandleType from freqtrade.enums import CandleType
candles = load_pair_history(datadir=data_location, candles = load_pair_history(
datadir=data_location,
timeframe=config["timeframe"], timeframe=config["timeframe"],
pair=pair, pair=pair,
data_format="json", # Make sure to update this to your data data_format="json", # Make sure to update this to your data
@ -90,7 +91,7 @@ strategy.dp = DataProvider(config, None, None)
strategy.ft_bot_start() strategy.ft_bot_start()
# Generate buy/sell signals using strategy # Generate buy/sell signals using strategy
df = strategy.analyze_ticker(candles, {'pair': pair}) df = strategy.analyze_ticker(candles, {"pair": pair})
df.tail() df.tail()
``` ```
@ -109,7 +110,7 @@ df.tail()
```python ```python
# Report results # Report results
print(f"Generated {df['enter_long'].sum()} entry signals") print(f"Generated {df['enter_long'].sum()} entry signals")
data = df.set_index('date', drop=False) data = df.set_index("date", drop=False)
data.tail() data.tail()
``` ```
@ -141,25 +142,24 @@ backtest_dir = config["user_data_dir"] / "backtest_results"
# This contains all information used to generate the backtest result. # This contains all information used to generate the backtest result.
stats = load_backtest_stats(backtest_dir) stats = load_backtest_stats(backtest_dir)
strategy = 'SampleStrategy' strategy = "SampleStrategy"
# All statistics are available per strategy, so if `--strategy-list` was used during backtest, # All statistics are available per strategy, so if `--strategy-list` was used during backtest,
# this will be reflected here as well. # this will be reflected here as well.
# Example usages: # Example usages:
print(stats['strategy'][strategy]['results_per_pair']) print(stats["strategy"][strategy]["results_per_pair"])
# Get pairlist used for this backtest # Get pairlist used for this backtest
print(stats['strategy'][strategy]['pairlist']) print(stats["strategy"][strategy]["pairlist"])
# Get market change (average change of all pairs from start to end of the backtest period) # Get market change (average change of all pairs from start to end of the backtest period)
print(stats['strategy'][strategy]['market_change']) print(stats["strategy"][strategy]["market_change"])
# Maximum drawdown () # Maximum drawdown ()
print(stats['strategy'][strategy]['max_drawdown']) print(stats["strategy"][strategy]["max_drawdown"])
# Maximum drawdown start and end # Maximum drawdown start and end
print(stats['strategy'][strategy]['drawdown_start']) print(stats["strategy"][strategy]["drawdown_start"])
print(stats['strategy'][strategy]['drawdown_end']) print(stats["strategy"][strategy]["drawdown_end"])
# Get strategy comparison (only relevant if multiple strategies were compared) # Get strategy comparison (only relevant if multiple strategies were compared)
print(stats['strategy_comparison']) print(stats["strategy_comparison"])
``` ```
@ -189,14 +189,13 @@ from freqtrade.data.btanalysis import load_backtest_stats
# backtest_dir = config["user_data_dir"] / "backtest_results" # backtest_dir = config["user_data_dir"] / "backtest_results"
stats = load_backtest_stats(backtest_dir) stats = load_backtest_stats(backtest_dir)
strategy_stats = stats['strategy'][strategy] strategy_stats = stats["strategy"][strategy]
df = pd.DataFrame(columns=['dates','equity'], data=strategy_stats['daily_profit']) df = pd.DataFrame(columns=["dates", "equity"], data=strategy_stats["daily_profit"])
df['equity_daily'] = df['equity'].cumsum() df["equity_daily"] = df["equity"].cumsum()
fig = px.line(df, x="dates", y="equity_daily") fig = px.line(df, x="dates", y="equity_daily")
fig.show() fig.show()
``` ```
### Load live trading results into a pandas dataframe ### Load live trading results into a pandas dataframe
@ -226,7 +225,7 @@ from freqtrade.data.btanalysis import analyze_trade_parallelism
# Analyze the above # Analyze the above
parallel_trades = analyze_trade_parallelism(trades, '5m') parallel_trades = analyze_trade_parallelism(trades, "5m")
parallel_trades.plot() parallel_trades.plot()
``` ```
@ -243,19 +242,17 @@ from freqtrade.plot.plotting import generate_candlestick_graph
# Limit graph period to keep plotly quick and reactive # Limit graph period to keep plotly quick and reactive
# Filter trades to one pair # Filter trades to one pair
trades_red = trades.loc[trades['pair'] == pair] trades_red = trades.loc[trades["pair"] == pair]
data_red = data['2019-06-01':'2019-06-10'] data_red = data["2019-06-01":"2019-06-10"]
# Generate candlestick graph # Generate candlestick graph
graph = generate_candlestick_graph(pair=pair, graph = generate_candlestick_graph(
pair=pair,
data=data_red, data=data_red,
trades=trades_red, trades=trades_red,
indicators1=['sma20', 'ema50', 'ema55'], indicators1=["sma20", "ema50", "ema55"],
indicators2=['rsi', 'macd', 'macdsignal', 'macdhist'] indicators2=["rsi", "macd", "macdsignal", "macdhist"],
) )
``` ```
@ -265,7 +262,6 @@ graph = generate_candlestick_graph(pair=pair,
# Render graph in a separate window # Render graph in a separate window
graph.show(renderer="browser") graph.show(renderer="browser")
``` ```
## Plot average profit per trade as distribution graph ## Plot average profit per trade as distribution graph
@ -276,11 +272,10 @@ import plotly.figure_factory as ff
hist_data = [trades.profit_ratio] hist_data = [trades.profit_ratio]
group_labels = ['profit_ratio'] # name of the dataset group_labels = ["profit_ratio"] # name of the dataset
fig = ff.create_distplot(hist_data, group_labels, bin_size=0.01) fig = ff.create_distplot(hist_data, group_labels, bin_size=0.01)
fig.show() fig.show()
``` ```
Feel free to submit an issue or Pull Request enhancing this document if you would like to share ideas on how to best analyze the data. Feel free to submit an issue or Pull Request enhancing this document if you would like to share ideas on how to best analyze the data.

View File

@ -37,10 +37,10 @@
"i = 0\n", "i = 0\n",
"try:\n", "try:\n",
" os.chdir(project_root)\n", " os.chdir(project_root)\n",
" if not Path('LICENSE').is_file():\n", " if not Path(\"LICENSE\").is_file():\n",
" i = 0\n", " i = 0\n",
" while i < 4 and (not Path('LICENSE').is_file()):\n", " while i < 4 and (not Path(\"LICENSE\").is_file()):\n",
" os.chdir(Path(Path.cwd(), '../'))\n", " os.chdir(Path(Path.cwd(), \"../\"))\n",
" i += 1\n", " i += 1\n",
" project_root = Path.cwd()\n", " project_root = Path.cwd()\n",
"except FileNotFoundError:\n", "except FileNotFoundError:\n",
@ -92,7 +92,8 @@
"from freqtrade.enums import CandleType\n", "from freqtrade.enums import CandleType\n",
"\n", "\n",
"\n", "\n",
"candles = load_pair_history(datadir=data_location,\n", "candles = load_pair_history(\n",
" datadir=data_location,\n",
" timeframe=config[\"timeframe\"],\n", " timeframe=config[\"timeframe\"],\n",
" pair=pair,\n", " pair=pair,\n",
" data_format=\"json\", # Make sure to update this to your data\n", " data_format=\"json\", # Make sure to update this to your data\n",
@ -128,7 +129,7 @@
"strategy.ft_bot_start()\n", "strategy.ft_bot_start()\n",
"\n", "\n",
"# Generate buy/sell signals using strategy\n", "# Generate buy/sell signals using strategy\n",
"df = strategy.analyze_ticker(candles, {'pair': pair})\n", "df = strategy.analyze_ticker(candles, {\"pair\": pair})\n",
"df.tail()" "df.tail()"
] ]
}, },
@ -155,7 +156,7 @@
"source": [ "source": [
"# Report results\n", "# Report results\n",
"print(f\"Generated {df['enter_long'].sum()} entry signals\")\n", "print(f\"Generated {df['enter_long'].sum()} entry signals\")\n",
"data = df.set_index('date', drop=False)\n", "data = df.set_index(\"date\", drop=False)\n",
"data.tail()" "data.tail()"
] ]
}, },
@ -205,24 +206,24 @@
"# This contains all information used to generate the backtest result.\n", "# This contains all information used to generate the backtest result.\n",
"stats = load_backtest_stats(backtest_dir)\n", "stats = load_backtest_stats(backtest_dir)\n",
"\n", "\n",
"strategy = 'SampleStrategy'\n", "strategy = \"SampleStrategy\"\n",
"# All statistics are available per strategy, so if `--strategy-list` was used during backtest,\n", "# All statistics are available per strategy, so if `--strategy-list` was used during backtest,\n",
"# this will be reflected here as well.\n", "# this will be reflected here as well.\n",
"# Example usages:\n", "# Example usages:\n",
"print(stats['strategy'][strategy]['results_per_pair'])\n", "print(stats[\"strategy\"][strategy][\"results_per_pair\"])\n",
"# Get pairlist used for this backtest\n", "# Get pairlist used for this backtest\n",
"print(stats['strategy'][strategy]['pairlist'])\n", "print(stats[\"strategy\"][strategy][\"pairlist\"])\n",
"# Get market change (average change of all pairs from start to end of the backtest period)\n", "# Get market change (average change of all pairs from start to end of the backtest period)\n",
"print(stats['strategy'][strategy]['market_change'])\n", "print(stats[\"strategy\"][strategy][\"market_change\"])\n",
"# Maximum drawdown ()\n", "# Maximum drawdown ()\n",
"print(stats['strategy'][strategy]['max_drawdown'])\n", "print(stats[\"strategy\"][strategy][\"max_drawdown\"])\n",
"# Maximum drawdown start and end\n", "# Maximum drawdown start and end\n",
"print(stats['strategy'][strategy]['drawdown_start'])\n", "print(stats[\"strategy\"][strategy][\"drawdown_start\"])\n",
"print(stats['strategy'][strategy]['drawdown_end'])\n", "print(stats[\"strategy\"][strategy][\"drawdown_end\"])\n",
"\n", "\n",
"\n", "\n",
"# Get strategy comparison (only relevant if multiple strategies were compared)\n", "# Get strategy comparison (only relevant if multiple strategies were compared)\n",
"print(stats['strategy_comparison'])\n" "print(stats[\"strategy_comparison\"])"
] ]
}, },
{ {
@ -265,13 +266,13 @@
"# backtest_dir = config[\"user_data_dir\"] / \"backtest_results\"\n", "# backtest_dir = config[\"user_data_dir\"] / \"backtest_results\"\n",
"\n", "\n",
"stats = load_backtest_stats(backtest_dir)\n", "stats = load_backtest_stats(backtest_dir)\n",
"strategy_stats = stats['strategy'][strategy]\n", "strategy_stats = stats[\"strategy\"][strategy]\n",
"\n", "\n",
"df = pd.DataFrame(columns=['dates','equity'], data=strategy_stats['daily_profit'])\n", "df = pd.DataFrame(columns=[\"dates\", \"equity\"], data=strategy_stats[\"daily_profit\"])\n",
"df['equity_daily'] = df['equity'].cumsum()\n", "df[\"equity_daily\"] = df[\"equity\"].cumsum()\n",
"\n", "\n",
"fig = px.line(df, x=\"dates\", y=\"equity_daily\")\n", "fig = px.line(df, x=\"dates\", y=\"equity_daily\")\n",
"fig.show()\n" "fig.show()"
] ]
}, },
{ {
@ -319,7 +320,7 @@
"\n", "\n",
"\n", "\n",
"# Analyze the above\n", "# Analyze the above\n",
"parallel_trades = analyze_trade_parallelism(trades, '5m')\n", "parallel_trades = analyze_trade_parallelism(trades, \"5m\")\n",
"\n", "\n",
"parallel_trades.plot()" "parallel_trades.plot()"
] ]
@ -345,18 +346,17 @@
"# Limit graph period to keep plotly quick and reactive\n", "# Limit graph period to keep plotly quick and reactive\n",
"\n", "\n",
"# Filter trades to one pair\n", "# Filter trades to one pair\n",
"trades_red = trades.loc[trades['pair'] == pair]\n", "trades_red = trades.loc[trades[\"pair\"] == pair]\n",
"\n", "\n",
"data_red = data['2019-06-01':'2019-06-10']\n", "data_red = data[\"2019-06-01\":\"2019-06-10\"]\n",
"# Generate candlestick graph\n", "# Generate candlestick graph\n",
"graph = generate_candlestick_graph(pair=pair,\n", "graph = generate_candlestick_graph(\n",
" pair=pair,\n",
" data=data_red,\n", " data=data_red,\n",
" trades=trades_red,\n", " trades=trades_red,\n",
" indicators1=['sma20', 'ema50', 'ema55'],\n", " indicators1=[\"sma20\", \"ema50\", \"ema55\"],\n",
" indicators2=['rsi', 'macd', 'macdsignal', 'macdhist']\n", " indicators2=[\"rsi\", \"macd\", \"macdsignal\", \"macdhist\"],\n",
" )\n", ")"
"\n",
"\n"
] ]
}, },
{ {
@ -369,7 +369,7 @@
"# graph.show()\n", "# graph.show()\n",
"\n", "\n",
"# Render graph in a separate window\n", "# Render graph in a separate window\n",
"graph.show(renderer=\"browser\")\n" "graph.show(renderer=\"browser\")"
] ]
}, },
{ {
@ -389,10 +389,10 @@
"\n", "\n",
"\n", "\n",
"hist_data = [trades.profit_ratio]\n", "hist_data = [trades.profit_ratio]\n",
"group_labels = ['profit_ratio'] # name of the dataset\n", "group_labels = [\"profit_ratio\"] # name of the dataset\n",
"\n", "\n",
"fig = ff.create_distplot(hist_data, group_labels, bin_size=0.01)\n", "fig = ff.create_distplot(hist_data, group_labels, bin_size=0.01)\n",
"fig.show()\n" "fig.show()"
] ]
}, },
{ {