mirror of
https://github.com/wassname/catalyst.git
synced 2026-07-15 11:22:18 +08:00
BUG: reverts changed introduced in 00f232e2d7
This commit is contained in:
+1
-1
@@ -1879,7 +1879,7 @@ Assets.</p>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="catalyst.utils.calendars.TradingCalendar">
|
||||
<em class="property">class </em><code class="descclassname">catalyst.utils.calendars.</code><code class="descname">TradingCalendar</code><span class="sig-paren">(</span><em>start=Timestamp('1990-01-01 00:00:00+0000'</em>, <em>tz='UTC')</em>, <em>end=Timestamp('2019-02-21 22:39:49.439971+0000'</em>, <em>tz='UTC')</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/catalyst/utils/calendars/trading_calendar.html#TradingCalendar"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#catalyst.utils.calendars.TradingCalendar" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><code class="descclassname">catalyst.utils.calendars.</code><code class="descname">TradingCalendar</code><span class="sig-paren">(</span><em>start=Timestamp('1990-01-01 00:00:00+0000'</em>, <em>tz='UTC')</em>, <em>end=Timestamp('2019-02-23 05:15:46.080641+0000'</em>, <em>tz='UTC')</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/catalyst/utils/calendars/trading_calendar.html#TradingCalendar"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#catalyst.utils.calendars.TradingCalendar" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>An TradingCalendar represents the timing information of a single market
|
||||
exchange.</p>
|
||||
<p>The timing information is made up of two parts: sessions, and opens/closes.</p>
|
||||
|
||||
+16
-28
@@ -695,8 +695,7 @@ the <code class="docutils literal"><span class="pre">examples</span></code> dire
|
||||
<span class="kn">from</span> <span class="nn">logbook</span> <span class="kn">import</span> <span class="n">Logger</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">catalyst</span> <span class="kn">import</span> <span class="n">run_algorithm</span>
|
||||
<span class="kn">from</span> <span class="nn">catalyst.api</span> <span class="kn">import</span> <span class="p">(</span><span class="n">record</span><span class="p">,</span> <span class="n">symbol</span><span class="p">,</span> <span class="n">order_target_percent</span><span class="p">,</span>
|
||||
<span class="n">get_open_orders</span><span class="p">)</span>
|
||||
<span class="kn">from</span> <span class="nn">catalyst.api</span> <span class="kn">import</span> <span class="p">(</span><span class="n">record</span><span class="p">,</span> <span class="n">symbol</span><span class="p">,</span> <span class="n">order_target_percent</span><span class="p">,)</span>
|
||||
<span class="kn">from</span> <span class="nn">catalyst.exchange.utils.stats_utils</span> <span class="kn">import</span> <span class="n">extract_transactions</span>
|
||||
|
||||
<span class="n">NAMESPACE</span> <span class="o">=</span> <span class="s1">'dual_moving_average'</span>
|
||||
@@ -711,8 +710,8 @@ the <code class="docutils literal"><span class="pre">examples</span></code> dire
|
||||
|
||||
<span class="k">def</span> <span class="nf">handle_data</span><span class="p">(</span><span class="n">context</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
|
||||
<span class="c1"># define the windows for the moving averages</span>
|
||||
<span class="n">short_window</span> <span class="o">=</span> <span class="mi">2</span>
|
||||
<span class="n">long_window</span> <span class="o">=</span> <span class="mi">3</span>
|
||||
<span class="n">short_window</span> <span class="o">=</span> <span class="mi">50</span>
|
||||
<span class="n">long_window</span> <span class="o">=</span> <span class="mi">200</span>
|
||||
|
||||
<span class="c1"># Skip as many bars as long_window to properly compute the average</span>
|
||||
<span class="n">context</span><span class="o">.</span><span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
@@ -754,7 +753,7 @@ the <code class="docutils literal"><span class="pre">examples</span></code> dire
|
||||
|
||||
<span class="c1"># Since we are using limit orders, some orders may not execute immediately</span>
|
||||
<span class="c1"># we wait until all orders are executed before considering more trades.</span>
|
||||
<span class="n">orders</span> <span class="o">=</span> <span class="n">get_open_orders</span><span class="p">(</span><span class="n">context</span><span class="o">.</span><span class="n">asset</span><span class="p">)</span>
|
||||
<span class="n">orders</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="n">blotter</span><span class="o">.</span><span class="n">open_orders</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">orders</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
@@ -841,30 +840,19 @@ the <code class="docutils literal"><span class="pre">examples</span></code> dire
|
||||
|
||||
|
||||
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">'__main__'</span><span class="p">:</span>
|
||||
|
||||
<span class="n">run_algorithm</span><span class="p">(</span>
|
||||
<span class="n">capital_base</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span>
|
||||
<span class="n">data_frequency</span><span class="o">=</span><span class="s1">'minute'</span><span class="p">,</span>
|
||||
<span class="n">initialize</span><span class="o">=</span><span class="n">initialize</span><span class="p">,</span>
|
||||
<span class="n">handle_data</span><span class="o">=</span><span class="n">handle_data</span><span class="p">,</span>
|
||||
<span class="n">analyze</span><span class="o">=</span><span class="n">analyze</span><span class="p">,</span>
|
||||
<span class="n">exchange_name</span><span class="o">=</span><span class="s1">'bitfinex'</span><span class="p">,</span>
|
||||
<span class="n">algo_namespace</span><span class="o">=</span><span class="n">NAMESPACE</span><span class="p">,</span>
|
||||
<span class="n">base_currency</span><span class="o">=</span><span class="s1">'usd'</span><span class="p">,</span>
|
||||
<span class="n">simulate_orders</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
|
||||
<span class="n">live</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># run_algorithm(</span>
|
||||
<span class="c1"># capital_base=1000,</span>
|
||||
<span class="c1"># data_frequency='minute',</span>
|
||||
<span class="c1"># initialize=initialize,</span>
|
||||
<span class="c1"># handle_data=handle_data,</span>
|
||||
<span class="c1"># analyze=analyze,</span>
|
||||
<span class="c1"># exchange_name='bitfinex',</span>
|
||||
<span class="c1"># algo_namespace=NAMESPACE,</span>
|
||||
<span class="c1"># base_currency='usd',</span>
|
||||
<span class="c1"># start=pd.to_datetime('2017-9-22', utc=True),</span>
|
||||
<span class="c1"># end=pd.to_datetime('2017-9-23', utc=True),</span>
|
||||
<span class="c1"># )</span>
|
||||
<span class="n">capital_base</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span>
|
||||
<span class="n">data_frequency</span><span class="o">=</span><span class="s1">'minute'</span><span class="p">,</span>
|
||||
<span class="n">initialize</span><span class="o">=</span><span class="n">initialize</span><span class="p">,</span>
|
||||
<span class="n">handle_data</span><span class="o">=</span><span class="n">handle_data</span><span class="p">,</span>
|
||||
<span class="n">analyze</span><span class="o">=</span><span class="n">analyze</span><span class="p">,</span>
|
||||
<span class="n">exchange_name</span><span class="o">=</span><span class="s1">'bitfinex'</span><span class="p">,</span>
|
||||
<span class="n">algo_namespace</span><span class="o">=</span><span class="n">NAMESPACE</span><span class="p">,</span>
|
||||
<span class="n">base_currency</span><span class="o">=</span><span class="s1">'usd'</span><span class="p">,</span>
|
||||
<span class="n">start</span><span class="o">=</span><span class="n">pd</span><span class="o">.</span><span class="n">to_datetime</span><span class="p">(</span><span class="s1">'2017-9-22'</span><span class="p">,</span> <span class="n">utc</span><span class="o">=</span><span class="bp">True</span><span class="p">),</span>
|
||||
<span class="n">end</span><span class="o">=</span><span class="n">pd</span><span class="o">.</span><span class="n">to_datetime</span><span class="p">(</span><span class="s1">'2017-9-23'</span><span class="p">,</span> <span class="n">utc</span><span class="o">=</span><span class="bp">True</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>In order to run the code above, you have to ingest the needed data first:</p>
|
||||
|
||||
+16
-28
@@ -451,8 +451,7 @@ one day prior to the current date.</p>
|
||||
<span class="kn">from</span> <span class="nn">logbook</span> <span class="kn">import</span> <span class="n">Logger</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">catalyst</span> <span class="kn">import</span> <span class="n">run_algorithm</span>
|
||||
<span class="kn">from</span> <span class="nn">catalyst.api</span> <span class="kn">import</span> <span class="p">(</span><span class="n">record</span><span class="p">,</span> <span class="n">symbol</span><span class="p">,</span> <span class="n">order_target_percent</span><span class="p">,</span>
|
||||
<span class="n">get_open_orders</span><span class="p">)</span>
|
||||
<span class="kn">from</span> <span class="nn">catalyst.api</span> <span class="kn">import</span> <span class="p">(</span><span class="n">record</span><span class="p">,</span> <span class="n">symbol</span><span class="p">,</span> <span class="n">order_target_percent</span><span class="p">,)</span>
|
||||
<span class="kn">from</span> <span class="nn">catalyst.exchange.utils.stats_utils</span> <span class="kn">import</span> <span class="n">extract_transactions</span>
|
||||
|
||||
<span class="n">NAMESPACE</span> <span class="o">=</span> <span class="s1">'dual_moving_average'</span>
|
||||
@@ -467,8 +466,8 @@ one day prior to the current date.</p>
|
||||
|
||||
<span class="k">def</span> <span class="nf">handle_data</span><span class="p">(</span><span class="n">context</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
|
||||
<span class="c1"># define the windows for the moving averages</span>
|
||||
<span class="n">short_window</span> <span class="o">=</span> <span class="mi">2</span>
|
||||
<span class="n">long_window</span> <span class="o">=</span> <span class="mi">3</span>
|
||||
<span class="n">short_window</span> <span class="o">=</span> <span class="mi">50</span>
|
||||
<span class="n">long_window</span> <span class="o">=</span> <span class="mi">200</span>
|
||||
|
||||
<span class="c1"># Skip as many bars as long_window to properly compute the average</span>
|
||||
<span class="n">context</span><span class="o">.</span><span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
@@ -510,7 +509,7 @@ one day prior to the current date.</p>
|
||||
|
||||
<span class="c1"># Since we are using limit orders, some orders may not execute immediately</span>
|
||||
<span class="c1"># we wait until all orders are executed before considering more trades.</span>
|
||||
<span class="n">orders</span> <span class="o">=</span> <span class="n">get_open_orders</span><span class="p">(</span><span class="n">context</span><span class="o">.</span><span class="n">asset</span><span class="p">)</span>
|
||||
<span class="n">orders</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="n">blotter</span><span class="o">.</span><span class="n">open_orders</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">orders</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
@@ -597,30 +596,19 @@ one day prior to the current date.</p>
|
||||
|
||||
|
||||
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">'__main__'</span><span class="p">:</span>
|
||||
|
||||
<span class="n">run_algorithm</span><span class="p">(</span>
|
||||
<span class="n">capital_base</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span>
|
||||
<span class="n">data_frequency</span><span class="o">=</span><span class="s1">'minute'</span><span class="p">,</span>
|
||||
<span class="n">initialize</span><span class="o">=</span><span class="n">initialize</span><span class="p">,</span>
|
||||
<span class="n">handle_data</span><span class="o">=</span><span class="n">handle_data</span><span class="p">,</span>
|
||||
<span class="n">analyze</span><span class="o">=</span><span class="n">analyze</span><span class="p">,</span>
|
||||
<span class="n">exchange_name</span><span class="o">=</span><span class="s1">'bitfinex'</span><span class="p">,</span>
|
||||
<span class="n">algo_namespace</span><span class="o">=</span><span class="n">NAMESPACE</span><span class="p">,</span>
|
||||
<span class="n">base_currency</span><span class="o">=</span><span class="s1">'usd'</span><span class="p">,</span>
|
||||
<span class="n">simulate_orders</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
|
||||
<span class="n">live</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># run_algorithm(</span>
|
||||
<span class="c1"># capital_base=1000,</span>
|
||||
<span class="c1"># data_frequency='minute',</span>
|
||||
<span class="c1"># initialize=initialize,</span>
|
||||
<span class="c1"># handle_data=handle_data,</span>
|
||||
<span class="c1"># analyze=analyze,</span>
|
||||
<span class="c1"># exchange_name='bitfinex',</span>
|
||||
<span class="c1"># algo_namespace=NAMESPACE,</span>
|
||||
<span class="c1"># base_currency='usd',</span>
|
||||
<span class="c1"># start=pd.to_datetime('2017-9-22', utc=True),</span>
|
||||
<span class="c1"># end=pd.to_datetime('2017-9-23', utc=True),</span>
|
||||
<span class="c1"># )</span>
|
||||
<span class="n">capital_base</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span>
|
||||
<span class="n">data_frequency</span><span class="o">=</span><span class="s1">'minute'</span><span class="p">,</span>
|
||||
<span class="n">initialize</span><span class="o">=</span><span class="n">initialize</span><span class="p">,</span>
|
||||
<span class="n">handle_data</span><span class="o">=</span><span class="n">handle_data</span><span class="p">,</span>
|
||||
<span class="n">analyze</span><span class="o">=</span><span class="n">analyze</span><span class="p">,</span>
|
||||
<span class="n">exchange_name</span><span class="o">=</span><span class="s1">'bitfinex'</span><span class="p">,</span>
|
||||
<span class="n">algo_namespace</span><span class="o">=</span><span class="n">NAMESPACE</span><span class="p">,</span>
|
||||
<span class="n">base_currency</span><span class="o">=</span><span class="s1">'usd'</span><span class="p">,</span>
|
||||
<span class="n">start</span><span class="o">=</span><span class="n">pd</span><span class="o">.</span><span class="n">to_datetime</span><span class="p">(</span><span class="s1">'2017-9-22'</span><span class="p">,</span> <span class="n">utc</span><span class="o">=</span><span class="bp">True</span><span class="p">),</span>
|
||||
<span class="n">end</span><span class="o">=</span><span class="n">pd</span><span class="o">.</span><span class="n">to_datetime</span><span class="p">(</span><span class="s1">'2017-9-23'</span><span class="p">,</span> <span class="n">utc</span><span class="o">=</span><span class="bp">True</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<img alt="https://s3.amazonaws.com/enigmaco-docs/github.io/tutorial_dual_moving_average.png" src="https://s3.amazonaws.com/enigmaco-docs/github.io/tutorial_dual_moving_average.png" />
|
||||
|
||||
@@ -342,6 +342,11 @@ The live algo starts by default in the present, as mentioned above.
|
||||
by setting the start_date to a time in the future, the algorithm would
|
||||
essentially sleep and when the predefined time comes, it would start executing.</li>
|
||||
</ul>
|
||||
<p>The <cite>catalyst live</cite> command offers additional parameters.
|
||||
You can learn more by running the following from the command line:</p>
|
||||
<div class="highlight-bash"><div class="highlight"><pre><span></span>catalyst live --help
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Here is a complete algorithm for reference:
|
||||
<a class="reference external" href="https://github.com/enigmampc/catalyst/blob/master/catalyst/examples/buy_low_sell_high_live.py">Buy Low and Sell High</a></p>
|
||||
</div>
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user