Automated trading involves significant risk. Past performance and backtests are not indicative of future results, and nothing here is financial advice.
Welcome to EpochalQuantSigned out
Bots active0/0All idle
Total P&L+$0.00Lifetime
Win Rate0.0%Below median
Total Bots0Configured
No bots yet. Create one above.
Select
Select a trading bot from the left panel to begin
Active botsNo active bots — start one from the left sidebar to see its candles.
BTC

BTC/USDT

1m
0.0000+0.0000 (+0.00%)
Connecting...
1.00000.800000.600000.400000.200000
Visible: 5Range high: -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.00Range low: 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.00
Scroll to zoom • Drag to pan • Hover for OHLC
RSI (14)
--
MACD
--
EMA
--
VWAP
--
Buy Str.
--
Signal
--
👥
Trading Presets
— active
Apply a proven strategy preset to your account in one click. Funds stay in your own exchange.
Browse all presets →
LIVE mode — copies trade real orders on your connected exchange
What does the full preset list show?
The full list ranks every public preset by 30-day risk-adjusted return (Sharpe), max drawdown, win rate, and trade volume. The cards above are a curated short list — "Browse all presets" opens every preset you can apply.
Loading featured strategies…
How applying a preset works
Click "Apply now" on any card and we'll send you to the full preset list with that preset pre-selected, sensible defaults applied (allocation pulled from your free balance, 10% stop-loss), and one confirmation step. The new bot then appears in your bot list — open it to change allocation, stop-loss, or pause it at any time.
Workspace
Build a new trading bot

New botCreate a trading bot

Set up an automated bot in under a minute. Start in paper mode to test, switch to live when ready.

Step 1Basics — required to launch
01
Name your bot and pick a mode

The name is just a label. Mode decides whether the bot uses real exchange orders.

02
Pick a market

The exchange, trading pair, and candle timeframe the bot will use for analysis.

How to get API keys
?Candle interval the bot analyses. 15m or shorter trades much more often, pays fees on each trade, and produces a much less reliable profit distribution in our backtests. If you don't have a specific reason for a short timeframe, pick something larger.
03
Choose how this bot decides to trade

Signal bots react to indicator-driven buy/sell signals. Grid bots place a ladder of buy/sell limit orders inside a price range and profit from oscillations.

04
Choose a style and risk preset

These set sensible defaults for indicator periods, sensitivity, stop loss, and take profit. Fine-tune them later in the indicator section.

Loading strategies…

05
Set position size and leverage

Decide how much the bot is allowed to trade per signal.

Amount of the base asset traded per signal (e.g. 0.001 BTC on a BTCUSDT pair).?Amount of the base asset to trade each time the bot fires a signal — for a BTCUSDT pair, 0.001 means roughly 0.001 BTC per order. In Fixed quantity mode this is the exact size used every trade. In Percent of equity or Risk per trade modes the bot computes the size itself, so this field is optional and only acts as a fallback.
Customize sizing — sizing mode, allocation %, leverage, margin, position side

Default sizing uses the order quantity above. Open this section if you want to size positions as a percent of equity, set a per-trade risk budget, change leverage, or pick a margin mode for futures.

?This controls how the bot decides order size. Fixed quantity always uses the Quantity field. Percent of equity uses part of your available balance, such as 10% or 25%. Risk per trade uses your account size and stop loss to estimate a position where the loss stays near the percentage you set.
?This is mainly for futures trading. Leverage increases exposure without requiring the full position value as margin, but it also increases risk and liquidation danger. Spot brokers usually ignore this field.
?This applies to supported futures brokers. Isolated margin keeps risk tied to one position. Cross margin shares available margin across positions, which can give more flexibility but can also spread losses across the account.
?This is used on brokers that support separate long and short positioning. Use it to tell the bot whether it should trade long positions, short positions, or the broker default behavior.
Step 2Advanced — optional

Skip this section and the bot uses the defaults from the preset above. Open it only if you want to tune individual indicators or edit the raw JSON payload.

Advanced — Indicator settings

Override individual indicator periods, weights, and stop/take-profit levels. Most users do not need to touch these.

EMA — Exponential Moving Average
?Window length for the short-term EMA. Smaller numbers track price more tightly; larger numbers smooth out noise.
?Window length for the long-term EMA. Acts as the slower baseline that the short EMA crosses to signal trends.
?Weight applied to the EMA score in the final aggregate signal. Higher = EMA influences entries/exits more.
MACD — Moving Average Convergence Divergence
?Period of the fast EMA in MACD. Default 12. Smaller = faster reaction to price moves.
?Period of the slow EMA in MACD. Default 26. Larger = smoother trend baseline.
?Period of the EMA applied to the MACD line itself (the 'signal' line). Default 9. Crossovers between MACD and signal generate the trade trigger.
?Weight applied to the MACD score in the final aggregate signal.
Bollinger Bands
?Window length used to compute the Bollinger Bands middle line and bands. Default 20.
?Weight applied to the Bollinger Bands score in the final aggregate signal.
RSI — Relative Strength Index
?Number of candles used to compute RSI. Default 14. Lower = more reactive (more signals, more noise); higher = smoother.
?Weight applied to the RSI score in the final aggregate signal.
VWAP — Volume-Weighted Average Price
?Weight applied to the VWAP score. VWAP itself has no period — it accumulates over the full session.
Ichimoku Cloud
?Ichimoku Tenkan-sen (conversion line) period. Default 9.
?Ichimoku Kijun-sen (base line) period. Default 26.
?Ichimoku Senkou Span B period. Forms one edge of the cloud. Default 52.
?Ichimoku Chikou Span period — the lagging line. Default 26.
?Weight applied to the Ichimoku score in the final aggregate signal.
Signal sensitivity & threshold
?This adjusts how strongly the bot reacts to buy-side signals. Higher values make bullish signals count more in the final decision, which can make the bot enter more easily.
?This adjusts how strongly the bot reacts to sell-side signals. Higher values make bearish signals count more in the final decision, which can make the bot exit or sell more easily.
?This is a general trade filter for signal strength. A higher threshold usually makes the bot more selective and trade less often. A lower threshold can make it more active, but also more sensitive to weaker setups.
?Power applied to the aggregate sell score before comparing against the threshold. Higher values bias towards selling more aggressively.
?Position-aware buy-pressure exponent. Strengthens buy signals as price falls below the average of open lots — i.e. averages-down more aggressively. Engine caps at 2.5; default 1.0.
?Soft floor on ADX. Below this value, signals are attenuated (not zeroed). Leave blank to disable.
?Soft ceiling on ADX. Above this value, signals are attenuated. Useful for chop-only strategies that should fade strong trends. Leave blank to disable.
?ADX cutoff used by Adaptive mode to blend between mean-reversion and trend-follow. Default 25.
?Mean Reversion buys dips and sells rips (default; works in chop). Trend Follow buys breakouts. Adaptive smoothly blends between the two based on ADX vs Regime ADX Threshold.
Adaptive Regime Filter
Classify the market each day (bull / bear / chop) and trade only during selected regimes. Backtest +130% on ETH bull-only configuration over 4 years.
Stop loss levels
?Distance from entry where the first partial stop fires, as a decimal fraction (0.05 = 5%).
?Stop-loss distance applied when price has been averaging in the lower half of the range.
?Final stop-loss distance — the last protective exit if earlier stops did not trigger.
?Profit level at which the trailing stop becomes active.
?Distance the trailing stop trails behind the high-water mark once active.
Take profit levels
?Distance from entry where the first partial take-profit fires (0.10 = 10%).
?Take-profit distance applied when price has been averaging in the lower half of the range.
?Final take-profit distance — the largest profit target.
?Profit level at which the trailing take-profit becomes active.
?Distance the trailing take-profit trails behind the high-water mark once active.
?This is an optional list of extra symbols for the bot to monitor. If you enable the best-signal option, the bot will compare this list and act only on the strongest setup instead of trading every symbol.
?This is an advanced optional JSON block for indicator weights and settings. Use it if you want fine control over how the bot combines indicators. If you leave it empty, the bot uses the default configuration.
Advanced — Raw JSON payload

Edit the full create-bot request directly. The JSON below is sent as-is to /api/bots when its content differs from what the form would produce. Reference docs follow below.

How to use the raw JSON payload

This editor mirrors the request body that the platform POSTs to /api/bots. Anything you write here overrides the form fields above when the JSON differs from what the form would build. Use Load full example for a complete reference, Load empty template to see every supported key with no values, or Sync from form to capture your current form state.

On submit, this JSON is used only when it differs from what the form would generate. Otherwise the form values are sent.
Field reference (all supported keys)
Minimal payload example

The smallest valid request. Defaults handle the rest — paper trading, balanced strategy, fixed-quantity sizing, EMA/MACD/RSI/Bollinger/Ichimoku/VWAP enabled.

{
  "name": "My BTC bot",
  "broker": "binance_spot",
  "symbol": "BTCUSDT",
  "quantity": "0.001"
}
Usage notes
  • Endpoint: POST /api/bots with Content-Type: application/json.
  • Only name, broker, symbol, and quantity are required. Everything else has sane defaults.
  • Any optional field can be omitted or set to null. Omitted fields fall back to platform defaults.
  • Numeric fields like sensitivity, threshold, and stop/take-profit accept either a JSON number or a numeric string ('0.05'). Periods (ema_short_period, etc.) must be integers.
  • Set simulation_mode = true for paper trading. With simulation_mode = false you must provide credential_id or inline api_key + secret_key (and passphrase on Coinbase).
Required fields
  • name (string) — Display name shown on your dashboard.
  • broker (string) — Exchange slug (e.g. binance_spot, coinbase, kraken, onchain).
  • symbol (string) — Trading pair the bot will analyse and trade (e.g. BTCUSDT).
  • quantity (number) — Base order size used by fixed-quantity sizing and as fallback otherwise.
Market & flags
  • timeframe (string) — Candle interval used for analysis (e.g. 1m, 5m, 1h).
  • watchlist (array<string>) — Optional extra symbols to monitor. Used together with only_best_signal.
  • chain (string) — EVM chain slug for on-chain bots. Required when broker is "onchain".
  • simulation_mode (boolean) — Paper-trading flag. true = no real orders, false = live trading.
  • only_best_signal (boolean) — If true, the bot only trades the strongest setup across symbol + watchlist.
  • is_minimal (boolean) — If true, runs a reduced indicator set to save resources.
Position sizing
  • position_sizing_mode (string) — One of fixed_quantity, percent_of_equity, risk_per_trade.
  • balance_allocation_pct (number) — Decimal fraction of available balance per trade. Used by percent_of_equity.
  • risk_per_trade_pct (number) — Fraction of equity at risk per trade. Used by risk_per_trade.
  • leverage (integer) — Futures leverage. 1 for spot.
  • margin_type (string) — Futures margin: "isolated" or "cross".
  • position_side (string) — "long", "short", or omit for broker default.
Signal sensitivity
  • sensitivity_buy (number) — Multiplier on bullish signal strength. Higher = more eager to enter.
  • sensitivity_sell (number) — Multiplier on bearish signal strength. Higher = more eager to exit.
  • threshold (number) — Minimum aggregate signal strength required to act.
  • selling_exponent (number) — Power applied to selling-side aggregate score before threshold.
Indicator periods & weights
  • ema_short_period (integer) — Short EMA window (candles).
  • ema_long_period (integer) — Long EMA window (candles).
  • bollinger_period (integer) — Bollinger Bands lookback (candles).
  • signal_period (integer) — MACD signal-line EMA period (candles).
  • tenkan_period (integer) — Ichimoku Tenkan-sen period.
  • kijun_period (integer) — Ichimoku Kijun-sen period.
  • senkou_span_b_period (integer) — Ichimoku Senkou Span B period.
  • chikou_span_period (integer) — Ichimoku Chikou Span period.
  • ema_exponent (number) — Weight applied to EMA score in the aggregate signal.
  • bollinger_exponent (number) — Weight applied to Bollinger score.
  • macd_exponent (number) — Weight applied to MACD score.
  • rsi_exponent (number) — Weight applied to RSI score.
  • vwap_exponent (number) — Weight applied to VWAP score.
  • ichimoku_exponent (number) — Weight applied to Ichimoku score.
  • indicator_config (object) — Optional fine-grained per-indicator overrides. Free-form object.
Stop loss & take profit
  • stop_loss_partial (number) — First (partial) stop-loss distance as decimal fraction (0.05 = 5%).
  • stop_loss_lower_half_average (number) — Lower-half-average stop-loss distance.
  • stop_loss_last (number) — Final stop-loss distance.
  • stop_loss_trailing_start (number) — Profit level at which trailing stop activates.
  • stop_loss_trailing_end (number) — Trailing stop offset once active.
  • take_profit_partial (number) — First take-profit distance.
  • take_profit_lower_half_average (number) — Lower-half-average take-profit distance.
  • take_profit_last (number) — Final take-profit distance.
  • take_profit_trailing_start (number) — Profit level at which trailing take-profit activates.
  • take_profit_trailing_end (number) — Trailing take-profit offset once active.
Credentials
  • credential_id (string) — ID of a previously stored exchange credential. Preferred over inline keys.
  • api_key (string) — Inline API key. Use only when credential_id is not available.
  • secret_key (string) — Inline API secret. Required alongside api_key.
  • passphrase (string) — Required for Coinbase live trading.
Linking & ownership
  • strategy_id (string) — Optional saved-strategy id to clone from.
  • org_id (string) — Optional organisation id; defaults to your personal account.

Ready to launch

Bot
Unnamed bot
Market
No broker selected • -- • 1h
Mode
Paper trading
Sizing
Fixed quantity:
Preset
Swing • Balanced
Credentials
Paper mode: no exchange credentials needed.
Validate first. A single backtest can look great by pure luck. Walk-forward re-tests your strategy across multiple separate time periods — including data the optimizer never saw — so you find out if the edge is real before you risk money. Backtest and Monte Carlo are supporting diagnostics, not proof. We don't promise profits; we help you find out what actually holds up.