mirror of
https://github.com/wassname/catalyst.git
synced 2026-07-09 03:43:49 +08:00
DOC: live trading
This commit is contained in:
@@ -1,105 +0,0 @@
|
||||
<h1>Live Trading</h1>
|
||||
This document explains how to get started with live trading.
|
||||
|
||||
<h2>Supported Exchanges</h2>
|
||||
Catalyst can trade against these exchanges:
|
||||
|
||||
* Bitfinex, id=`bitfinex`
|
||||
* Bittrex, id=`bittrex`
|
||||
|
||||
<h3>Authentication</h3>
|
||||
Most exchanges require key/token combination for authentication. By
|
||||
convention, Catalyst uses an "auth.json" file to hold this data.
|
||||
|
||||
This example illustrates the convention using the Bitfinex exchange.
|
||||
Here is how to generate key and secret values for bitfinex:
|
||||
https://docs.bitfinex.com/v1/docs/api-access. Most exchanges follow
|
||||
a similar process.
|
||||
|
||||
The auth.json file:
|
||||
```json
|
||||
{
|
||||
"name": "bitfinex",
|
||||
"key": "my-key",
|
||||
"secret": "my-secret"
|
||||
}
|
||||
```
|
||||
|
||||
The file goes here:
|
||||
```
|
||||
~/.catalyst/data/exchanges/bitfinex/auth.json
|
||||
```
|
||||
|
||||
Note that the 'bitfinex' directory corresponds to the id of the Bitfinex
|
||||
exchange as defined in the "Supported Exchanges" section above.
|
||||
Attempting to run an algorithm where the targeted exchange is missing
|
||||
its "auth.json" file will create the directory structure but result
|
||||
in an error.
|
||||
|
||||
<h3>Currency Symbols</h3>
|
||||
Catalyst introduces a universal convention to reference
|
||||
trading pairs and individual currencies. This
|
||||
is required to ensure that the `symbol()` api predictably
|
||||
returns the correct asset regardless of the targeted exchange.
|
||||
|
||||
Exchanges tend to use their own convention to represent currencies
|
||||
(e.g. XBT and BTC both represent Bitcoin on different exchanges).
|
||||
Trading pairs are also inconsistent. For example, Bitfinex
|
||||
puts the market currency before the base currency without a
|
||||
separator, Bittrex puts the base currency first and uses a dash
|
||||
seperator.
|
||||
|
||||
Here is the Catalyst convention:
|
||||
|
||||
*[Market Currency]_[Base Currency]* all lowercase.
|
||||
|
||||
Currency symbols (e.g. btc, eth, ltc) follow the Bittrex convention.
|
||||
|
||||
Here are some examples:
|
||||
```python
|
||||
# With Bitfinex
|
||||
bitcoin_usd_asset = symbol('btc_usd')
|
||||
ethereum_bitcoin_asset = symbol('eth_btc')
|
||||
|
||||
# With Bittrex
|
||||
ethereum_bitcoin_asset = symbol('eth_btc')
|
||||
neo_ethereum_asset = symbol('neo_eth)
|
||||
```
|
||||
|
||||
Note that the trading pairs are always referenced in the same manner.
|
||||
However, not all trading pairs are available on all exchanges. An
|
||||
error will occur if the specified trading pair is not trading
|
||||
on the exchange.
|
||||
|
||||
<h2>Trading an Algorithm</h2>
|
||||
There is no special convention to follow when writing an
|
||||
algorithm for live trading. The same algorithm should work in
|
||||
backtest and live execution mode without modification.
|
||||
|
||||
What differs are the arguments provided to the catalyst client or
|
||||
`run_algorithm()` interface. Here is example:
|
||||
|
||||
```python
|
||||
run_algorithm(
|
||||
initialize=initialize,
|
||||
handle_data=handle_data,
|
||||
analyze=analyze,
|
||||
exchange_name='bitfinex',
|
||||
live=True,
|
||||
algo_namespace='my_algo_trading_xrp',
|
||||
base_currency='btc'
|
||||
)
|
||||
```
|
||||
|
||||
Here is the breakdown of the new arguments:
|
||||
* live: Boolean flag which enables live trading.
|
||||
* exchange_name: The name of the targeted exchange
|
||||
(supported values: *bitfinex*, *bittrex*).
|
||||
* algo_namespace: A arbitrary label assigned to your algorithm for
|
||||
data storage purposes.
|
||||
* base_currency: The base currency used to calculate the
|
||||
statistics of your algorithm. Currently, the base currency of all
|
||||
trading pairs of your algorithm must match this value.
|
||||
|
||||
Here is a complete algorithm for reference:
|
||||
[Buy Low and Sell High](../catalyst/examples/buy_low_sell_high_live.py)
|
||||
@@ -9,6 +9,7 @@ Table of Contents
|
||||
|
||||
install
|
||||
beginner-tutorial
|
||||
live-trading
|
||||
naming-convention
|
||||
videos
|
||||
development-guidelines
|
||||
|
||||
@@ -0,0 +1,118 @@
|
||||
Live Trading
|
||||
============
|
||||
This document explains how to get started with live trading.
|
||||
|
||||
Supported Exchanges
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
Catalyst can trade against these exchanges:
|
||||
|
||||
- Bitfinex, id= ``bitfinex``
|
||||
- Bittrex, id= ``bittrex``
|
||||
- Poloniex, id= ``poloniex``
|
||||
|
||||
Authentication
|
||||
^^^^^^^^^^^^^^
|
||||
Most exchanges require token key/secret combination for authentication. By
|
||||
convention, Catalyst uses an ``auth.json`` file to hold this data.
|
||||
|
||||
This example illustrates the convention using the *Bitfinex* exchange.
|
||||
Here is how to generate key and secret values for the Bitfinex exchange:
|
||||
https://docs.bitfinex.com/v1/docs/api-access. Most exchanges follow
|
||||
a similar process.
|
||||
|
||||
The auth.json file:
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"name": "bitfinex",
|
||||
"key": "my-key",
|
||||
"secret": "my-secret"
|
||||
}
|
||||
|
||||
|
||||
The file goes here: ``~/.catalyst/data/exchanges/bitfinex/auth.json``
|
||||
|
||||
Note that the `bitfinex` part in the directory above corresponds to the id of the Bitfinex
|
||||
exchange as defined in the "Supported Exchanges" section above.
|
||||
Attempting to run an algorithm where the targeted exchange is missing
|
||||
its ``auth.json`` file will create the directory structure and create an empty
|
||||
auth.json file, but will result in an error.
|
||||
|
||||
Currency Symbols
|
||||
^^^^^^^^^^^^^^^^
|
||||
Catalyst introduces a universal convention to reference
|
||||
trading pairs and individual currencies. This
|
||||
is required to ensure that the ``symbol()`` api predictably
|
||||
returns the correct asset regardless of the targeted exchange.
|
||||
|
||||
Exchanges tend to use their own convention to represent currencies
|
||||
(e.g. XBT and BTC both represent Bitcoin on different exchanges).
|
||||
Trading pairs are also inconsistent. For example, Bitfinex
|
||||
puts the market currency before the base currency without a
|
||||
separator, Bittrex puts the base currency first and uses a dash
|
||||
seperator.
|
||||
|
||||
Here is the Catalyst convention:
|
||||
|
||||
*[Market Currency]_[Base Currency]* all lowercase.
|
||||
|
||||
Currency symbols (e.g. btc, eth, ltc) follow the Bittrex convention.
|
||||
|
||||
Here are some examples:
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
# With Bitfinex
|
||||
bitcoin_usd_asset = symbol('btc_usd')
|
||||
ethereum_bitcoin_asset = symbol('eth_btc')
|
||||
|
||||
# With Bittrex
|
||||
ethereum_bitcoin_asset = symbol('eth_btc')
|
||||
neo_ethereum_asset = symbol('neo_eth)
|
||||
|
||||
Note that the trading pairs are always referenced in the same manner.
|
||||
However, not all trading pairs are available on all exchanges. An
|
||||
error will occur if the specified trading pair is not trading
|
||||
on the exchange. To check which currency pairs are available on each
|
||||
of the supported exchanges, see `Catalyst Market Coverage <https://www.enigma.co/catalyst/status`_.
|
||||
|
||||
Trading an Algorithm
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
There is no special convention to follow when writing an
|
||||
algorithm for live trading. The same algorithm should work in
|
||||
backtest and live execution mode without modification.
|
||||
|
||||
What differs are the arguments provided to the catalyst client or
|
||||
`run_algorithm()` interface. Here is the same example in both interfaces:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
catalyst live -f my_algo_code -x bitfinex -c btc -n my_algo_name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
run_algorithm(
|
||||
initialize=initialize,
|
||||
handle_data=handle_data,
|
||||
analyze=analyze,
|
||||
exchange_name='bitfinex',
|
||||
live=True,
|
||||
algo_namespace='my_algo_name',
|
||||
base_currency='btc'
|
||||
)
|
||||
|
||||
|
||||
Here is the breakdown of the new arguments:
|
||||
|
||||
- ``live``: Boolean flag which enables live trading.
|
||||
- ``exchange_name``: The name of the targeted exchange
|
||||
(supported values: *bitfinex*, *bittrex*).
|
||||
- ``algo_namespace``: A arbitrary label assigned to your algorithm for
|
||||
data storage purposes.
|
||||
- ``base_currency``: The base currency used to calculate the
|
||||
statistics of your algorithm. Currently, the base currency of all
|
||||
trading pairs of your algorithm must match this value.
|
||||
|
||||
Here is a complete algorithm for reference:
|
||||
`Buy Low and Sell High <https://github.com/enigmampc/catalyst/blob/master/catalyst/examples/buy_low_sell_high_live.py>`_
|
||||
Reference in New Issue
Block a user