# TradingKit
This file shows the basic usage for TradingKit, for more docs, please see the [Wiki](https://github.com/Logictraders/tradingkit/wiki)
![PyPI](https://img.shields.io/pypi/v/tradingkit)
![coverage](https://img.shields.io/badge/coverage-37%25-orange)
[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org)
## Requirements
- python 3.7+
- pip
## Installation
the recommended way to install TradingKit si via **PyPi**.
### Install from [PyPi](https://pypi.org/project/tradingkit/)
```bash
pip3 install tradingkit
```
### Install from [Source](https://github.com/logictraders/tradingkit)
```bash
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`
```python
# 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
```json
{
"strategy": {
"class": "my_strategy.MyStrategy",
"arguments": ["@bridge", "@config"]
},
"config": {
"symbol": "%env(SYMBOL)%"
}
}
```
create `.env` file to add some env vars
```bash
# File .env
SYMBOL=BTC/EUR
```
### Configure dev environment
create `system/config.dev.json` file
```json
{
"exchange": "@testex",
"feeder": "@backtest_feeder"
}
```
### Configure live environment
create `system/config.live.json` file
```json
{
"exchange": "@kraken",
"feeder": "@kraken_feeder"
}
```
create `.env.live.local` file to add your bitmex credentials credentials
```bash
# 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 ||
Raw data
{
"_id": null,
"home_page": "https://github.com/logictraders/tradingkit",
"name": "tradingkit",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "",
"author": "QBit Artifacts, SL",
"author_email": "lluis@logictraders.com",
"download_url": "https://files.pythonhosted.org/packages/d8/de/f0463d4e958c6eed250ec0b4f52707dc474f02c915d01631e0bf92624104/tradingkit-1.11.8.tar.gz",
"platform": null,
"description": "# TradingKit\nThis file shows the basic usage for TradingKit, for more docs, please see the [Wiki](https://github.com/Logictraders/tradingkit/wiki)\n\n![PyPI](https://img.shields.io/pypi/v/tradingkit)\n![coverage](https://img.shields.io/badge/coverage-37%25-orange)\n[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org)\n\n## Requirements\n- python 3.7+\n- pip\n\n## Installation\nthe recommended way to install TradingKit si via **PyPi**.\n\n### Install from [PyPi](https://pypi.org/project/tradingkit/)\n```bash\npip3 install tradingkit\n```\n\n### Install from [Source](https://github.com/logictraders/tradingkit)\n```bash\ngit clone https://github.com/logictraders/tradingkit\ncd tradingkit\n# Optional, uncomment the line below if you want a specific version\n# git checkout v1.2.5\npython3 setup.py install\n```\n\n## Creating strategies\nIn order to create new strategies you need **4 steps**\n\n### Create separate project\nCreate new python3.7+ project, no need to do anymore in this step.\n\n### Creating strategy class\ncreate a class extending from `tradingkit.strategy.strategy.Strategy`\n```python\n# File my_project/my_strategy.py\nimport logging\nimport ccxt.Exchange\n\nfrom tradingkit.pubsub.event.trade import Trade\nfrom tradingkit.pubsub.event.book import Book\nfrom tradingkit.pubsub.event.order import Order\nfrom tradingkit.pubsub.core.event import Event\nfrom tradingkit.strategy.strategy import Strategy\n\n\nclass MyStrategy(Strategy):\n\n def __init__(self, exchange: Exchange, config):\n super().__init__(exchange, config)\n # do whatever initializations you need\n\n def on_event(self, event: Event):\n if isinstance(event, Trade):\n logging.info(\"Order event happened!\")\n # do whatever you need with the exchange\n self.exchange.create_order(...)\n if isinstance(event, Book):\n logging.info(\"Book event happened!\")\n # do whatever you need with the exchange\n self.exchange.create_order(...)\n if isinstance(event, Order):\n logging.info(\"Order event happened!\")\n # do whatever you need with the exchange\n self.exchange.create_order(...)\n```\n### Create main config file\ncreate `system/config.json` file\n```json\n{\n \"strategy\": {\n \"class\": \"my_strategy.MyStrategy\",\n \"arguments\": [\"@bridge\", \"@config\"]\n },\n \"config\": {\n \"symbol\": \"%env(SYMBOL)%\"\n }\n}\n```\ncreate `.env` file to add some env vars\n```bash\n# File .env\nSYMBOL=BTC/EUR\n```\n\n\n### Configure dev environment\ncreate `system/config.dev.json` file\n```json\n{\n \"exchange\": \"@testex\",\n \"feeder\": \"@backtest_feeder\"\n}\n```\n\n### Configure live environment\ncreate `system/config.live.json` file\n```json\n{\n \"exchange\": \"@kraken\",\n \"feeder\": \"@kraken_feeder\"\n}\n```\ncreate `.env.live.local` file to add your bitmex credentials credentials\n```bash\n# File .env.live.local\nKRAKEN_KEY=xxxxxxxxxxxxxxxxxxx\nKRAKEN_SECRET=yyyyyyyyyyyyyyyyyyyy\n```\n\n\n### Run dev (backtest)\n```\ntk run -e dev -y 2020 -m 1 --plot\n```\n\n### Run live\n```\ntk run -e live --plot\n```\n\n### Available configurations\nInjectable modules:\n\n| Module Type| Key |Module | Description | Arguments |\n|------------|------------|:-----------------------------|:-------------------------------------|---------------|\n| Exchange |exchange |kraken |Kraken exchange API |apikey, secret |\n| Exchange |exchange |bitmex |Bitmex exchange API |apikey, secret |\n| Exchange |exchange |bitmex_testnet |Bitmex testnet exchange API |apikey, secret |\n| Exchange |exchange |testex |kraken exchange simulator |balances, fees |\n| Exchange |exchange |bitmex_backtest |bitmex exchange simulator |balances, fees |\n| Feeder |feeder |kraken_backtest_feeder |feeder used for kraken simulations |exchange, symbol, since8601, to8601|\n| Feeder |feeder |bitmex_funding_backtest_feeder|feeder used for bitmex simulations |exchange, symbol, since8601, to8601|\n| Feeder |feeder |bitmex_testnet_feeder |feeder used for bitmex-testnet live strategies |apikey, secret |\n| Feeder |feeder |bitmex_feeder |feeder used for bitmex live strategies |apikey, secret |\n| Feeder |feeder |kraken_feeder |feeder used for kraken live strategies |apikey, secret |\n| Feeder |feeder |outlier_trade_filter |feeder used to reduce back_test outlier trade data|MAX_PRICE_CHANGE_SINGLE_TRADE|\n| Bridge |bridge |bridge |exchange interface for simulator and real exchange|exchange |\n| Plotter |plotter |highstock |plotter used to show simulation result on chart ||\n| Plotter |plotter |plotly |plotter used to show simulation result on chart ||\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Trading and backtesting framework for Python",
"version": "1.11.8",
"project_urls": {
"Homepage": "https://github.com/logictraders/tradingkit"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "08bc3a486f1fd0d8fb28f9b040899df30d0805716cb3167c214ac4af957956de",
"md5": "9587dd434db4a52ef7e4e6ac46394914",
"sha256": "62a740ee40103cfe45c824a9cf9c3e5fcc953e0c930591bd2df365e666dfeda3"
},
"downloads": -1,
"filename": "tradingkit-1.11.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9587dd434db4a52ef7e4e6ac46394914",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 61628,
"upload_time": "2023-05-28T13:21:27",
"upload_time_iso_8601": "2023-05-28T13:21:27.871954Z",
"url": "https://files.pythonhosted.org/packages/08/bc/3a486f1fd0d8fb28f9b040899df30d0805716cb3167c214ac4af957956de/tradingkit-1.11.8-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d8def0463d4e958c6eed250ec0b4f52707dc474f02c915d01631e0bf92624104",
"md5": "9d16b1db66e221bcfbb804fa8f2c6589",
"sha256": "d7516fbf381a813d55973f3596158a1f9dde2ee3786749b484fec14ddbed9193"
},
"downloads": -1,
"filename": "tradingkit-1.11.8.tar.gz",
"has_sig": false,
"md5_digest": "9d16b1db66e221bcfbb804fa8f2c6589",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 40403,
"upload_time": "2023-05-28T13:21:29",
"upload_time_iso_8601": "2023-05-28T13:21:29.869951Z",
"url": "https://files.pythonhosted.org/packages/d8/de/f0463d4e958c6eed250ec0b4f52707dc474f02c915d01631e0bf92624104/tradingkit-1.11.8.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-05-28 13:21:29",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "logictraders",
"github_project": "tradingkit",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "tradingkit"
}