Skip to main content

Trading and backtesting framework for Python

Project description

TradingKit

This file shows the basic usage for TradingKit, for more docs, please see the Wiki

PyPI coverage Conventional Commits

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


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.11.8.tar.gz (40.4 kB view details)

Uploaded Source

Built Distribution

tradingkit-1.11.8-py3-none-any.whl (61.6 kB view details)

Uploaded Python 3

File details

Details for the file tradingkit-1.11.8.tar.gz.

File metadata

  • Download URL: tradingkit-1.11.8.tar.gz
  • Upload date:
  • Size: 40.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.10

File hashes

Hashes for tradingkit-1.11.8.tar.gz
Algorithm Hash digest
SHA256 d7516fbf381a813d55973f3596158a1f9dde2ee3786749b484fec14ddbed9193
MD5 9d16b1db66e221bcfbb804fa8f2c6589
BLAKE2b-256 d8def0463d4e958c6eed250ec0b4f52707dc474f02c915d01631e0bf92624104

See more details on using hashes here.

File details

Details for the file tradingkit-1.11.8-py3-none-any.whl.

File metadata

  • Download URL: tradingkit-1.11.8-py3-none-any.whl
  • Upload date:
  • Size: 61.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.10

File hashes

Hashes for tradingkit-1.11.8-py3-none-any.whl
Algorithm Hash digest
SHA256 62a740ee40103cfe45c824a9cf9c3e5fcc953e0c930591bd2df365e666dfeda3
MD5 9587dd434db4a52ef7e4e6ac46394914
BLAKE2b-256 08bc3a486f1fd0d8fb28f9b040899df30d0805716cb3167c214ac4af957956de

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page