Skip to content

squidKid-deluxe/QTradeX-Algo-Trading-SDK

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

43 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ QTradeX Core β€” Build, Backtest & Optimize AI-Powered Crypto Trading Bots

QTradeX Demo Screenshot

πŸ“Έ See screenshots.md for more visuals
πŸ“š Read the core docs on QTradeX SDK DeepWiki
πŸ€– Explore the bots at QTradeX AI Agents DeepWiki
πŸ’¬ Join our Telegram Group for discussion & support


TL;DR

QTradeX is a lightning-fast Python framework for designing, backtesting, and deploying algorithmic trading bots, built for crypto markets with support for 100+ exchanges, AI-driven optimization, and blazing-fast vectorized execution.

Like what we're doing? Give us a ⭐!


Why QTradeX?

Whether you're exploring a simple EMA crossover or engineering a strategy with 20+ indicators and genetic optimization, QTradeX gives you:

  • Modular, non-locked architecture - want to use QTradeX's data fetching with a custom backtest engine? Go for it!
  • Tulip + CCXT Integration
  • Custom Bot Classes
  • Fast, Disk-Cached Market Data
  • Ultra Fast Backtests (even on a Raspberry Pi!)

πŸ” Features at a Glance

  • Bot Development: Extend BaseBot to craft custom strategies
  • Backtesting: Easy-to-navigate CLI & live-coding based testing platform (Just select Autobacktest)
  • Optimization: Use QPSO, LSGA, or others to fine-tune parameters
  • Indicators: Wrapped Tulip indicators for blazing performance
  • Data Sources: Pull candles from 100+ CEXs/DEXs with CCXT
  • Performance Metrics: Evaluate bots with ROI, Sortino, Win Rate, and dozens more
  • Speed: 200+ backtests per second for 3 years of daily candles on a Ryzen 5600x

Project Structure

qtradex/
β”œβ”€β”€ core/             # Bot logic and backtesting
β”œβ”€β”€ indicators/       # Technical indicators
β”œβ”€β”€ optimizers/       # QPSO, LSGA, other optimizers, and common utilities
β”œβ”€β”€ plot/             # Trade/metric visualization
β”œβ”€β”€ private/          # Execution & paper wallets
β”œβ”€β”€ public/           # Data feeds and utils
└── common/           # JSON RPC, BitShares nodes, and data caching

Quickstart

Install

pip install qtradex

Or, if you want the latest updates:

git clone https://github.com/squidKid-deluxe/QTradeX-Algo-Trading-SDK.git QTradeX
cd QTradeX
pip install -e .

Example Bot: EMA Crossover

import qtradex as qx
import numpy as np


class EMACrossBot(qx.BaseBot):
    def __init__(self):
        # Notes:
        # - If you make the tune values integers, the optimizers
        #   will quantize them to the nearest integer.
        # - By putting `_period` at the end of a tune value,
        #   QTradeX core will assume they are periods in days and will scale them
        #   to different candle sizes if the data given isn't daily
        self.tune = {
            "fast_ema_period": 10.0,
            "slow_ema_period": 50.0
        }
        self.clamps = [
            # min, max
            [5,   50 ], # fast_ema
            [20,  100], # slow_ema
        ]

    def indicators(self, data):
        return {
            "fast_ema": qx.ti.ema(data["close"], self.tune["fast_ema"]),
            "slow_ema": qx.ti.ema(data["close"], self.tune["slow_ema"]),
        }

    def strategy(self, tick_info, indicators):
        fast = indicators["fast_ema"]
        slow = indicators["slow_ema"]
        if fast > slow:
            return qx.Buy()
        elif fast < slow:
            return qx.Sell()
        return qx.Thresholds(buying=fast * 0.8, selling=fast * 1.2)

    def plot(self, *args):
        qx.plot(
            self.info,
            *args,
            (
                # key name    label    color   axis idx   axis name
                ("fast_ema", "EMA 1", "white", 0,        "EMA Cross"),
                ("slow_ema", "EMA 2", "cyan",  0,        "EMA Cross"),
            )
        )


# Load data and run
data = qx.Data(
    exchange="kucoin",
    asset="BTC",
    currency="USDT",
    begin="2020-01-01",
    end="2023-01-01"
)
bot = EMACrossBot()
qx.dispatch(bot, data)

See more bots in QTradeX AI Agents


Usage Guide

Step What to Do
1️⃣ Build a bot with custom logic by subclassing BaseBot
2️⃣ Backtest using qx.core.dispatch + historical data
3️⃣ Optimize with any algorithm you like (optmized tunes stored in /tunes)
4️⃣ Deploy live

Roadmap

  • More indicators (non-Tulip sources)
  • GPU Acceleration for indicators
  • Improved multi-core support for optimization
  • Windows/Mac support
  • TradFi Connectors: Stocks, Forex, and Comex support

Want to help out? Check out the Issues list for forseeable improvements and bugs.


Resources


πŸ“œ License

WTFPL β€” Do what you want. Just be awesome about it 😎


⭐ Star History

Star History Chart

✨ Ready to start? Clone the repo, run your first bot, and tune away. Once tuned - LET THE EXECUTIONS BEGIN!