This file shows the basic usage for TradingKit, for more docs, please see the Wiki
- python 3.7+
- pip
the recommended way to install TradingKit si via PyPi.
Install from PyPi
pip3 install tradingkit
Install from Source
git clone https://github.com/logictraders/tradingkit
cd tradingkit
# Optional, uncomment the line below if you want a specific version
# git checkout v1.2.5
python3 setup.py install
In order to create new strategies you need 4 steps
Create new python3.7+ project, no need to do anymore in this step.
create a class extending from tradingkit.strategy.strategy.Strategy
# File my_project/my_strategy.py
import logging
import ccxt.Exchange
from tradingkit.pubsub.event.trade import Trade
from tradingkit.pubsub.event.book import Book
from tradingkit.pubsub.event.order import Order
from tradingkit.pubsub.core.event import Event
from tradingkit.strategy.strategy import Strategy
class MyStrategy(Strategy):
def __init__(self, exchange: Exchange, config):
super().__init__(exchange, config)
# do whatever initializations you need
def on_event(self, event: Event):
if isinstance(event, Trade):
logging.info("Order event happened!")
# do whatever you need with the exchange
self.exchange.create_order(...)
if isinstance(event, Book):
logging.info("Book event happened!")
# do whatever you need with the exchange
self.exchange.create_order(...)
if isinstance(event, Order):
logging.info("Order event happened!")
# do whatever you need with the exchange
self.exchange.create_order(...)
create system/config.json
file
{
"strategy": {
"class": "my_strategy.MyStrategy",
"arguments": ["@bridge", "@config"]
},
"config": {
"symbol": "%env(SYMBOL)%"
}
}
create .env
file to add some env vars
# File .env
SYMBOL=BTC/EUR
create system/config.dev.json
file
{
"exchange": "@testex",
"feeder": "@backtest_feeder"
}
create system/config.live.json
file
{
"exchange": "@kraken",
"feeder": "@kraken_feeder"
}
create .env.live.local
file to add your bitmex credentials credentials
# File .env.live.local
KRAKEN_KEY=xxxxxxxxxxxxxxxxxxx
KRAKEN_SECRET=yyyyyyyyyyyyyyyyyyyy
tk run -e dev -y 2020 -m 1 --plot
tk run -e live --plot
Injectable modules:
Module Type | Key | Module | Description | Arguments |
---|---|---|---|---|
Exchange | exchange | kraken | Kraken exchange API | apikey, secret |
Exchange | exchange | bitmex | Bitmex exchange API | apikey, secret |
Exchange | exchange | bitmex_testnet | Bitmex testnet exchange API | apikey, secret |
Exchange | exchange | testex | kraken exchange simulator | balances, fees |
Exchange | exchange | bitmex_backtest | bitmex exchange simulator | balances, fees |
Feeder | feeder | kraken_backtest_feeder | feeder used for kraken simulations | exchange, symbol, since8601, to8601 |
Feeder | feeder | bitmex_funding_backtest_feeder | feeder used for bitmex simulations | exchange, symbol, since8601, to8601 |
Feeder | feeder | bitmex_testnet_feeder | feeder used for bitmex-testnet live strategies | apikey, secret |
Feeder | feeder | bitmex_feeder | feeder used for bitmex live strategies | apikey, secret |
Feeder | feeder | kraken_feeder | feeder used for kraken live strategies | apikey, secret |
Feeder | feeder | outlier_trade_filter | feeder used to reduce back_test outlier trade data | MAX_PRICE_CHANGE_SINGLE_TRADE |
Bridge | bridge | bridge | exchange interface for simulator and real exchange | exchange |
Plotter | plotter | highstock | plotter used to show simulation result on chart | |
Plotter | plotter | plotly | plotter used to show simulation result on chart |