tradingkit


Nametradingkit JSON
Version 1.11.8 PyPI version JSON
download
home_pagehttps://github.com/logictraders/tradingkit
SummaryTrading and backtesting framework for Python
upload_time2023-05-28 13:21:29
maintainer
docs_urlNone
authorQBit Artifacts, SL
requires_python
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 0.06832s