New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

tradingkit

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tradingkit

Trading and backtesting framework for Python

  • 1.11.8
  • PyPI
  • Socket score

Maintainers
1

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 TypeKeyModuleDescriptionArguments
ExchangeexchangekrakenKraken exchange APIapikey, secret
ExchangeexchangebitmexBitmex exchange APIapikey, secret
Exchangeexchangebitmex_testnetBitmex testnet exchange APIapikey, secret
Exchangeexchangetestexkraken exchange simulatorbalances, fees
Exchangeexchangebitmex_backtestbitmex exchange simulatorbalances, fees
Feederfeederkraken_backtest_feederfeeder used for kraken simulationsexchange, symbol, since8601, to8601
Feederfeederbitmex_funding_backtest_feederfeeder used for bitmex simulationsexchange, symbol, since8601, to8601
Feederfeederbitmex_testnet_feederfeeder used for bitmex-testnet live strategiesapikey, secret
Feederfeederbitmex_feederfeeder used for bitmex live strategiesapikey, secret
Feederfeederkraken_feederfeeder used for kraken live strategiesapikey, secret
Feederfeederoutlier_trade_filterfeeder used to reduce back_test outlier trade dataMAX_PRICE_CHANGE_SINGLE_TRADE
Bridgebridgebridgeexchange interface for simulator and real exchangeexchange
Plotterplotterhighstockplotter used to show simulation result on chart
Plotterplotterplotlyplotter used to show simulation result on chart

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc