AlgoCoin 跨多个交易所的算法交易加密货币
AlgoCoin 跨多个交易所的算法交易加密货币
Python 其它杂项
共2Star
详细介绍
AlgoCoin
Algorithmic Trading Bitcoin.
WARNING: Code refactoring still in progress
Overview
Lightweight, extensible program for algorithmically trading cryptocurrencies and derivatives across multiple exchanges.
System Architecture
AlgoCoin is an event based trading system written in python. It comes with support for live trading across (and between) multiple exchanges, fully integrated backtesting support, slippage and transaction cost modeling, and robust reporting and risk mitigation through manual and programatic algorithm controls.
Algorithm
Like Zipline, the inspriation for this system, AlgoCoin exposes a single algorithm class which is utilized for both live trading and backtesting. The algorithm class is simple enough to write and test algorithms quickly, but extensible enough to allow for complex slippage and transaction cost modeling, as well as mid- and post- trade analysis.
Markets
Eventual coverage:
- GDAX (Coinbase Pro)
- Gemini
- Binance
- Bitfinex
- ItBit
- Kraken
- Poloniex
- Bitstamp
- CEX
- HitBTC
- LakeBTC
- BitMEX (derivatives)
- Deribit (derivatives)
Sandboxes
Market Data (Websocket)
Order Entry (REST)
Porting to use ccxt
Markets Coverage
Exchange | Pairs |
---|---|
Gemini | BTC-USD, ZEC-USD, ZEC-BTC, ZEC-ETH, ETH-BTC, ETH-USD |
GDAX | BTC-USD, BTC-ETH, BTC-LTC, BTC-BCH, ETH-USD, LTC-USD, BCH-USD, ETH-BTC, LTC-BTC, BCH-BTC |
Getting Started
Installation
Install the library from pip:
pip install algocoin
Install the library from source:
python setup.py install
API Keys
You should creat API keys for exchanges you wish to trade on. For this example, we will assume a GDAX sandbox account with trading enabled. I usually put my keys in a set of shell scripts that are gitignored, so I don't post anything by accident. My scripts look something like:
export GEMINI_API_KEY=...
export GEMINI_API_SECRET=...
export GEMINI_API_PASS=...
Prior to running, I then source the keys I need.
Let's make sure everything worked out by running a sample strategy on the GDAX sandbox exchange:
python3 -m algocoin --sandbox
Writing a trading strategy
Trading strategies implement the TradingStrategy
abstract class in algocoin.lib.strategy
. This has a number of required methods for handling messages:
- onBuy
- onSell
- onTrade
- onChange
- onDone
- onError
- onOpen
- onReceived
There are also a variety of optional methods for more granular control over risk/execution/backtesting, such as slippage
, transactionCost
, onHalt
, onContinue
, etc.
Backtesting
An instance of TradingStrategy
class is able to run live or against a set of historical trade/quote data. When instantiating a TradingEngine
object with a TradingEngineConfig
object, the TradingEngineConfig
has a type
which can be set to live
, sandbox
, or backtest
. Some additional methods are then usable on the TradingStrategy
, including the onAnalyze
method which allows you to visualize algorithm performance.
Getting Data
Historical data is relatively sparse, but the provided fetchdata.sh
script will help grab historical data from bitcoincharts.com.
Sandboxes
Currently only the Gemini sandbox is supported, the other exchanges have discontinued theirs. To run in sandbox, set TradingEngineConfig.type
to Sandbox.
Live Trading
When you want to run live, set TradingEngineConfig.type
to Live. You will want to become familiar with the risk and execution engines, as these control things like max drawdown, max risk accrual, execution eagerness, etc.
Contributing
-
0 Star
-
0 Star
-
0 Star
-
474 Star
-
14576 Star
-
302 Star
-
199 Star
-
3550 Star
-
100 Star
-
115 Star