Relay by Trado is a webhook-powered trading automation platform that routes your TradingView alerts (or any webhook source) directly to your broker accounts. Execute trades automatically, manage multiple accounts, and scale your strategies — all without writing a single line of code.
Instant Execution
Sub-50ms webhook processing for real-time trade execution.
Enterprise Security
AES-256-GCM encryption for all API credentials.
9 Action Types
ENTRY, EXIT, PARTIAL_EXIT, FLIP, and more.
Copy Trading
Follow expert traders or share your strategies.
Supported Brokers
Currently, Relay by Trado supports WazirX (Futures & Spot trading). More brokers will be added in the future.
Follow these steps to start automating your trades:
1
Create an Account
Sign up with your email or Google account. Verify your email with a 6-digit OTP.
2
Add Your Broker API
Navigate to "Manage API" and add your WazirX API credentials (API Key + API Secret). Your credentials are encrypted with AES-256-GCM.
3
Create a Webhook
Go to "Manage Webhooks" and create a new webhook. Select your broker and give it a descriptive name.
4
Deploy Your Account
Deploy your broker account to the webhook. Set a multiplier to scale your position sizes.
5
Configure Your Alert Source
Copy the webhook URL and paste it into TradingView (or any alert source). Set up the JSON payload.
6
Start Trading
Your alerts will now automatically execute trades on your deployed broker accounts!
Broker API accounts are the bridge between Relay by Trado and your exchange. You need to add at least one API account before you can deploy to a webhook.
Navigate to Dashboard → Manage API and click "Add New API".
| Field | Required | Description |
|---|---|---|
Broker | Required | Select from supported brokers (WazirX) |
Account Name | Required | A display name for your account (1–100 chars) |
API Key | Required | Your broker API key (encrypted at rest with AES-256-GCM) |
API Secret | Required | Your broker API secret (encrypted at rest with AES-256-GCM) |
• Credential Verification — Your API credentials are verified with the broker on creation. You can re-verify at any time.
• Balance Check — View real-time balances (available, locked, total) directly from your dashboard.
• Broker Info — Fetch your broker user profile and account details.
• Active/Inactive Toggle — Deactivated accounts skip all webhook orders. Useful for temporarily pausing execution.
• Visual ID — Each account gets a unique human-readable identifier (e.g., "A1B2C3").
Webhooks are the core of the platform. Each webhook has a unique URL that accepts JSON payloads to execute trades on all deployed accounts.
Navigate to Dashboard → Manage Webhooks and click "Create Webhook". Select a broker and provide a name and optional description.
Each webhook gets a permanent URL that never changes:
POST https://relay.trado.trade/webhook/{webhook_url_id}💡 Important: webhook_url_id vs access_code
The webhook_url_id (32 chars) is the permanent URL identifier — it never changes. The access_code (8 chars) is for sharing with subscribers and can be regenerated without affecting the URL.
| Property | Description |
|---|---|
is_active | Toggle webhook on/off. Inactive webhooks reject all triggers. |
is_public | Published for subscription by other users. |
is_invite_only | Only users whose Trado Relay ID is in the invite list can subscribe. |
welcome_message | Message shown to subscribers when they join. |
is_listed | Listed on the public marketplace for discovery. |
1. Create — Private webhook with unique URL
2. Deploy Accounts — Attach broker accounts with multiplier
3. Publish (optional) — Make public/invite-only with welcome message
4. List on Marketplace ( subject to review ) — Make discoverable on the marketplace. This requires admin approval to ensure quality control.
5. Share — Share access code for subscribers to join
The platform includes an in-memory cooldown service that prevents duplicate orders from rapid webhook fires. The default cooldown window is 500ms — identical payloads within this window are automatically filtered.
Cooldown service can be turned off for any HFT strategy. This can be done by using the Cooldown Protection toogle in the Edit Webhook Modal.
The webhook accepts JSON payloads. The platform supports three parser formats detected automatically.
1. WazirX Futures Parser — Detected via AT: "WAZIRXFUTURE"
2. WazirX Spot Parser — Detected for WazirX spot format
3. Standard Parser — Fallback for payloads using the action field
{
"action": "ENTRY",
"symbol": "BTCINR",
"side": "BUY",
"quantity": 0.001,
"price": 0,
"order_type": "market_order",
"leverage": 10,
"margin_mode": "ISOLATED",
"take_profit_price": 105000,
"stop_loss_price": 95000,
"margin_currency_short_name": "INR"
}{
"AT": "WAZIRXFUTURE",
"ID": "ENTRY",
"S": "BTCINR",
"SD": "BUY",
"Q": 0.001,
"P": 0,
"LVG": 10,
"MT": "ISOLATED",
"TP": 105000,
"SL": 95000,
"margin_currency_short_name": "INR"
}| Field | Aliases | Type | Description |
|---|---|---|---|
at | AT | string | Where to perform (e.g., WAZIRXFUTURE) |
action | ACTION, ID | string | Action to perform (see Supported Actions) |
symbol | SYMBOL, S, PAIR | string | Trading pair (e.g., BTCINR) |
side | SIDE, SD | string | BUY / SELL / B / S / LONG / SHORT |
quantity | Q, QTY | number | Base quantity (before multiplier) |
price | P, PRICE | number | Limit price (0 or omit for market order) |
leverage | LVG, LEVERAGE | number | Leverage multiplier |
order_type | ORDER_TYPE | string | market_order / limit_order |
stepqty | step_qty, STEPQTY | number | Quantity rounding increment (auto-fetched if not provided) |
price_step | STEP | number | Price rounding increment (auto-fetched if not provided) |
percent | PERCENT | number | Exit percentage (1–100) for PARTIAL_EXIT |
qty_type | QTY_TYPE | string | Dynamic sizing mode: CAPITAL_PCT, MARGIN_PCT, SIZE_INR, or MARGIN_INR. See Quantity Modes below. When set, quantity holds the percentage (for *_PCT) or the amount in the margin currency (for *_INR). |
take_profit_price | TP | number | Take profit value (price, percentage, or points based on mode) |
stop_loss_price | SL | number | Stop loss value (price, percentage, or points based on mode) |
sl_tp_mode | SL_TP_MODE | string | Combined SL/TP mode: PRICE (default) / PERCENTAGE / POINTS |
sl_mode | SL_MODE | string | SL mode override: PRICE / PERCENTAGE / POINTS |
tp_mode | TP_MODE | string | TP mode override: PRICE / PERCENTAGE / POINTS |
stop_price | — | number | Stop/trigger price for stop orders |
time_in_force | — | string | good_till_cancel / fill_or_kill / immediate_or_cancel |
reduce_only | REDUCE_ONLY | boolean | Only reduce existing position |
margin_mode | MT | string | ISOLATED / I / CROSS / C — Only applies to ENTRY. Ignored for EXIT/CLOSE actions (uses position's existing mode). |
margin_currency_short_name | margin_currency | string | USDT / INR — Defaults to INR if not provided |
binance_symbol | BINANCE_SYMBOL | boolean | Default false. When true, the symbol/pair is treated as Binance futures notation (e.g. BTCUSDT.P) and automatically converted to WazirX format by stripping the .P/-PERP suffix (e.g. BTCUSDT). |
complete_exit_before_flip | — | boolean | Default false. FLIP only — when true, the existing position is fully closed (via a complete position exit) before the new entry, ignoring the deployment multiplier for the exit leg. |
Default Margin Currency
WazirX Futures contracts are INR-margined and the margin currency is derived from the symbol (e.g. BTCINR), so margin_currency_short_name is optional and informational for all actions including ENTRY, EXIT, PARTIAL_EXIT, CLOSE_SYMBOL, CANCEL_ALL_ORDERS, and FLIP.
The final executed quantity is calculated as:
Final Quantity = roundUp(quantity × multiplier, stepqty) // Dynamic sizing modes (set via qty_type): CAPITAL_PCT: quantity = (available_balance × percent / 100) / pricePerContract MARGIN_PCT: quantity = (available_balance × percent / 100 × leverage) / pricePerContract SIZE_INR: quantity = amount / pricePerContract MARGIN_INR: quantity = (amount × leverage) / pricePerContract
qty_type)By default quantity is an absolute amount that the deployment multiplier is applied to. Set qty_type to size each account dynamically instead. The percentage modes use the account's own balance; the amount modes use a fixed value in the margin currency (INR/USDT).
| qty_type | quantity means | Calculation |
|---|---|---|
CAPITAL_PCT | % of available balance (1–100) | notional = balance × pct / 100 |
MARGIN_PCT | % of available balance as margin (1–100) | notional = balance × pct / 100 × leverage |
SIZE_INR | Fixed position size in margin currency | notional = amount |
MARGIN_INR | Fixed margin amount in margin currency | notional = amount × leverage |
💡 Amount modes (SIZE_INR / MARGIN_INR)
For SIZE_INR and MARGIN_INR, quantity is the absolute amount in the margin currency (not a percentage) — despite the "INR" name it honours whatever margin_currency_short_name you set (INR or USDT). A dynamic safety-margin deduction is applied automatically to avoid broker rejections. leverage is required for MARGIN_INR.
Example — fixed ₹10,000 position size:
{
"AT": "WAZIRXFUTURE",
"action": "ENTRY",
"symbol": "BTCINR",
"side": "BUY",
"quantity": 10000,
"qty_type": "SIZE_INR",
"leverage": 10,
"margin_currency_short_name": "INR"
}Example — fixed ₹5,000 margin at 5×:
{
"AT": "WAZIRXFUTURE",
"action": "ENTRY",
"symbol": "ETHINR",
"side": "SELL",
"quantity": 5000,
"qty_type": "MARGIN_INR",
"leverage": 5,
"margin_currency_short_name": "INR"
}Auto Instrument Specs
If stepqty or price_step is not provided in the payload, the platform try to automatically fetches instrument specifications from the broker/exchange to ensure proper rounding.
If your alert source sends symbols in Binance futures notation, set binance_symbol: true and the platform converts the symbol to WazirX format automatically before execution.
| Binance notation | Converted (WazirX) |
|---|---|
NEWTUSDT.P | NEWTINR |
RAREUSDT.P | RAREINR |
ETHUSDC.P | B-ETH_USDC |
{
"AT": "WAZIRXFUTURE",
"action": "ENTRY",
"symbol": "NEWTUSDT.P",
"side": "BUY",
"quantity": 100,
"binance_symbol": true,
"margin_currency_short_name": "INR"
}Aliases: PLACE_ORDER, BUY, SELL, LONG, SHORT, OPEN
Required: symbol, side, quantity
Opens a new position or adds to an existing one. Supports market and limit orders, leverage setting, take-profit/stop-loss (with price, percentage, or points mode), and margin mode configuration.
Price-based SL/TP (default):
{
"AT": "WAZIRXFUTURE",
"action": "ENTRY",
"symbol": "BTCINR",
"side": "BUY",
"quantity": 0.001,
"leverage": 10,
"margin_mode": "CROSS",
"take_profit_price": 105000,
"stop_loss_price": 95000,
"margin_currency_short_name": "INR"
}Percentage-based SL/TP:
{
"AT": "WAZIRXFUTURE",
"action": "ENTRY",
"symbol": "BTCINR",
"side": "BUY",
"quantity": 0.001,
"leverage": 10,
"stop_loss_price": 2,
"take_profit_price": 5,
"sl_tp_mode": "PERCENTAGE",
"margin_currency_short_name": "INR"
}SL = 2% below entry, TP = 5% above entry (inverted for SELL)
Points-based SL/TP:
{
"AT": "WAZIRXFUTURE",
"action": "ENTRY",
"symbol": "BTCINR",
"side": "BUY",
"quantity": 0.001,
"leverage": 10,
"stop_loss_price": 500,
"take_profit_price": 1000,
"sl_tp_mode": "POINTS",
"margin_currency_short_name": "INR"
}SL = 500 points below entry, TP = 1000 points above entry (inverted for SELL)
💡 SL/TP Mode Priority
Use sl_tp_mode to set both SL and TP to the same mode. Use sl_mode / tp_mode individually to override. Individual modes take precedence over the combined mode. For EXIT actions, margin_mode is ignored — the position's existing margin type is used.
Required: symbol, side
Closes the full position for a given symbol. The side is auto-detected from the current position. Sets reduce_only: true automatically.
{
"AT": "WAZIRXFUTURE",
"action": "EXIT",
"symbol": "BTCINR",
"side": "SELL"
"quantity": 0.001,
"leverage": 10,
"stepqty": 0.001,
"step": 0.1,
"margin_currency_short_name": "INR"
}Aliases: PARTIAL, PARTIAL_CLOSE
Required: symbol, percent (1–100)
Optional: margin_currency_short_name — defaults to INR if not provided
Closes a specified percentage of the current position. Useful for scaling out of positions gradually.
{
"AT": "WAZIRXFUTURE",
"action": "PARTIAL_EXIT",
"symbol": "BTCINR",
"percent": 50,
"margin_currency_short_name": "INR"
}Aliases: REVERSE, SWITCH
Required: symbol, side, quantity
Optional: margin_currency_short_name — defaults to INR if not provided. If no margin is specified, the exit leg automatically uses the position's margin currency.
Optional: complete_exit_before_flip (boolean, default false)
Closes the existing position and opens a new one in the opposite direction. Executed as two operations: close existing + open new.
{
"AT": "WAZIRXFUTURE",
"action": "FLIP",
"symbol": "BTCINR",
"side": "SELL",
"quantity": 0.001,
"leverage": 10,
"margin_currency_short_name": "INR"
}💡 complete_exit_before_flip
By default the exit leg places a multiplier-scaled reduce-only order. Set complete_exit_before_flip: true to fully close the entire open position (regardless of multiplier) before opening the new entry — guaranteeing a flat position first.
{
"AT": "WAZIRXFUTURE",
"action": "FLIP",
"symbol": "BTCINR",
"side": "SELL",
"quantity": 0.001,
"leverage": 10,
"complete_exit_before_flip": true,
"margin_currency_short_name": "INR"
}Aliases: CLOSE_POSITION, CLOSE, EXIT_POSITION, EXIT_SYMBOL, EXIT_ALL_POSITION
Required: symbol
Optional: margin_currency_short_name — defaults to INR if not provided
Closes the full open position for a specific trading pair. Only AT, symbol, and margin_currency_short_name are used — all other parameters are ignored.
{
"AT": "WAZIRXFUTURE",
"action": "CLOSE_SYMBOL",
"symbol": "BTCINR",
"margin_currency_short_name": "INR"
}Aliases: EXIT_ALL, CLOSE_ALL_POSITIONS, CLOSEALL
Emergency action that closes every open position on all deployed accounts. No symbol parameters required.
Optional: margin_currency_short_name — defaults to INR if not provided. Specify to target positions on a specific margin.
{
"AT": "WAZIRXFUTURE",
"action": "CLOSE_ALL",
"margin_currency_short_name": "INR"
}Aliases: CANCEL, CANCEL_ALL
Cancels all pending/open orders on all deployed accounts.
Optional: margin_currency_short_name — defaults to INR if not provided.
{
"AT": "WAZIRXFUTURE",
"action": "CANCEL_ALL_ORDERS",
"margin_currency_short_name": "INR"
}WazirX Futures does not provide an API to modify stop-loss or take-profit on an open position. Instead, attach take_profit_price and stop_loss_price to your ENTRY payload — WazirX places them as linked legs together with the entry order.
{
"AT": "WAZIRXFUTURE",
"ID": "ENTRY",
"SYMBOL": "BTCINR",
"SIDE": "B",
"QTY": 0.001,
"LVG": 10,
"take_profit_price": 10500000,
"stop_loss_price": 9500000
}Aliases: NOP, NOOP, IGNORE, NO_OP
Does nothing. Useful for conditional logic in your alert scripts where certain conditions should skip execution.
{
"AT": "WAZIRXFUTURE",
"action": "SKIP"
}Deploying an account to a webhook links your broker account to receive and execute trade signals from that webhook.
| Setting | Default | Description |
|---|---|---|
multiplier | 1.0 | Scales the base quantity. E.g., multiplier of 2 doubles the position size. Range: 0.01–100. |
is_active | true | Toggle deployment on/off without removing it. |
You receive email notifications for every deployment-related action:
Account deployed to webhook
Account removed from webhook
Deployment activated
Deployment deactivated
Multiplier updated (shows old → new value)
Notification emails include: webhook name, exchange, account name, client ID, multiplier, status, access type (Private/Public/Listed), who performed the action (Owner/Subscriber), and timestamp.
• Webhook Owner — Can see ALL deployments and perform actions on all accounts
• Subscriber — Can only see and manage their OWN deployments
In addition to webhook-triggered trades, you can execute trades manually from the dashboard. These actions are available on both webhooks and copy groups.
| Action | Parameters | Description |
|---|---|---|
Place Order | Account(s), Symbol, Side, Quantity, Order Type, Price, TP/SL | Open a new position with full control over parameters |
Partial Exit | Account(s), Symbol, Exit % or Quantity | Close a percentage of an existing position |
Exit All | Account(s) | Close ALL open positions on selected accounts |
Exit by Symbol | Account(s), Symbol | Close all positions for a specific trading pair |
Cancel All Orders | Account(s) | Cancel all pending/open orders |
Update SL/TP | Account(s), Symbol, TP Price, SL Price | Set or update stop-loss and take-profit prices |
💡 Multiplier Application
The deployment multiplier is applied for Place Order actions. It is NOT applied for Partial Exit, Exit All, or other exit actions since they work relative to the existing position.
SKIPPED occurs when: account is inactive, no position found for exit, or outside trading hours. COOLDOWN occurs when the same payload is sent within the cooldown window.
Copy Groups allow you to execute trades simultaneously across multiple member accounts. The group owner can perform actions on all members' deployed accounts.
1. Create Group — Select broker, provide name and description
2. Deploy Your Accounts — Add your own accounts with multiplier
3. Share Access Code — Members join using the 8-character code
4. Execute Trades — All 6 manual actions available for member accounts
| Setting | Description |
|---|---|
multiplier | Per-member trade size multiplier (default 1.0) |
is_active | Toggle member participation on/off |
As a group owner, you can view:
• Positions — Live positions for all members
• Balances — Real-time balances for all members
• Open Orders — Pending orders for all members
• Execution Logs — Complete trade history with per-order details
You can restrict group membership by enabling invite-only mode. Only users whose client_id is in the invite list can join the group.
Discover and follow expert traders. Subscribe to their published webhooks and deploy your accounts to automatically copy their trades.
1. Browse the Marketplace or Copy Trading page to find strategies
2. Click Subscribe and enter the access code (if required)
3. Deploy your broker account to the subscribed webhook
4. All webhook triggers from the creator will execute on your account
Important
You cannot subscribe to your own webhooks. Your broker must match the webhook's broker type. Invite-only webhooks require your Trado Relay ID to be in the invite list.
The marketplace lets you discover published strategies from other traders. As a creator, you can publish your webhooks and share your trading expertise.
1. Publish Your Webhook — Set welcome message, choose public or invite-only
2. Add Strategy Details — Tagline, description, tags, performance metrics
3. List on Marketplace — Make your strategy discoverable
4. Share Access Code — Share with your community
Published strategies can include detailed performance information:
The platform sends email notifications for important events to keep you informed about your account activity.
| Event | Email Subject |
|---|---|
Deploy | "Account Deployed — {Account} on {Webhook}" |
Undeploy | "Account Removed — {Account} from {Webhook}" |
Activate | "Deployment Activated — {Account} on {Webhook}" |
Deactivate | "Deployment Deactivated — {Account} on {Webhook}" |
Multiplier Change | "Multiplier Updated — {Account} on {Webhook}" |
Each email includes: webhook name, exchange, account name, client ID, multiplier value, status, access type, who performed the action, and timestamp.
Set specific hours during which your account should execute trades. Orders received outside the window are automatically skipped.
• Set start_time and end_time in 24-hour format (HH:MM)
• Trades outside this window are SKIPPED with reason "Outside trading hours"
• Set both to null for 24/7 trading (default)
• Configured per-account from the Manage API page
Time Zone
Trading time windows are evaluated in the server's timezone (UTC). Make sure to convert your local time to UTC when configuring.
Algo Lab
Write Python strategies, backtest on real WazirX Futures data, and run them live — all from your browser. Full API reference, indicator library, and examples.
Relay by Trado — Built by Windigotrade Pvt Ltd