Algorithmic Trading Toolkit — data collection, indicators, strategy, simulation, and live trading
Project description
AlgoTradeKit
Algorithmic Trading Toolkit — collect market data, build indicators and strategies, backtest, and trade live.
pip install AlgoTradeKit
Modules
| Module | Status | Description |
|---|---|---|
data |
✅ v0.1.0 | Collect OHLCV candles from exchanges |
indicator |
✅ v0.4.0 | RSI, MACD, MA family, Ichimoku — TradingView-compatible |
visual |
✅ v0.3.0 | Candlestick charts, indicators, live streaming |
strategy |
🔜 planned | Build and combine trading strategies |
simulate |
🔜 planned | Backtest strategies on historical data |
trade |
🔜 planned | Live trading via exchange API or MT5 |
Quick Start
Collect candle data
from AlgoTradeKit.data import Collector
collector = Collector(source="binance-futures", symbol="BTCUSDT", timeframe="1d")
collector.destination = "data/"
collector.starttime = "2020/01/01"
collector.collect()
Compute indicators
import pandas as pd
from AlgoTradeKit.indicator import RSI, MACD, EMA, SMA, Ichimoku
df = pd.read_csv("data/binance-futures_BTCUSDT_1d.csv")
# RSI (default: length=14, OB=70, OS=30)
rsi = RSI(df["close"])
print(rsi.rsi.tail())
# RSI with MA overlay
rsi_ma = RSI(df["close"], length=14, show_ma=True, ma_type="EMA", ma_length=9)
# MACD (default: 12, 26, 9)
macd = MACD(df["close"])
print(macd.macd.tail(), macd.signal.tail(), macd.histogram.tail())
# EMA
ema20 = EMA(df["close"], length=20)
# Ichimoku (all default TradingView settings)
ichi = Ichimoku(df["high"], df["low"], df["close"])
print(ichi.tenkan.tail())
print(ichi.cloud_df().tail(30)) # includes 26 future bars
Visualise with indicators
from AlgoTradeKit.visual import Chart, add_rsi, add_macd, add_ma, add_ichimoku
from AlgoTradeKit.indicator import RSI, MACD, EMA, Ichimoku
chart = Chart.from_csv("data/binance-futures_BTCUSDT_1d.csv")
rsi = RSI(chart.df["close"])
macd = MACD(chart.df["close"])
ema = EMA(chart.df["close"], length=20)
ichi = Ichimoku(chart.df["high"], chart.df["low"], chart.df["close"])
add_ma(chart, ema, timestamps=chart.df["timestamp"])
add_ichimoku(chart, ichi, timestamps=chart.df["timestamp"])
add_rsi(chart, rsi, timestamps=chart.df["timestamp"])
add_macd(chart, macd, timestamps=chart.df["timestamp"])
chart.show() # opens browser at http://localhost:9000
Data Module
Collect candle data
from AlgoTradeKit.data import Collector
collector = Collector(source="binance-spot", symbol="ETHUSDT", timeframe="4h")
collector.destination = "data/"
collector.starttime = "2021/01/01"
collector.endtime = "2023/01/01" # optional — defaults to now
collector.collect() # returns path to saved CSV
Resample timeframes
from AlgoTradeKit.data import Converter
conv = Converter(source="data/binance-futures_BTCUSDT_1h.csv", target_timeframe="4h")
conv.destination = "data/"
conv.convert()
Supported sources
| Source key | Market |
|---|---|
"binance-spot" |
Binance Spot |
"binance-futures" |
Binance USD-M Futures |
Supported timeframes
1m 3m 5m 15m 30m 1h 2h 4h 6h 8h 12h 1d 3d 1w 1M
Indicator Reference
MA Family
All Moving Averages accept source (price series) and length (period).
| Class | Formula | TV Default | TV Colour |
|---|---|---|---|
SMA |
Rolling mean | 9 | #2962FF |
EMA |
α = 2/(n+1) | 9 | #FF6D00 |
WMA |
Linear weights | 9 | #00BCD4 |
SMMA |
Wilder RMA, α = 1/n | 9 | #4CAF50 |
DEMA |
2·EMA − EMA(EMA) | 9 | #F44336 |
TEMA |
3·EMA − 3·EMA(EMA) + EMA(EMA(EMA)) | 9 | #FF9800 |
HullMA |
WMA(2·WMA(n/2)−WMA(n), √n) | 9 | #9C27B0 |
VWMA |
Σ(price·vol) / Σ(vol) | 20 | #E040FB |
VWAP |
Cumulative PV/V with σ bands | — | #2962FF |
from AlgoTradeKit.indicator import SMA, EMA, WMA, VWMA, SMMA, DEMA, TEMA, HullMA, VWAP
sma = SMA(close, length=20)
ema = EMA(close, length=20)
wma = WMA(close, length=20)
vwma = VWMA(close, volume, length=20)
smma = SMMA(close, length=20)
dema = DEMA(close, length=20)
tema = TEMA(close, length=20)
hma = HullMA(close, length=20)
vwap = VWAP(high, low, close, volume, anchor="none", bands=[1, 2])
RSI
rsi = RSI(
source = df["close"],
length = 14, # period (TV default)
overbought = 70, # upper level (TV default)
oversold = 30, # lower level (TV default)
show_ma = False, # add MA on RSI line
ma_type = "EMA", # EMA | SMA | SMMA | WMA
ma_length = 14,
)
rsi.rsi # RSI series
rsi.is_overbought() # bool series
rsi.is_oversold() # bool series
rsi.crossover_ob() # entered overbought
rsi.crossunder_os() # exited oversold (bullish signal)
MACD
macd = MACD(
source = df["close"],
fast_length = 12, # TV default
slow_length = 26, # TV default
signal_length = 9, # TV default
oscillator_ma = "EMA", # EMA | SMA | SMMA | WMA
signal_ma = "EMA", # EMA | SMA | SMMA | WMA
)
macd.macd # MACD line
macd.signal # Signal line
macd.histogram # MACD − Signal
macd.histogram_colors() # per-bar TV 4-colour Series
macd.crossover() # bullish MACD/signal cross
macd.zero_crossover() # MACD crosses above zero
Ichimoku
ichi = Ichimoku(
high = df["high"],
low = df["low"],
close = df["close"],
tenkan_period = 9, # TV default
kijun_period = 26, # TV default
senkou_b_period = 52, # TV default
displacement = 26, # TV default
)
ichi.tenkan # Conversion Line
ichi.kijun # Base Line
ichi.senkou_a # Leading Span A (26 bars forward)
ichi.senkou_b # Leading Span B (26 bars forward)
ichi.chikou # Lagging Span (26 bars back)
ichi.cloud_df() # DataFrame with full cloud + 26 future bars
ichi.tk_cross_bullish() # Tenkan crosses above Kijun
ichi.price_above_cloud() # Close above both Span A and B
Installation
Requires Python 3.10+
pip install AlgoTradeKit
For development:
git clone https://github.com/AmirMohammadBazdar/AlgoTradeKit.git
cd AlgoTradeKit
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
Requirements
pandas >= 2.0requests >= 2.28fastapi >= 0.110.0(visual module)uvicorn >= 0.29.0(visual module)websockets >= 12.0(visual module)
Roadmap
-
datamodule — Collector (Binance Spot & Futures) -
datamodule — Converter (timeframe resampling) -
visualmodule — interactive candlestick chart -
indicatormodule — RSI, MACD, MA family, Ichimoku -
indicator— Bollinger Bands, ATR, Stochastic, VWAP session anchor -
strategymodule — strategy builder with entry/exit logic -
simulatemodule — backtesting engine with full report -
trademodule — live trading via exchange API / MT5 - MEXC, Bybit, OKX data sources
License
MIT — see LICENSE
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file algotradekit-0.4.0.tar.gz.
File metadata
- Download URL: algotradekit-0.4.0.tar.gz
- Upload date:
- Size: 78.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc2516e310ff5c52211fa507f9ed222d095e3b3fcbc5301232362b2406ce699d
|
|
| MD5 |
7d566b627ddb71a6f20ccf535e2ea135
|
|
| BLAKE2b-256 |
5bf389879d3c553d616aa15f4e181a303611d0897bbac1213d8190fd13a8135b
|
Provenance
The following attestation bundles were made for algotradekit-0.4.0.tar.gz:
Publisher:
publish.yml on AmirMohammadBazdar/AlgoTradeKit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
algotradekit-0.4.0.tar.gz -
Subject digest:
cc2516e310ff5c52211fa507f9ed222d095e3b3fcbc5301232362b2406ce699d - Sigstore transparency entry: 1751182332
- Sigstore integration time:
-
Permalink:
AmirMohammadBazdar/AlgoTradeKit@63a03bd897c98a4192adac203a76fc57c9149798 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/AmirMohammadBazdar
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@63a03bd897c98a4192adac203a76fc57c9149798 -
Trigger Event:
release
-
Statement type:
File details
Details for the file algotradekit-0.4.0-py3-none-any.whl.
File metadata
- Download URL: algotradekit-0.4.0-py3-none-any.whl
- Upload date:
- Size: 70.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
422e47462ef274fea5011fe62fa5d7d188440f12b038693b1a4748ffc65e33b5
|
|
| MD5 |
313b12a5c61879cef5f686e88d33fb4a
|
|
| BLAKE2b-256 |
56a5391019ab7d6ed99aaaa8e6db55b9983503cc57f1c710e409e4ff70c105d4
|
Provenance
The following attestation bundles were made for algotradekit-0.4.0-py3-none-any.whl:
Publisher:
publish.yml on AmirMohammadBazdar/AlgoTradeKit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
algotradekit-0.4.0-py3-none-any.whl -
Subject digest:
422e47462ef274fea5011fe62fa5d7d188440f12b038693b1a4748ffc65e33b5 - Sigstore transparency entry: 1751182526
- Sigstore integration time:
-
Permalink:
AmirMohammadBazdar/AlgoTradeKit@63a03bd897c98a4192adac203a76fc57c9149798 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/AmirMohammadBazdar
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@63a03bd897c98a4192adac203a76fc57c9149798 -
Trigger Event:
release
-
Statement type: