Documentation

Everything you need to configure, manage, and optimize your Tradovate trade synchronization with TradeHaven. From initial setup to advanced API integration.

Getting Started

TradeHaven is a real-time trade synchronization platform built for Tradovate futures accounts. It allows you to designate one account as a leader and automatically mirror every order execution, modification, and cancellation across one or more follower accounts with sub-second latency. Whether you manage multiple personal accounts, operate a prop-firm allocation service, or simply want a unified P&L dashboard, TradeHaven provides the infrastructure to do so reliably.

Prerequisites

  • One or more active Tradovate accounts (demo or live) with API access enabled
  • A valid email address for your TradeHaven account
  • A modern browser (Chrome, Firefox, Safari, or Edge) for the dashboard
  • An understanding of the instruments you intend to trade (ES, NQ, CL, GC, etc.)

Quick-Start Steps

  1. Create your TradeHaven account — Sign up at the registration page with your email. Verify your address through the confirmation link sent to your inbox.
  2. Connect your Tradovate account(s) — Navigate to Settings and initiate the OAuth flow with Tradovate. Authorize TradeHaven to access your account data and place orders on your behalf.
  3. Create a sync group — Group the accounts that should trade in lockstep. Assign a leader and one or more followers. Configure lot ratios if follower accounts differ in size.
  4. Start syncing — Toggle the sync engine on. Place a trade in the leader account (through your normal Tradovate platform or any connected front-end) and watch it replicate to every follower in real time.

Account Setup

Your TradeHaven account is the central identity that ties together all of your connected Tradovate accounts, sync groups, risk configurations, and analytics data.

Creating Your Account

Visit the TradeHaven sign-up page and provide your email address and a secure password. Passwords must be at least 12 characters and include a mix of uppercase, lowercase, numeric, and special characters. We hash all credentials using bcrypt with a cost factor of 12; TradeHaven never stores plaintext passwords.

Email Verification

After registration, a verification email is dispatched to your inbox. Click the confirmation link within 24 hours to activate your account. If you do not receive the email, check your spam or junk folder. You can request a new verification link from the login page by selecting "Resend verification email." Unverified accounts are restricted from connecting Tradovate credentials or creating sync groups.

Profile Settings

Once verified, navigate to your profile settings to configure the following:

  • Display name — Shown on your dashboard and in any shared analytics views.
  • Timezone — Controls how timestamps and session boundaries (e.g., RTH vs. ETH) are displayed across the platform.
  • Notification preferences — Choose whether to receive email alerts for sync failures, risk guardrail triggers, and daily P&L summaries.
  • Two-factor authentication — Enable TOTP-based 2FA for an additional layer of security. We strongly recommend this for accounts managing live capital.

Connecting Tradovate

TradeHaven uses Tradovate's official OAuth 2.0 protocol to establish a secure, revocable connection to your brokerage accounts. At no point does TradeHaven store your Tradovate username or password. All authentication is handled through token-based authorization.

Step-by-Step OAuth Flow

  1. Go to Settings > Connected Accounts in your TradeHaven dashboard.
  2. Click "Connect Tradovate Account." You will be redirected to the Tradovate authorization page.
  3. Log in with your Tradovate credentials on their domain. Review the permissions TradeHaven is requesting and click "Authorize."
  4. Tradovate redirects you back to TradeHaven with an authorization code. We exchange this code for an access token and a refresh token server-side.
  5. Your Tradovate account now appears under Connected Accounts with a green status indicator.

Requested Permissions

TradeHaven requests the following scopes during the OAuth handshake:

  • account:read — Read account metadata, balances, and margin information.
  • order:read — Stream live order events (fills, cancels, modifications).
  • order:write — Place, modify, and cancel orders on follower accounts during sync.
  • position:read — Query open positions for reconciliation and risk evaluation.

How Tokens Work

Access tokens issued by Tradovate expire after a set window (typically 60-80 minutes). TradeHaven automatically refreshes tokens using the stored refresh token before expiration. If a refresh fails (e.g., you revoked access from the Tradovate side), the account status in TradeHaven will change to "Disconnected" and sync operations for that account will be paused until you re-authorize.

Reconnecting Expired Sessions

If your connection lapses, navigate to Connected Accounts and click "Reconnect" next to the affected account. You will be taken through the OAuth flow again. All of your sync group memberships, risk settings, and historical data are preserved; only the authorization token is replaced. There is no need to reconfigure groups or guardrails after reconnecting.

Sync Groups

A sync group is the fundamental organizational unit in TradeHaven. It defines a set of Tradovate accounts that participate in trade replication together. Each sync group has exactly one leader account and one or more follower accounts. You can create multiple sync groups to manage different strategies, instruments, or account segments independently.

Creating a Sync Group

  1. Navigate to Dashboard > Sync Groups and click "New Group."
  2. Give the group a descriptive name (e.g., "ES Scalping - Live Accounts" or "NQ Swing - Demo Testing").
  3. Select a leader account from your connected Tradovate accounts.
  4. Add one or more follower accounts. You may choose from any connected account that is not already designated as a leader in another group.
  5. Configure group-level settings (see below) and click "Create."

Group Settings

  • Sync mode — "Immediate" replicates orders the moment they are detected on the leader account. "Confirmed" waits for fill confirmation before placing the follower order, reducing risk of phantom fills but adding slight latency.
  • Instrument filter — Optionally restrict which contracts are replicated. For example, you might only sync ES and NQ while ignoring any CL trades placed in the leader.
  • Session hours — Limit sync to Regular Trading Hours (RTH) only, Extended Trading Hours (ETH) only, or allow sync at all times.
  • Auto-flatten — When enabled, all follower positions in this group are automatically flattened at a configurable time (e.g., 15:55 CT before the CME close).

Adding and Removing Accounts

You can add or remove follower accounts from an active sync group at any time. When a follower is removed, any open positions on that account that resulted from sync operations remain open; TradeHaven does not auto-close positions on removal. You are responsible for managing residual positions. To remove the leader account, you must first designate a new leader or dissolve the group entirely.

Leader/Follower Configuration

The leader-follower model is the core of TradeHaven's sync engine. The leader account is the source of truth: every order event (market, limit, stop, stop-limit, bracket, OCO) detected on the leader is replicated to each follower account with configurable sizing adjustments.

Setting a Leader Account

Each sync group must have exactly one leader. The leader is the account where you actively place trades. TradeHaven monitors the leader via a persistent WebSocket connection to the Tradovate streaming API. When an order event fires (placement, fill, modification, cancellation), the sync engine processes it immediately.

An account can only be a leader in one sync group at a time, but it can simultaneously be a follower in a different group. This allows chaining configurations for advanced multi-tier allocation setups.

How Followers Mirror Trades

When a trade event is detected on the leader, the sync engine performs the following steps for each follower:

  1. Validate that the follower account is connected and the token is not expired.
  2. Check the follower's risk guardrails (daily loss limit, max position size, kill switch status).
  3. Calculate the follower order quantity based on the configured lot sizing rule.
  4. Submit the order to Tradovate via the REST API with the same order type, price levels, and TIF (Time in Force) as the leader order.
  5. Record the order mapping (leader order ID to follower order ID) for subsequent modifications and cancellations.

Lot Sizing Rules

TradeHaven supports three lot sizing modes per follower:

  • Fixed ratio — A static multiplier applied to the leader's order quantity. A ratio of 1.0 means identical sizing. A ratio of 0.5 means the follower trades half the lots. Fractional results are rounded down to the nearest whole contract.
  • Fixed quantity — The follower always trades the same number of contracts regardless of the leader's quantity. Useful when the follower account has strict position limits imposed by the prop firm or account size.
  • Balance-proportional — The follower's lot size is calculated as (follower balance / leader balance) multiplied by the leader's quantity, rounded down. This keeps risk exposure proportional to each account's capitalization.

Latency Considerations

TradeHaven's sync engine operates with a target latency of under 200 milliseconds from leader fill detection to follower order submission. Actual latency depends on your network conditions, the Tradovate API response time, and the number of followers in the group. For time-sensitive scalping strategies on instruments like ES or NQ with tight stop losses, we recommend using "Immediate" sync mode and keeping the follower count below five accounts to minimize propagation delay. For swing or position trades, latency is generally not a material concern.

Risk Guardrails

Risk guardrails are per-account safety mechanisms that override the sync engine when predefined thresholds are breached. They are designed to protect follower accounts from excessive drawdown, runaway losses, and accidental over-leveraging. Guardrails operate independently of Tradovate's built-in risk controls and provide an additional layer of protection at the TradeHaven platform level.

Daily Loss Limit

Set a maximum permitted realized + unrealized loss for each account per trading day. When the combined P&L crosses this threshold, TradeHaven halts all new order submissions for that account and optionally flattens open positions. The daily loss counter resets at a configurable time aligned to your session preferences (e.g., 17:00 CT for CME products).

Maximum Position Size

Define the maximum number of open contracts permitted per instrument per account. If a sync operation would push the follower's position beyond this limit, the order is rejected at the TradeHaven level before it reaches Tradovate. This is critical for prop-firm accounts with strict scaling rules (e.g., maximum 5 contracts on MES in an evaluation account).

Kill Switch

The kill switch is an emergency control that immediately halts all sync activity for an account and, optionally, flattens every open position and cancels every working order. You can activate the kill switch from the dashboard with a single click. Once engaged, the kill switch remains active until manually disarmed. It is designed for scenarios such as unexpected market volatility, news events, or technical anomalies.

Lockout Periods

After a daily loss limit is triggered, you can configure a lockout period that prevents syncing from resuming for a specified duration (e.g., 1 hour, until end of session, or until the next trading day). This prevents emotional re-engagement after a loss streak and enforces disciplined risk management.

SL/TP Enforcement

Require that every synced order includes a stop-loss and/or take-profit bracket. If the leader places a naked market order without protective stops, TradeHaven can automatically attach configurable SL/TP offsets to the follower's order. For example, you might enforce a 10-tick stop-loss and a 20-tick take-profit on all ES follower orders regardless of what the leader submits.

How Guardrails Interact with Sync

Guardrails are evaluated before every order is placed on a follower account. The evaluation order is: kill switch status, daily loss limit, max position size, SL/TP enforcement. If any guardrail rejects the order, it is logged in the audit trail with the specific reason. The leader order and other follower accounts in the group are not affected; guardrails are strictly per-account. You can review all guardrail rejections in the Dashboard under the Activity Log.

Dashboard Guide

The TradeHaven dashboard is your command center for monitoring account health, sync status, and performance metrics in real time. It is divided into several panels, each serving a distinct purpose.

Overview Panel

The top-level overview displays aggregate metrics across all connected accounts: total realized P&L for the day, total unrealized P&L, number of active sync groups, and the count of trades executed today. Each metric updates in real time via WebSocket streaming.

Account Cards

Each connected Tradovate account is represented by a card showing the account name, current balance, today's P&L, open positions with unrealized gain/loss, and the account's role (leader or follower). The card border color indicates connection status: green for active, yellow for token refresh in progress, and red for disconnected.

P&L Display

The P&L panel shows a running equity curve for the current session, plotted tick-by-tick as fills come in. Realized P&L is displayed in solid green (profit) or red (loss), while unrealized P&L is shown as a dashed overlay. Hover over any point on the curve to see the exact timestamp, instrument, fill price, and quantity.

Status Indicators

Throughout the dashboard, color-coded indicators communicate system state at a glance:

  • Green — System operational, account connected, sync active.
  • Yellow — Token refresh pending, sync paused by guardrail, or elevated latency detected.
  • Red — Disconnected, kill switch engaged, daily loss limit breached, or sync error.
  • Gray — Account idle or sync group disabled.

P&L Analytics

TradeHaven provides a comprehensive analytics suite to help you evaluate performance across all synchronized accounts. Data is computed from actual fill records stored in your TradeHaven account and is always reconciled against Tradovate's order history.

Calendar Heatmap

The calendar heatmap displays daily P&L across a selectable date range. Each cell represents one trading day, colored on a gradient from deep red (largest loss) through neutral gray (flat) to bright green (largest gain). Click any cell to drill down into that day's individual trades. This view makes it easy to spot patterns like consistently negative Mondays, improving performance over time, or streaks of consecutive winning days.

Per-Account Breakdown

Compare performance across accounts side by side. This view shows each account's cumulative P&L, win rate, profit factor, average winner vs. average loser, largest winning trade, largest losing trade, and max intraday drawdown. Use this to evaluate whether your follower sizing is appropriate and whether the sync engine is performing uniformly across accounts.

Equity Tracking

The equity curve plots your account equity over time, combining starting balance with cumulative realized P&L and marking any deposits or withdrawals as discrete events. You can overlay multiple accounts on the same chart to visualize how closely followers track the leader. Divergence between leader and follower equity curves may indicate latency issues, partial fills, or guardrail rejections.

Exporting Data

All analytics data can be exported in CSV format for further analysis in external tools. Navigate to any analytics view and click the "Export" button to download the current dataset. Exports include full fill-level detail: timestamp, account, instrument, side, quantity, fill price, realized P&L per trade, and cumulative P&L. You can also access this data programmatically via the REST API (see API Reference below).

API Reference

TradeHaven exposes a RESTful API for programmatic access to trade data, sync operations, and analytics. All endpoints require a valid API key passed via the Authorization header as a Bearer token. API keys are generated from your profile settings.

GET /api/trades

Retrieve a paginated list of trade fills across all connected accounts. Supports query parameters for filtering by account ID, instrument, date range, and side (buy/sell).

Request

curl -X GET "https://api.tradehaven.io/api/trades?accountId=12345&instrument=ESZ4&from=2025-12-01&to=2025-12-31&limit=50" \
  -H "Authorization: Bearer th_live_abc123def456" \
  -H "Content-Type: application/json"

Response

{
  "status": "ok",
  "data": [
    {
      "id": "fill_9a8b7c6d",
      "accountId": 12345,
      "instrument": "ESZ4",
      "side": "Buy",
      "quantity": 2,
      "fillPrice": 5042.75,
      "timestamp": "2025-12-15T14:32:18.442Z",
      "realizedPnl": null,
      "orderType": "Market",
      "syncGroupId": "sg_abc123"
    },
    {
      "id": "fill_1e2f3g4h",
      "accountId": 12345,
      "instrument": "ESZ4",
      "side": "Sell",
      "quantity": 2,
      "fillPrice": 5045.50,
      "timestamp": "2025-12-15T14:47:03.118Z",
      "realizedPnl": 275.00,
      "orderType": "Limit",
      "syncGroupId": "sg_abc123"
    }
  ],
  "pagination": {
    "total": 384,
    "limit": 50,
    "offset": 0,
    "hasMore": true
  }
}

POST /api/trades/copy

Manually trigger a trade copy from a leader account to one or more followers outside of the automatic sync engine. This is useful for one-off allocations or replaying a specific trade to a subset of followers.

Request

curl -X POST "https://api.tradehaven.io/api/trades/copy" \
  -H "Authorization: Bearer th_live_abc123def456" \
  -H "Content-Type: application/json" \
  -d '{
    "leaderAccountId": 12345,
    "followerAccountIds": [67890, 11223],
    "instrument": "NQH5",
    "side": "Buy",
    "quantity": 1,
    "orderType": "Market",
    "stopLoss": { "offset": 20 },
    "takeProfit": { "offset": 40 }
  }'

Response

{
  "status": "ok",
  "data": {
    "copyId": "cp_x1y2z3",
    "results": [
      {
        "followerAccountId": 67890,
        "orderId": "ord_a1b2c3",
        "status": "submitted",
        "quantity": 1
      },
      {
        "followerAccountId": 11223,
        "orderId": "ord_d4e5f6",
        "status": "submitted",
        "quantity": 1
      }
    ]
  }
}

GET /api/pnl/snapshot

Fetch a real-time P&L snapshot for one or all connected accounts. Returns realized P&L, unrealized P&L, net P&L, open position count, and today's trade count.

Request

curl -X GET "https://api.tradehaven.io/api/pnl/snapshot?accountId=12345" \
  -H "Authorization: Bearer th_live_abc123def456"

Response

{
  "status": "ok",
  "data": {
    "accountId": 12345,
    "realizedPnl": 1250.00,
    "unrealizedPnl": -175.50,
    "netPnl": 1074.50,
    "openPositions": 1,
    "tradesToday": 14,
    "timestamp": "2025-12-15T16:05:22.901Z",
    "dailyLossLimitRemaining": 925.50,
    "killSwitchActive": false
  }
}

GET /api/syncer/snapshot

Retrieve the current state of all sync groups, including leader and follower statuses, active connections, last sync timestamp, and any pending order mappings.

Request

curl -X GET "https://api.tradehaven.io/api/syncer/snapshot" \
  -H "Authorization: Bearer th_live_abc123def456"

Response

{
  "status": "ok",
  "data": {
    "syncGroups": [
      {
        "id": "sg_abc123",
        "name": "ES Scalping - Live",
        "syncMode": "Immediate",
        "active": true,
        "leader": {
          "accountId": 12345,
          "connected": true,
          "lastHeartbeat": "2025-12-15T16:05:20.000Z"
        },
        "followers": [
          {
            "accountId": 67890,
            "connected": true,
            "lastSyncTimestamp": "2025-12-15T16:04:58.331Z",
            "pendingOrders": 0,
            "lotSizingMode": "FixedRatio",
            "lotRatio": 1.0
          },
          {
            "accountId": 11223,
            "connected": true,
            "lastSyncTimestamp": "2025-12-15T16:04:58.489Z",
            "pendingOrders": 0,
            "lotSizingMode": "BalanceProportional",
            "lotRatio": null
          }
        ]
      }
    ]
  }
}

Troubleshooting

Below are the most common issues encountered by TradeHaven users, along with their causes and resolutions.

OAuth Authorization Fails

If the Tradovate authorization page returns an error or redirects you back to TradeHaven without connecting, check the following:

  • Ensure pop-up blockers are not preventing the Tradovate login window from opening.
  • Verify that your Tradovate account has API access enabled. Older accounts or certain evaluation accounts may have API access disabled by default. Contact Tradovate support to enable it.
  • Clear your browser cache and cookies for both tradehaven.io and tradovate.com, then retry.
  • If you are using a VPN, try disconnecting it. Some VPN endpoints are blocked by Tradovate's authentication servers.

Sync Lag or Delayed Fills on Followers

If follower accounts receive orders noticeably later than the leader fill (more than 500ms), consider these potential causes:

  • High follower count — Each follower order is submitted sequentially. Groups with more than five followers may experience compounding latency. Consider splitting into multiple smaller sync groups.
  • Tradovate API rate limits — Tradovate throttles API requests during peak market hours. If you receive 429 (Too Many Requests) responses, TradeHaven retries with exponential backoff but this adds delay.
  • Network congestion — TradeHaven servers are hosted in AWS us-east-1 to minimize latency to Tradovate's infrastructure. If your dashboard latency meter shows elevated ping, the bottleneck may be on your end.

WebSocket Disconnects

TradeHaven maintains persistent WebSocket connections to Tradovate for each leader account. Occasional disconnects are normal and the engine automatically reconnects within seconds. However, if you see frequent disconnections (more than 3 per hour) in the Activity Log, this may indicate:

  • An expired or revoked access token. Navigate to Connected Accounts and check the token status.
  • Tradovate platform maintenance. Check the Tradovate status page for scheduled downtime or incidents.
  • A firewall or proxy on your network interfering with WebSocket connections on port 443.

Account Not Appearing After Connection

If you complete the OAuth flow but the account does not appear under Connected Accounts:

  • Wait 30 seconds and refresh the page. The initial account metadata fetch can take a moment.
  • Check that you authorized the correct Tradovate account. If you have multiple Tradovate logins, you may have accidentally authorized a different one.
  • Review the Activity Log for any error messages related to the connection attempt.
  • If the issue persists, disconnect and re-authorize the account, or contact TradeHaven support with your account ID and the approximate time of the connection attempt.

FAQ

Answers to the most frequently asked questions about TradeHaven.

Does TradeHaven support demo Tradovate accounts?+
Yes. TradeHaven fully supports both demo and live Tradovate accounts. You can mix demo and live accounts within the same TradeHaven profile, though we strongly recommend against putting demo and live accounts in the same sync group to avoid confusion. Demo accounts are ideal for testing your sync configuration, lot sizing rules, and risk guardrails before deploying to live capital.
How many accounts can I connect at once?+
The number of connected accounts depends on your subscription tier. The Starter plan supports up to 3 accounts, the Professional plan supports up to 10, and the Enterprise plan has no hard limit. Each account requires its own OAuth authorization and maintains an independent WebSocket connection.
Can one account be a leader in one group and a follower in another?+
Yes. An account can serve as a leader in one sync group and a follower in a different sync group simultaneously. This enables multi-tier allocation setups. For example, Account A leads Group 1 (which Account B follows), and Account B leads Group 2 (which Accounts C and D follow). Be cautious with this configuration, as trades will cascade through the chain, and any latency or guardrail rejection in the middle tier will affect downstream followers.
What happens if the leader places a trade while a follower is disconnected?+
The sync engine will detect that the follower is disconnected and log the missed order in the Activity Log with a "follower_offline" status. The order is not queued or retried automatically. When the follower reconnects, you can use the manual trade copy endpoint (POST /api/trades/copy) to replay the missed trade if desired. Automatic reconciliation of missed trades during disconnects is on our roadmap for a future release.
Does TradeHaven work with non-futures Tradovate products?+
TradeHaven currently supports all CME Group futures and micro-futures contracts available through Tradovate. This includes ES, MES, NQ, MNQ, YM, MYM, RTY, M2K, CL, MCL, GC, MGC, SI, HE, LE, ZB, ZN, ZC, ZS, ZW, 6E, 6J, and all associated options on futures. We do not currently support equity, forex, or crypto products, as Tradovate is a futures-only platform.
How does TradeHaven handle partial fills on the leader?+
When the leader receives a partial fill, TradeHaven waits for the fill event to propagate via the WebSocket stream and then submits a follower order for the partially filled quantity (adjusted by the lot sizing rule). If subsequent partial fills arrive, each is processed independently. If the remaining quantity is cancelled, a corresponding cancellation is sent to the follower. This ensures follower positions always reflect the actual filled quantity on the leader, not the originally submitted quantity.
Can I use TradeHaven with prop firm evaluation accounts?+
Yes, and this is one of the most common use cases. Many traders use TradeHaven to sync trades from a personal account to one or more prop firm evaluation or funded accounts. The risk guardrails feature is particularly valuable here: you can set daily loss limits, max position sizes, and SL/TP enforcement to match the prop firm's rules exactly, ensuring your evaluation account never breaches their parameters even if your leader account takes on more risk.
What is the uptime SLA for the sync engine?+
TradeHaven targets 99.9% uptime for the sync engine during CME trading hours (Sunday 17:00 CT through Friday 16:00 CT). Scheduled maintenance windows are announced at least 48 hours in advance and are performed during weekend market closures whenever possible. In the event of unplanned downtime, the sync engine is designed to gracefully reconnect and resume operations without requiring manual intervention. Historical uptime data is published on our status page.
How do I cancel my subscription?+
Navigate to Settings and then Billing to manage your subscription. You can downgrade or cancel at any time. Cancellation takes effect at the end of your current billing period. Your connected accounts and historical data are retained for 90 days after cancellation, during which time you can reactivate without losing any configuration. After 90 days, data is permanently deleted in accordance with our privacy policy.
Is my Tradovate data secure on TradeHaven?+
TradeHaven takes security seriously. All data is encrypted in transit using TLS 1.3 and at rest using AES-256. Tradovate OAuth tokens are stored in an encrypted vault with access restricted to the sync engine service. We never store your Tradovate username or password. TradeHaven staff do not have access to your trading data or brokerage credentials. Our infrastructure undergoes regular penetration testing and we maintain SOC 2 Type II compliance. You can revoke TradeHaven's access at any time from your Tradovate account settings.