Build trading strategies in Rust, backtest with real market data, optimize parameters, and deploy live — all from the CLI.
From backtesting to live deployment, shadow optimization, and AI-powered monitoring.
Run strategies 24/7 on Binance perpetual futures. Automatic TP/SL, position management, and full order lifecycle handled by the engine.
Test strategies against historical data with realistic fill simulation, slippage, and fees. See PnL curves, drawdown, win rate, and every individual trade.
Vectorized batch engine tests millions of parameter combinations. SoA architecture delivers ~1000x throughput over sequential backtesting.
Evaluate millions of parameter variants alongside your live strategy — zero extra infrastructure. Vectorized batch engine runs on a single core. Promote outperformers with one command.
30+ commands for positions, profit, sessions, shadow management, and more. Real-time fill notifications and session monitoring from your phone.
Ask your bot questions in plain English via Telegram. Get trade explanations, performance summaries, and risk assessments from an AI agent connected to live data.
Real metrics from production trading — not backtests, not paper.
Passive limit-order corridor strategy. Continuously adjusts entries to track the market, sets TP/SL on fill. Live on Binance COIN-M · 22 days.
Build your own strategy or pick one from the marketplace. Test it, optimize it, deploy it.
Write your own strategy in Rust with the SDK, or pick one from the marketplace. Backtest against historical data before risking real capital.
Set your parameters, run sweeps to find optimal settings, and shadow-test variants alongside live trading to validate performance.
Go live on Binance with one command. Track every trade via Telegram bot, real-time dashboard, or AI-powered explainer.
Write custom strategies with the type-safe SDK. Backtest with realistic fill simulation, sweep millions of parameter combinations, shadow-test variants live, and monitor everything via Telegram or AI.
use tradectl_sdk::*; tradectl_sdk::declare_strategy!("dip_buyer", DipBuyer::new); /// Buys the bid on every tick, sets TP/SL on fill. pub struct DipBuyer { tp: f64, sl: f64 } impl DipBuyer { pub fn new(p: &Params) -> Self { Self { tp: p.get("tp", 0.2), sl: p.get("sl", 0.5) } } } impl Strategy for DipBuyer { fn on_ticker(&mut self, t: &TickerEvent, ctx: &StrategyContext) -> Action { if ctx.positions.is_empty() { Action::PlaceEntry { side: Side::Long, price: Some(t.bid_price), size: 100.0, kind: OrderKind::Limit, exits: vec![], entry_id: None, } } else { Action::Hold } } fn on_fill(&mut self, f: &FillEvent, _: &StrategyContext) -> FillResponse { if f.is_entry { FillResponse::with_exits(vec![ ExitOrder::tp(f.price * (1.0 + self.tp / 100.0)), ExitOrder::sl(f.price * (1.0 - self.sl / 100.0)) ]) } else { FillResponse::default() } } fn name(&self) -> &str { "dip_buyer" } }
Paid plans coming soon. Everything below is available right now at no cost.
Full CLI toolkit, no limits
Connect your Binance account. More exchanges coming soon.
Build strategies, backtest them, and trade live on Binance — all from the CLI.