Deployed 7e7e475 to develop in en with MkDocs 1.6.1 and mike 2.1.4
This commit is contained in:
@@ -2224,8 +2224,8 @@
|
||||
<p>The <code>populate_indicators</code> function adds columns to the dataframe that represent the technical analysis indicator values.</p>
|
||||
<p>Examples of common indicators include Relative Strength Index, Bollinger Bands, Money Flow Index, Moving Average, and Average True Range.</p>
|
||||
<p>Columns are added to the dataframe by calling technical analysis functions, e.g. ta-lib's RSI function <code>ta.RSI()</code>, and assigning them to a column name, e.g. <code>rsi</code></p>
|
||||
<p><code>python
|
||||
dataframe['rsi'] = ta.RSI(dataframe)</code></p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">dataframe</span><span class="p">[</span><span class="s1">'rsi'</span><span class="p">]</span> <span class="o">=</span> <span class="n">ta</span><span class="o">.</span><span class="n">RSI</span><span class="p">(</span><span class="n">dataframe</span><span class="p">)</span>
|
||||
</code></pre></div>
|
||||
<details class="hint">
|
||||
<summary>Technical Analysis libraries</summary>
|
||||
<p>Different libraries work in different ways to generate indicator values. Please check the documentation of each library to understand
|
||||
@@ -2247,43 +2247,42 @@ how to integrate it into your strategy. You can also check the <a href="https://
|
||||
</details>
|
||||
<h2 id="a-simple-strategy">A simple strategy<a class="headerlink" href="#a-simple-strategy" title="Permanent link">¶</a></h2>
|
||||
<p>Here is a minimal example of a Freqtrade strategy:</p>
|
||||
<p>```python
|
||||
from freqtrade.strategy import IStrategy
|
||||
from pandas import DataFrame
|
||||
import talib.abstract as ta</p>
|
||||
<p>class MyStrategy(IStrategy):</p>
|
||||
<div class="codehilite"><pre><span></span><code>timeframe = '15m'
|
||||
<div class="highlight"><pre><span></span><code><span class="kn">from</span><span class="w"> </span><span class="nn">freqtrade.strategy</span><span class="w"> </span><span class="kn">import</span> <span class="n">IStrategy</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">pandas</span><span class="w"> </span><span class="kn">import</span> <span class="n">DataFrame</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">talib.abstract</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">ta</span>
|
||||
|
||||
# set the initial stoploss to -10%
|
||||
stoploss = -0.10
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">MyStrategy</span><span class="p">(</span><span class="n">IStrategy</span><span class="p">):</span>
|
||||
|
||||
# exit profitable positions at any time when the profit is greater than 1%
|
||||
minimal_roi = {"0": 0.01}
|
||||
<span class="n">timeframe</span> <span class="o">=</span> <span class="s1">'15m'</span>
|
||||
|
||||
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
|
||||
# generate values for technical analysis indicators
|
||||
dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14)
|
||||
<span class="c1"># set the initial stoploss to -10%</span>
|
||||
<span class="n">stoploss</span> <span class="o">=</span> <span class="o">-</span><span class="mf">0.10</span>
|
||||
|
||||
return dataframe
|
||||
<span class="c1"># exit profitable positions at any time when the profit is greater than 1%</span>
|
||||
<span class="n">minimal_roi</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"0"</span><span class="p">:</span> <span class="mf">0.01</span><span class="p">}</span>
|
||||
|
||||
def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
|
||||
# generate entry signals based on indicator values
|
||||
dataframe.loc[
|
||||
(dataframe['rsi'] < 30),
|
||||
'enter_long'] = 1
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">populate_indicators</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dataframe</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span>
|
||||
<span class="c1"># generate values for technical analysis indicators</span>
|
||||
<span class="n">dataframe</span><span class="p">[</span><span class="s1">'rsi'</span><span class="p">]</span> <span class="o">=</span> <span class="n">ta</span><span class="o">.</span><span class="n">RSI</span><span class="p">(</span><span class="n">dataframe</span><span class="p">,</span> <span class="n">timeperiod</span><span class="o">=</span><span class="mi">14</span><span class="p">)</span>
|
||||
|
||||
return dataframe
|
||||
<span class="k">return</span> <span class="n">dataframe</span>
|
||||
|
||||
def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
|
||||
# generate exit signals based on indicator values
|
||||
dataframe.loc[
|
||||
(dataframe['rsi'] > 70),
|
||||
'exit_long'] = 1
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">populate_entry_trend</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dataframe</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span>
|
||||
<span class="c1"># generate entry signals based on indicator values</span>
|
||||
<span class="n">dataframe</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span>
|
||||
<span class="p">(</span><span class="n">dataframe</span><span class="p">[</span><span class="s1">'rsi'</span><span class="p">]</span> <span class="o"><</span> <span class="mi">30</span><span class="p">),</span>
|
||||
<span class="s1">'enter_long'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
|
||||
return dataframe
|
||||
<span class="k">return</span> <span class="n">dataframe</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">populate_exit_trend</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dataframe</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span>
|
||||
<span class="c1"># generate exit signals based on indicator values</span>
|
||||
<span class="n">dataframe</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span>
|
||||
<span class="p">(</span><span class="n">dataframe</span><span class="p">[</span><span class="s1">'rsi'</span><span class="p">]</span> <span class="o">></span> <span class="mi">70</span><span class="p">),</span>
|
||||
<span class="s1">'exit_long'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">dataframe</span>
|
||||
</code></pre></div>
|
||||
|
||||
<p>```</p>
|
||||
<h2 id="making-trades">Making trades<a class="headerlink" href="#making-trades" title="Permanent link">¶</a></h2>
|
||||
<p>When a signal is found (a <code>1</code> in an entry or exit column), Freqtrade will attempt to make an order, i.e. a <code>trade</code> or <code>position</code>.</p>
|
||||
<p>Each new trade position takes up a <code>slot</code>. Slots represent the maximum number of concurrent new trades that can be opened.</p>
|
||||
|
||||
Reference in New Issue
Block a user