Deployed 7e7e475 to develop in en with MkDocs 1.6.1 and mike 2.1.4
This commit is contained in:
@@ -1340,11 +1340,139 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#configure-freqtrade-environment" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Configure Freqtrade environment
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#load-and-run-strategy" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Load and run strategy
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="Load and run strategy">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#display-the-trade-details" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Display the trade details
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#load-existing-objects-into-a-jupyter-notebook" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Load existing objects into a Jupyter notebook
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="Load existing objects into a Jupyter notebook">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#load-backtest-results-to-pandas-dataframe" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Load backtest results to pandas dataframe
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#plotting-daily-profit-equity-line" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Plotting daily profit / equity line
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="Plotting daily profit / equity line">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#load-live-trading-results-into-a-pandas-dataframe" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Load live trading results into a pandas dataframe
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#analyze-the-loaded-trades-for-trade-parallelism" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Analyze the loaded trades for trade parallelism
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#plot-results" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Plot results
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#plot-average-profit-per-trade-as-distribution-graph" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Plot average profit per trade as distribution graph
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@@ -1881,11 +2009,139 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#configure-freqtrade-environment" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Configure Freqtrade environment
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#load-and-run-strategy" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Load and run strategy
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="Load and run strategy">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#display-the-trade-details" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Display the trade details
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#load-existing-objects-into-a-jupyter-notebook" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Load existing objects into a Jupyter notebook
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="Load existing objects into a Jupyter notebook">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#load-backtest-results-to-pandas-dataframe" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Load backtest results to pandas dataframe
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#plotting-daily-profit-equity-line" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Plotting daily profit / equity line
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="Plotting daily profit / equity line">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#load-live-trading-results-into-a-pandas-dataframe" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Load live trading results into a pandas dataframe
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#analyze-the-loaded-trades-for-trade-parallelism" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Analyze the loaded trades for trade parallelism
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#plot-results" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Plot results
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#plot-average-profit-per-trade-as-distribution-graph" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Plot average profit per trade as distribution graph
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@@ -1919,73 +2175,81 @@ The following assumes you work with SampleStrategy, data for 5m timeframe from B
|
||||
Please follow the <a href="https://www.freqtrade.io/en/stable/data-download/">documentation</a> for more details.</p>
|
||||
<h2 id="setup">Setup<a class="headerlink" href="#setup" title="Permanent link">¶</a></h2>
|
||||
<h3 id="change-working-directory-to-repository-root">Change Working directory to repository root<a class="headerlink" href="#change-working-directory-to-repository-root" title="Permanent link">¶</a></h3>
|
||||
<p>```python
|
||||
import os
|
||||
from pathlib import Path</p>
|
||||
<h1 id="change-directory">Change directory<a class="headerlink" href="#change-directory" title="Permanent link">¶</a></h1>
|
||||
<h1 id="modify-this-cell-to-insure-that-the-output-shows-the-correct-path">Modify this cell to insure that the output shows the correct path.<a class="headerlink" href="#modify-this-cell-to-insure-that-the-output-shows-the-correct-path" title="Permanent link">¶</a></h1>
|
||||
<h1 id="define-all-paths-relative-to-the-project-root-shown-in-the-cell-output">Define all paths relative to the project root shown in the cell output<a class="headerlink" href="#define-all-paths-relative-to-the-project-root-shown-in-the-cell-output" title="Permanent link">¶</a></h1>
|
||||
<p>project_root = "somedir/freqtrade"
|
||||
i = 0
|
||||
try:
|
||||
os.chdir(project_root)
|
||||
if not Path("LICENSE").is_file():
|
||||
i = 0
|
||||
while i < 4 and (not Path("LICENSE").is_file()):
|
||||
os.chdir(Path(Path.cwd(), "../"))
|
||||
i += 1
|
||||
project_root = Path.cwd()
|
||||
except FileNotFoundError:
|
||||
print("Please define the project root relative to the current directory")
|
||||
print(Path.cwd())
|
||||
```</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span>
|
||||
|
||||
|
||||
<span class="c1"># Change directory</span>
|
||||
<span class="c1"># Modify this cell to insure that the output shows the correct path.</span>
|
||||
<span class="c1"># Define all paths relative to the project root shown in the cell output</span>
|
||||
<span class="n">project_root</span> <span class="o">=</span> <span class="s2">"somedir/freqtrade"</span>
|
||||
<span class="n">i</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="n">project_root</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">Path</span><span class="p">(</span><span class="s2">"LICENSE"</span><span class="p">)</span><span class="o">.</span><span class="n">is_file</span><span class="p">():</span>
|
||||
<span class="n">i</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">while</span> <span class="n">i</span> <span class="o"><</span> <span class="mi">4</span> <span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="n">Path</span><span class="p">(</span><span class="s2">"LICENSE"</span><span class="p">)</span><span class="o">.</span><span class="n">is_file</span><span class="p">()):</span>
|
||||
<span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="n">Path</span><span class="p">(</span><span class="n">Path</span><span class="o">.</span><span class="n">cwd</span><span class="p">(),</span> <span class="s2">"../"</span><span class="p">))</span>
|
||||
<span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<span class="n">project_root</span> <span class="o">=</span> <span class="n">Path</span><span class="o">.</span><span class="n">cwd</span><span class="p">()</span>
|
||||
<span class="k">except</span> <span class="ne">FileNotFoundError</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Please define the project root relative to the current directory"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">Path</span><span class="o">.</span><span class="n">cwd</span><span class="p">())</span>
|
||||
</code></pre></div>
|
||||
<h3 id="configure-freqtrade-environment">Configure Freqtrade environment<a class="headerlink" href="#configure-freqtrade-environment" title="Permanent link">¶</a></h3>
|
||||
<p>```python
|
||||
from freqtrade.configuration import Configuration</p>
|
||||
<h1 id="customize-these-according-to-your-needs">Customize these according to your needs.<a class="headerlink" href="#customize-these-according-to-your-needs" title="Permanent link">¶</a></h1>
|
||||
<h1 id="initialize-empty-configuration-object">Initialize empty configuration object<a class="headerlink" href="#initialize-empty-configuration-object" title="Permanent link">¶</a></h1>
|
||||
<p>config = Configuration.from_files([])</p>
|
||||
<h1 id="optionally-recommended-use-existing-configuration-file">Optionally (recommended), use existing configuration file<a class="headerlink" href="#optionally-recommended-use-existing-configuration-file" title="Permanent link">¶</a></h1>
|
||||
<h1 id="config-configurationfrom_filesuser_dataconfigjson">config = Configuration.from_files(["user_data/config.json"])<a class="headerlink" href="#config-configurationfrom_filesuser_dataconfigjson" title="Permanent link">¶</a></h1>
|
||||
<h1 id="define-some-constants">Define some constants<a class="headerlink" href="#define-some-constants" title="Permanent link">¶</a></h1>
|
||||
<p>config["timeframe"] = "5m"</p>
|
||||
<h1 id="name-of-the-strategy-class">Name of the strategy class<a class="headerlink" href="#name-of-the-strategy-class" title="Permanent link">¶</a></h1>
|
||||
<p>config["strategy"] = "SampleStrategy"</p>
|
||||
<h1 id="location-of-the-data">Location of the data<a class="headerlink" href="#location-of-the-data" title="Permanent link">¶</a></h1>
|
||||
<p>data_location = config["datadir"]</p>
|
||||
<h1 id="pair-to-analyze-only-use-one-pair-here">Pair to analyze - Only use one pair here<a class="headerlink" href="#pair-to-analyze-only-use-one-pair-here" title="Permanent link">¶</a></h1>
|
||||
<p>pair = "BTC/USDT"
|
||||
```</p>
|
||||
<p>```python</p>
|
||||
<h1 id="load-data-using-values-set-above">Load data using values set above<a class="headerlink" href="#load-data-using-values-set-above" title="Permanent link">¶</a></h1>
|
||||
<p>from freqtrade.data.history import load_pair_history
|
||||
from freqtrade.enums import CandleType</p>
|
||||
<p>candles = load_pair_history(
|
||||
datadir=data_location,
|
||||
timeframe=config["timeframe"],
|
||||
pair=pair,
|
||||
data_format="json", # Make sure to update this to your data
|
||||
candle_type=CandleType.SPOT,
|
||||
)</p>
|
||||
<h1 id="confirm-success">Confirm success<a class="headerlink" href="#confirm-success" title="Permanent link">¶</a></h1>
|
||||
<p>print(f"Loaded {len(candles)} rows of data for {pair} from {data_location}")
|
||||
candles.head()
|
||||
```</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="kn">from</span><span class="w"> </span><span class="nn">freqtrade.configuration</span><span class="w"> </span><span class="kn">import</span> <span class="n">Configuration</span>
|
||||
|
||||
|
||||
<span class="c1"># Customize these according to your needs.</span>
|
||||
|
||||
<span class="c1"># Initialize empty configuration object</span>
|
||||
<span class="n">config</span> <span class="o">=</span> <span class="n">Configuration</span><span class="o">.</span><span class="n">from_files</span><span class="p">([])</span>
|
||||
<span class="c1"># Optionally (recommended), use existing configuration file</span>
|
||||
<span class="c1"># config = Configuration.from_files(["user_data/config.json"])</span>
|
||||
|
||||
<span class="c1"># Define some constants</span>
|
||||
<span class="n">config</span><span class="p">[</span><span class="s2">"timeframe"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"5m"</span>
|
||||
<span class="c1"># Name of the strategy class</span>
|
||||
<span class="n">config</span><span class="p">[</span><span class="s2">"strategy"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"SampleStrategy"</span>
|
||||
<span class="c1"># Location of the data</span>
|
||||
<span class="n">data_location</span> <span class="o">=</span> <span class="n">config</span><span class="p">[</span><span class="s2">"datadir"</span><span class="p">]</span>
|
||||
<span class="c1"># Pair to analyze - Only use one pair here</span>
|
||||
<span class="n">pair</span> <span class="o">=</span> <span class="s2">"BTC/USDT"</span>
|
||||
</code></pre></div>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># Load data using values set above</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">freqtrade.data.history</span><span class="w"> </span><span class="kn">import</span> <span class="n">load_pair_history</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">freqtrade.enums</span><span class="w"> </span><span class="kn">import</span> <span class="n">CandleType</span>
|
||||
|
||||
|
||||
<span class="n">candles</span> <span class="o">=</span> <span class="n">load_pair_history</span><span class="p">(</span>
|
||||
<span class="n">datadir</span><span class="o">=</span><span class="n">data_location</span><span class="p">,</span>
|
||||
<span class="n">timeframe</span><span class="o">=</span><span class="n">config</span><span class="p">[</span><span class="s2">"timeframe"</span><span class="p">],</span>
|
||||
<span class="n">pair</span><span class="o">=</span><span class="n">pair</span><span class="p">,</span>
|
||||
<span class="n">data_format</span><span class="o">=</span><span class="s2">"json"</span><span class="p">,</span> <span class="c1"># Make sure to update this to your data</span>
|
||||
<span class="n">candle_type</span><span class="o">=</span><span class="n">CandleType</span><span class="o">.</span><span class="n">SPOT</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># Confirm success</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Loaded </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">candles</span><span class="p">)</span><span class="si">}</span><span class="s2"> rows of data for </span><span class="si">{</span><span class="n">pair</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="n">data_location</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">candles</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
|
||||
</code></pre></div>
|
||||
<h2 id="load-and-run-strategy">Load and run strategy<a class="headerlink" href="#load-and-run-strategy" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li>Rerun each time the strategy file is changed</li>
|
||||
</ul>
|
||||
<p>```python</p>
|
||||
<h1 id="load-strategy-using-values-set-above">Load strategy using values set above<a class="headerlink" href="#load-strategy-using-values-set-above" title="Permanent link">¶</a></h1>
|
||||
<p>from freqtrade.data.dataprovider import DataProvider
|
||||
from freqtrade.resolvers import StrategyResolver</p>
|
||||
<p>strategy = StrategyResolver.load_strategy(config)
|
||||
strategy.dp = DataProvider(config, None, None)
|
||||
strategy.ft_bot_start()</p>
|
||||
<h1 id="generate-buysell-signals-using-strategy">Generate buy/sell signals using strategy<a class="headerlink" href="#generate-buysell-signals-using-strategy" title="Permanent link">¶</a></h1>
|
||||
<p>df = strategy.analyze_ticker(candles, {"pair": pair})
|
||||
df.tail()
|
||||
```</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># Load strategy using values set above</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">freqtrade.data.dataprovider</span><span class="w"> </span><span class="kn">import</span> <span class="n">DataProvider</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">freqtrade.resolvers</span><span class="w"> </span><span class="kn">import</span> <span class="n">StrategyResolver</span>
|
||||
|
||||
|
||||
<span class="n">strategy</span> <span class="o">=</span> <span class="n">StrategyResolver</span><span class="o">.</span><span class="n">load_strategy</span><span class="p">(</span><span class="n">config</span><span class="p">)</span>
|
||||
<span class="n">strategy</span><span class="o">.</span><span class="n">dp</span> <span class="o">=</span> <span class="n">DataProvider</span><span class="p">(</span><span class="n">config</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">strategy</span><span class="o">.</span><span class="n">ft_bot_start</span><span class="p">()</span>
|
||||
|
||||
<span class="c1"># Generate buy/sell signals using strategy</span>
|
||||
<span class="n">df</span> <span class="o">=</span> <span class="n">strategy</span><span class="o">.</span><span class="n">analyze_ticker</span><span class="p">(</span><span class="n">candles</span><span class="p">,</span> <span class="p">{</span><span class="s2">"pair"</span><span class="p">:</span> <span class="n">pair</span><span class="p">})</span>
|
||||
<span class="n">df</span><span class="o">.</span><span class="n">tail</span><span class="p">()</span>
|
||||
</code></pre></div>
|
||||
<h3 id="display-the-trade-details">Display the trade details<a class="headerlink" href="#display-the-trade-details" title="Permanent link">¶</a></h3>
|
||||
<ul>
|
||||
<li>Note that using <code>data.head()</code> would also work, however most indicators have some "startup" data at the top of the dataframe.</li>
|
||||
@@ -1996,119 +2260,136 @@ df.tail()
|
||||
* having 200 buy signals as output for one pair from <code>analyze_ticker()</code> does not necessarily mean that 200 trades will be made during backtesting.
|
||||
* Assuming you use only one condition such as, <code>df['rsi'] < 30</code> as buy condition, this will generate multiple "buy" signals for each pair in sequence (until rsi returns > 29). The bot will only buy on the first of these signals (and also only if a trade-slot ("max_open_trades") is still available), or on one of the middle signals, as soon as a "slot" becomes available. </li>
|
||||
</ul>
|
||||
<p>```python</p>
|
||||
<h1 id="report-results">Report results<a class="headerlink" href="#report-results" title="Permanent link">¶</a></h1>
|
||||
<p>print(f"Generated {df['enter_long'].sum()} entry signals")
|
||||
data = df.set_index("date", drop=False)
|
||||
data.tail()
|
||||
```</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># Report results</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Generated </span><span class="si">{</span><span class="n">df</span><span class="p">[</span><span class="s1">'enter_long'</span><span class="p">]</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span><span class="si">}</span><span class="s2"> entry signals"</span><span class="p">)</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">set_index</span><span class="p">(</span><span class="s2">"date"</span><span class="p">,</span> <span class="n">drop</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
<span class="n">data</span><span class="o">.</span><span class="n">tail</span><span class="p">()</span>
|
||||
</code></pre></div>
|
||||
<h2 id="load-existing-objects-into-a-jupyter-notebook">Load existing objects into a Jupyter notebook<a class="headerlink" href="#load-existing-objects-into-a-jupyter-notebook" title="Permanent link">¶</a></h2>
|
||||
<p>The following cells assume that you have already generated data using the cli.<br />
|
||||
They will allow you to drill deeper into your results, and perform analysis which otherwise would make the output very difficult to digest due to information overload.</p>
|
||||
<h3 id="load-backtest-results-to-pandas-dataframe">Load backtest results to pandas dataframe<a class="headerlink" href="#load-backtest-results-to-pandas-dataframe" title="Permanent link">¶</a></h3>
|
||||
<p>Analyze a trades dataframe (also used below for plotting)</p>
|
||||
<p>```python
|
||||
from freqtrade.data.btanalysis import load_backtest_data, load_backtest_stats</p>
|
||||
<h1 id="if-backtest_dir-points-to-a-directory-itll-automatically-load-the-last-backtest-file">if backtest_dir points to a directory, it'll automatically load the last backtest file.<a class="headerlink" href="#if-backtest_dir-points-to-a-directory-itll-automatically-load-the-last-backtest-file" title="Permanent link">¶</a></h1>
|
||||
<p>backtest_dir = config["user_data_dir"] / "backtest_results"</p>
|
||||
<h1 id="backtest_dir-can-also-point-to-a-specific-file">backtest_dir can also point to a specific file<a class="headerlink" href="#backtest_dir-can-also-point-to-a-specific-file" title="Permanent link">¶</a></h1>
|
||||
<h1 id="backtest_dir">backtest_dir = (<a class="headerlink" href="#backtest_dir" title="Permanent link">¶</a></h1>
|
||||
<h1 id="configuser_data_dir-backtest_resultsbacktest-result-2020-07-01_20-04-22json">config["user_data_dir"] / "backtest_results/backtest-result-2020-07-01_20-04-22.json"<a class="headerlink" href="#configuser_data_dir-backtest_resultsbacktest-result-2020-07-01_20-04-22json" title="Permanent link">¶</a></h1>
|
||||
<h1 id="_1">)<a class="headerlink" href="#_1" title="Permanent link">¶</a></h1>
|
||||
<p>```</p>
|
||||
<p>```python</p>
|
||||
<h1 id="you-can-get-the-full-backtest-statistics-by-using-the-following-command">You can get the full backtest statistics by using the following command.<a class="headerlink" href="#you-can-get-the-full-backtest-statistics-by-using-the-following-command" title="Permanent link">¶</a></h1>
|
||||
<h1 id="this-contains-all-information-used-to-generate-the-backtest-result">This contains all information used to generate the backtest result.<a class="headerlink" href="#this-contains-all-information-used-to-generate-the-backtest-result" title="Permanent link">¶</a></h1>
|
||||
<p>stats = load_backtest_stats(backtest_dir)</p>
|
||||
<p>strategy = "SampleStrategy"</p>
|
||||
<h1 id="all-statistics-are-available-per-strategy-so-if-strategy-list-was-used-during-backtest">All statistics are available per strategy, so if <code>--strategy-list</code> was used during backtest,<a class="headerlink" href="#all-statistics-are-available-per-strategy-so-if-strategy-list-was-used-during-backtest" title="Permanent link">¶</a></h1>
|
||||
<h1 id="this-will-be-reflected-here-as-well">this will be reflected here as well.<a class="headerlink" href="#this-will-be-reflected-here-as-well" title="Permanent link">¶</a></h1>
|
||||
<h1 id="example-usages">Example usages:<a class="headerlink" href="#example-usages" title="Permanent link">¶</a></h1>
|
||||
<p>print(stats["strategy"][strategy]["results_per_pair"])</p>
|
||||
<h1 id="get-pairlist-used-for-this-backtest">Get pairlist used for this backtest<a class="headerlink" href="#get-pairlist-used-for-this-backtest" title="Permanent link">¶</a></h1>
|
||||
<p>print(stats["strategy"][strategy]["pairlist"])</p>
|
||||
<h1 id="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)<a class="headerlink" href="#get-market-change-average-change-of-all-pairs-from-start-to-end-of-the-backtest-period" title="Permanent link">¶</a></h1>
|
||||
<p>print(stats["strategy"][strategy]["market_change"])</p>
|
||||
<h1 id="maximum-drawdown">Maximum drawdown ()<a class="headerlink" href="#maximum-drawdown" title="Permanent link">¶</a></h1>
|
||||
<p>print(stats["strategy"][strategy]["max_drawdown_abs"])</p>
|
||||
<h1 id="maximum-drawdown-start-and-end">Maximum drawdown start and end<a class="headerlink" href="#maximum-drawdown-start-and-end" title="Permanent link">¶</a></h1>
|
||||
<p>print(stats["strategy"][strategy]["drawdown_start"])
|
||||
print(stats["strategy"][strategy]["drawdown_end"])</p>
|
||||
<h1 id="get-strategy-comparison-only-relevant-if-multiple-strategies-were-compared">Get strategy comparison (only relevant if multiple strategies were compared)<a class="headerlink" href="#get-strategy-comparison-only-relevant-if-multiple-strategies-were-compared" title="Permanent link">¶</a></h1>
|
||||
<p>print(stats["strategy_comparison"])
|
||||
```</p>
|
||||
<p>```python</p>
|
||||
<h1 id="load-backtested-trades-as-dataframe">Load backtested trades as dataframe<a class="headerlink" href="#load-backtested-trades-as-dataframe" title="Permanent link">¶</a></h1>
|
||||
<p>trades = load_backtest_data(backtest_dir)</p>
|
||||
<h1 id="show-value-counts-per-pair">Show value-counts per pair<a class="headerlink" href="#show-value-counts-per-pair" title="Permanent link">¶</a></h1>
|
||||
<p>trades.groupby("pair")["exit_reason"].value_counts()
|
||||
```</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="kn">from</span><span class="w"> </span><span class="nn">freqtrade.data.btanalysis</span><span class="w"> </span><span class="kn">import</span> <span class="n">load_backtest_data</span><span class="p">,</span> <span class="n">load_backtest_stats</span>
|
||||
|
||||
|
||||
<span class="c1"># if backtest_dir points to a directory, it'll automatically load the last backtest file.</span>
|
||||
<span class="n">backtest_dir</span> <span class="o">=</span> <span class="n">config</span><span class="p">[</span><span class="s2">"user_data_dir"</span><span class="p">]</span> <span class="o">/</span> <span class="s2">"backtest_results"</span>
|
||||
<span class="c1"># backtest_dir can also point to a specific file</span>
|
||||
<span class="c1"># backtest_dir = (</span>
|
||||
<span class="c1"># config["user_data_dir"] / "backtest_results/backtest-result-2020-07-01_20-04-22.json"</span>
|
||||
<span class="c1"># )</span>
|
||||
</code></pre></div>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># You can get the full backtest statistics by using the following command.</span>
|
||||
<span class="c1"># This contains all information used to generate the backtest result.</span>
|
||||
<span class="n">stats</span> <span class="o">=</span> <span class="n">load_backtest_stats</span><span class="p">(</span><span class="n">backtest_dir</span><span class="p">)</span>
|
||||
|
||||
<span class="n">strategy</span> <span class="o">=</span> <span class="s2">"SampleStrategy"</span>
|
||||
<span class="c1"># All statistics are available per strategy, so if `--strategy-list` was used during backtest,</span>
|
||||
<span class="c1"># this will be reflected here as well.</span>
|
||||
<span class="c1"># Example usages:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">stats</span><span class="p">[</span><span class="s2">"strategy"</span><span class="p">][</span><span class="n">strategy</span><span class="p">][</span><span class="s2">"results_per_pair"</span><span class="p">])</span>
|
||||
<span class="c1"># Get pairlist used for this backtest</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">stats</span><span class="p">[</span><span class="s2">"strategy"</span><span class="p">][</span><span class="n">strategy</span><span class="p">][</span><span class="s2">"pairlist"</span><span class="p">])</span>
|
||||
<span class="c1"># Get market change (average change of all pairs from start to end of the backtest period)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">stats</span><span class="p">[</span><span class="s2">"strategy"</span><span class="p">][</span><span class="n">strategy</span><span class="p">][</span><span class="s2">"market_change"</span><span class="p">])</span>
|
||||
<span class="c1"># Maximum drawdown ()</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">stats</span><span class="p">[</span><span class="s2">"strategy"</span><span class="p">][</span><span class="n">strategy</span><span class="p">][</span><span class="s2">"max_drawdown_abs"</span><span class="p">])</span>
|
||||
<span class="c1"># Maximum drawdown start and end</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">stats</span><span class="p">[</span><span class="s2">"strategy"</span><span class="p">][</span><span class="n">strategy</span><span class="p">][</span><span class="s2">"drawdown_start"</span><span class="p">])</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">stats</span><span class="p">[</span><span class="s2">"strategy"</span><span class="p">][</span><span class="n">strategy</span><span class="p">][</span><span class="s2">"drawdown_end"</span><span class="p">])</span>
|
||||
|
||||
|
||||
<span class="c1"># Get strategy comparison (only relevant if multiple strategies were compared)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">stats</span><span class="p">[</span><span class="s2">"strategy_comparison"</span><span class="p">])</span>
|
||||
</code></pre></div>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># Load backtested trades as dataframe</span>
|
||||
<span class="n">trades</span> <span class="o">=</span> <span class="n">load_backtest_data</span><span class="p">(</span><span class="n">backtest_dir</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Show value-counts per pair</span>
|
||||
<span class="n">trades</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s2">"pair"</span><span class="p">)[</span><span class="s2">"exit_reason"</span><span class="p">]</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()</span>
|
||||
</code></pre></div>
|
||||
<h2 id="plotting-daily-profit-equity-line">Plotting daily profit / equity line<a class="headerlink" href="#plotting-daily-profit-equity-line" title="Permanent link">¶</a></h2>
|
||||
<p>```python</p>
|
||||
<h1 id="plotting-equity-line-starting-with-0-on-day-1-and-adding-daily-profit-for-each-backtested-day">Plotting equity line (starting with 0 on day 1 and adding daily profit for each backtested day)<a class="headerlink" href="#plotting-equity-line-starting-with-0-on-day-1-and-adding-daily-profit-for-each-backtested-day" title="Permanent link">¶</a></h1>
|
||||
<p>import pandas as pd
|
||||
import plotly.express as px</p>
|
||||
<p>from freqtrade.configuration import Configuration
|
||||
from freqtrade.data.btanalysis import load_backtest_stats</p>
|
||||
<h1 id="strategy-samplestrategy">strategy = 'SampleStrategy'<a class="headerlink" href="#strategy-samplestrategy" title="Permanent link">¶</a></h1>
|
||||
<h1 id="config-configurationfrom_filesuser_dataconfigjson_1">config = Configuration.from_files(["user_data/config.json"])<a class="headerlink" href="#config-configurationfrom_filesuser_dataconfigjson_1" title="Permanent link">¶</a></h1>
|
||||
<h1 id="backtest_dir-configuser_data_dir-backtest_results">backtest_dir = config["user_data_dir"] / "backtest_results"<a class="headerlink" href="#backtest_dir-configuser_data_dir-backtest_results" title="Permanent link">¶</a></h1>
|
||||
<p>stats = load_backtest_stats(backtest_dir)
|
||||
strategy_stats = stats["strategy"][strategy]</p>
|
||||
<p>df = pd.DataFrame(columns=["dates", "equity"], data=strategy_stats["daily_profit"])
|
||||
df["equity_daily"] = df["equity"].cumsum()</p>
|
||||
<p>fig = px.line(df, x="dates", y="equity_daily")
|
||||
fig.show()
|
||||
```</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># Plotting equity line (starting with 0 on day 1 and adding daily profit for each backtested day)</span>
|
||||
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">pandas</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">pd</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">plotly.express</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">px</span>
|
||||
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">freqtrade.configuration</span><span class="w"> </span><span class="kn">import</span> <span class="n">Configuration</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">freqtrade.data.btanalysis</span><span class="w"> </span><span class="kn">import</span> <span class="n">load_backtest_stats</span>
|
||||
|
||||
|
||||
<span class="c1"># strategy = 'SampleStrategy'</span>
|
||||
<span class="c1"># config = Configuration.from_files(["user_data/config.json"])</span>
|
||||
<span class="c1"># backtest_dir = config["user_data_dir"] / "backtest_results"</span>
|
||||
|
||||
<span class="n">stats</span> <span class="o">=</span> <span class="n">load_backtest_stats</span><span class="p">(</span><span class="n">backtest_dir</span><span class="p">)</span>
|
||||
<span class="n">strategy_stats</span> <span class="o">=</span> <span class="n">stats</span><span class="p">[</span><span class="s2">"strategy"</span><span class="p">][</span><span class="n">strategy</span><span class="p">]</span>
|
||||
|
||||
<span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="s2">"dates"</span><span class="p">,</span> <span class="s2">"equity"</span><span class="p">],</span> <span class="n">data</span><span class="o">=</span><span class="n">strategy_stats</span><span class="p">[</span><span class="s2">"daily_profit"</span><span class="p">])</span>
|
||||
<span class="n">df</span><span class="p">[</span><span class="s2">"equity_daily"</span><span class="p">]</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="s2">"equity"</span><span class="p">]</span><span class="o">.</span><span class="n">cumsum</span><span class="p">()</span>
|
||||
|
||||
<span class="n">fig</span> <span class="o">=</span> <span class="n">px</span><span class="o">.</span><span class="n">line</span><span class="p">(</span><span class="n">df</span><span class="p">,</span> <span class="n">x</span><span class="o">=</span><span class="s2">"dates"</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="s2">"equity_daily"</span><span class="p">)</span>
|
||||
<span class="n">fig</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
||||
</code></pre></div>
|
||||
<h3 id="load-live-trading-results-into-a-pandas-dataframe">Load live trading results into a pandas dataframe<a class="headerlink" href="#load-live-trading-results-into-a-pandas-dataframe" title="Permanent link">¶</a></h3>
|
||||
<p>In case you did already some trading and want to analyze your performance</p>
|
||||
<p>```python
|
||||
from freqtrade.data.btanalysis import load_trades_from_db</p>
|
||||
<h1 id="fetch-trades-from-database">Fetch trades from database<a class="headerlink" href="#fetch-trades-from-database" title="Permanent link">¶</a></h1>
|
||||
<p>trades = load_trades_from_db("sqlite:///tradesv3.sqlite")</p>
|
||||
<h1 id="display-results">Display results<a class="headerlink" href="#display-results" title="Permanent link">¶</a></h1>
|
||||
<p>trades.groupby("pair")["exit_reason"].value_counts()
|
||||
```</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="kn">from</span><span class="w"> </span><span class="nn">freqtrade.data.btanalysis</span><span class="w"> </span><span class="kn">import</span> <span class="n">load_trades_from_db</span>
|
||||
|
||||
|
||||
<span class="c1"># Fetch trades from database</span>
|
||||
<span class="n">trades</span> <span class="o">=</span> <span class="n">load_trades_from_db</span><span class="p">(</span><span class="s2">"sqlite:///tradesv3.sqlite"</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Display results</span>
|
||||
<span class="n">trades</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s2">"pair"</span><span class="p">)[</span><span class="s2">"exit_reason"</span><span class="p">]</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()</span>
|
||||
</code></pre></div>
|
||||
<h2 id="analyze-the-loaded-trades-for-trade-parallelism">Analyze the loaded trades for trade parallelism<a class="headerlink" href="#analyze-the-loaded-trades-for-trade-parallelism" title="Permanent link">¶</a></h2>
|
||||
<p>This can be useful to find the best <code>max_open_trades</code> parameter, when used with backtesting in conjunction with a very high <code>max_open_trades</code> setting.</p>
|
||||
<p><code>analyze_trade_parallelism()</code> returns a timeseries dataframe with an "open_trades" column, specifying the number of open trades for each candle.</p>
|
||||
<p>```python
|
||||
from freqtrade.data.btanalysis import analyze_trade_parallelism</p>
|
||||
<h1 id="analyze-the-above">Analyze the above<a class="headerlink" href="#analyze-the-above" title="Permanent link">¶</a></h1>
|
||||
<p>parallel_trades = analyze_trade_parallelism(trades, "5m")</p>
|
||||
<p>parallel_trades.plot()
|
||||
```</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="kn">from</span><span class="w"> </span><span class="nn">freqtrade.data.btanalysis</span><span class="w"> </span><span class="kn">import</span> <span class="n">analyze_trade_parallelism</span>
|
||||
|
||||
|
||||
<span class="c1"># Analyze the above</span>
|
||||
<span class="n">parallel_trades</span> <span class="o">=</span> <span class="n">analyze_trade_parallelism</span><span class="p">(</span><span class="n">trades</span><span class="p">,</span> <span class="s2">"5m"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">parallel_trades</span><span class="o">.</span><span class="n">plot</span><span class="p">()</span>
|
||||
</code></pre></div>
|
||||
<h2 id="plot-results">Plot results<a class="headerlink" href="#plot-results" title="Permanent link">¶</a></h2>
|
||||
<p>Freqtrade offers interactive plotting capabilities based on plotly.</p>
|
||||
<p>```python
|
||||
from freqtrade.plot.plotting import generate_candlestick_graph</p>
|
||||
<h1 id="limit-graph-period-to-keep-plotly-quick-and-reactive">Limit graph period to keep plotly quick and reactive<a class="headerlink" href="#limit-graph-period-to-keep-plotly-quick-and-reactive" title="Permanent link">¶</a></h1>
|
||||
<h1 id="filter-trades-to-one-pair">Filter trades to one pair<a class="headerlink" href="#filter-trades-to-one-pair" title="Permanent link">¶</a></h1>
|
||||
<p>trades_red = trades.loc[trades["pair"] == pair]</p>
|
||||
<p>data_red = data["2019-06-01":"2019-06-10"]</p>
|
||||
<h1 id="generate-candlestick-graph">Generate candlestick graph<a class="headerlink" href="#generate-candlestick-graph" title="Permanent link">¶</a></h1>
|
||||
<p>graph = generate_candlestick_graph(
|
||||
pair=pair,
|
||||
data=data_red,
|
||||
trades=trades_red,
|
||||
indicators1=["sma20", "ema50", "ema55"],
|
||||
indicators2=["rsi", "macd", "macdsignal", "macdhist"],
|
||||
)
|
||||
```</p>
|
||||
<p>```python</p>
|
||||
<h1 id="show-graph-inline">Show graph inline<a class="headerlink" href="#show-graph-inline" title="Permanent link">¶</a></h1>
|
||||
<h1 id="graphshow">graph.show()<a class="headerlink" href="#graphshow" title="Permanent link">¶</a></h1>
|
||||
<h1 id="render-graph-in-a-separate-window">Render graph in a separate window<a class="headerlink" href="#render-graph-in-a-separate-window" title="Permanent link">¶</a></h1>
|
||||
<p>graph.show(renderer="browser")
|
||||
```</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="kn">from</span><span class="w"> </span><span class="nn">freqtrade.plot.plotting</span><span class="w"> </span><span class="kn">import</span> <span class="n">generate_candlestick_graph</span>
|
||||
|
||||
|
||||
<span class="c1"># Limit graph period to keep plotly quick and reactive</span>
|
||||
|
||||
<span class="c1"># Filter trades to one pair</span>
|
||||
<span class="n">trades_red</span> <span class="o">=</span> <span class="n">trades</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">trades</span><span class="p">[</span><span class="s2">"pair"</span><span class="p">]</span> <span class="o">==</span> <span class="n">pair</span><span class="p">]</span>
|
||||
|
||||
<span class="n">data_red</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s2">"2019-06-01"</span><span class="p">:</span><span class="s2">"2019-06-10"</span><span class="p">]</span>
|
||||
<span class="c1"># Generate candlestick graph</span>
|
||||
<span class="n">graph</span> <span class="o">=</span> <span class="n">generate_candlestick_graph</span><span class="p">(</span>
|
||||
<span class="n">pair</span><span class="o">=</span><span class="n">pair</span><span class="p">,</span>
|
||||
<span class="n">data</span><span class="o">=</span><span class="n">data_red</span><span class="p">,</span>
|
||||
<span class="n">trades</span><span class="o">=</span><span class="n">trades_red</span><span class="p">,</span>
|
||||
<span class="n">indicators1</span><span class="o">=</span><span class="p">[</span><span class="s2">"sma20"</span><span class="p">,</span> <span class="s2">"ema50"</span><span class="p">,</span> <span class="s2">"ema55"</span><span class="p">],</span>
|
||||
<span class="n">indicators2</span><span class="o">=</span><span class="p">[</span><span class="s2">"rsi"</span><span class="p">,</span> <span class="s2">"macd"</span><span class="p">,</span> <span class="s2">"macdsignal"</span><span class="p">,</span> <span class="s2">"macdhist"</span><span class="p">],</span>
|
||||
<span class="p">)</span>
|
||||
</code></pre></div>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># Show graph inline</span>
|
||||
<span class="c1"># graph.show()</span>
|
||||
|
||||
<span class="c1"># Render graph in a separate window</span>
|
||||
<span class="n">graph</span><span class="o">.</span><span class="n">show</span><span class="p">(</span><span class="n">renderer</span><span class="o">=</span><span class="s2">"browser"</span><span class="p">)</span>
|
||||
</code></pre></div>
|
||||
<h2 id="plot-average-profit-per-trade-as-distribution-graph">Plot average profit per trade as distribution graph<a class="headerlink" href="#plot-average-profit-per-trade-as-distribution-graph" title="Permanent link">¶</a></h2>
|
||||
<p>```python
|
||||
import plotly.figure_factory as ff</p>
|
||||
<p>hist_data = [trades.profit_ratio]
|
||||
group_labels = ["profit_ratio"] # name of the dataset</p>
|
||||
<p>fig = ff.create_distplot(hist_data, group_labels, bin_size=0.01)
|
||||
fig.show()
|
||||
```</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">plotly.figure_factory</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">ff</span>
|
||||
|
||||
|
||||
<span class="n">hist_data</span> <span class="o">=</span> <span class="p">[</span><span class="n">trades</span><span class="o">.</span><span class="n">profit_ratio</span><span class="p">]</span>
|
||||
<span class="n">group_labels</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"profit_ratio"</span><span class="p">]</span> <span class="c1"># name of the dataset</span>
|
||||
|
||||
<span class="n">fig</span> <span class="o">=</span> <span class="n">ff</span><span class="o">.</span><span class="n">create_distplot</span><span class="p">(</span><span class="n">hist_data</span><span class="p">,</span> <span class="n">group_labels</span><span class="p">,</span> <span class="n">bin_size</span><span class="o">=</span><span class="mf">0.01</span><span class="p">)</span>
|
||||
<span class="n">fig</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
||||
</code></pre></div>
|
||||
<p>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.</p>
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user