Trading and backtesting framework for Python
Project description
TradingKit
This file shows the basic usage for TradingKit, for more docs, please see the Wiki
Requirements
- python 3.7+
- pip
Installation
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
Creating strategies
In order to create new strategies you need 4 steps
Create separate project
Create new python3.7+ project, no need to do anymore in this step.
Creating strategy class
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 main config file
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
Configure dev environment
create system/config.dev.json
file
{
"exchange": "@testex",
"feeder": "@backtest_feeder"
}
Configure live environment
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
Run dev (backtest)
tk run -e dev -y 2020 -m 1 --plot
Run live
tk run -e live --plot
Available configurations
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 |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
tradingkit-1.7.10.tar.gz
(38.1 kB
view hashes)
Built Distribution
Close
Hashes for tradingkit-1.7.10-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b6f35a23967bc8bcde776dae4b63b3ac05810ce972bc2e04c2933014e941a81a |
|
MD5 | b058c35e02d367f8037722b10b44bb73 |
|
BLAKE2b-256 | 47163cda091558191d20de463dc40d27c691caa22a07c210035feb796cac96eb |