Waitlist

Join the waitlist

EZPZ Trader is finishing up before opening to new accounts. Add your email and we'll let you know the moment it's ready.

Signal Message Reference

Every field EZPZ Trader reads from an alert message, the values it accepts, and which subscription setting lets it change your order.

On this page

The webhook request

Send a POST request to your strategy's webhook URL with a JSON body:

POST https://ezpztrader.com/trading/webhook/{uuid}/{secret}/
{
    "ticker": "AMD",
    "action": "buy",
    "signalPrice": 143.12,
    "quantity": 1,
    "takeProfit": {
        "percent": 10
    },
    "stopLoss": {
        "type": "stop",
        "percent": 5
    }
}

This buys 1 share of AMD on every enabled subscription of the strategy. A take profit is placed 10% above the entry price and a stop loss 5% below it, where the subscription allows signal take profit / stop loss and the broker supports them.

How fields are read

  • Field names are case-sensitive: quantityType, not quantitytype.
  • Numbers can be sent as numbers or text: 5 and "5" are the same.
  • true / false can be sent as JSON booleans or the text "true" / "false".
  • Fields we don't know are kept with the signal and shown on its page, and otherwise ignored. Put your own data in extras so it never clashes with a field we add later.
  • A field marked Allow signal override needed only changes your order when that setting allows it. See Subscriptions.

Required

ticker

The symbol to trade: AAPL, BTCUSD, MNQZ2026, an option contract like SPY 261016C580, up to 32 characters.

Type: text · Always read (no setting needed)

action

What to do. buy and sell enter (and close the opposite side first); exit closes; add adds to an open position; cancel cancels open orders; reverse flips sides; breakeven moves the stop to the entry price; resize sets the position to a quantity.

Type: text · Values: buy, sell, exit, add, cancel, reverse, breakeven, resize · Always read (no setting needed)

Direction and size

sentiment

The position you want after the trade. flat closes without entering the other side. Allowed with buy, sell and resize only.

Type: text · Values: bearish, bullish, flat, long, short · Always read (no setting needed)

quantity

How much to trade. Without it, the subscription's Position Size decides.

Type: number · Allow signal override needed: Position Size

quantityType

How to read quantity. Case-sensitive. Without it, quantity is a fixed share/contract count.

Type: text · Values: dollar_amount, fixed_quantity, percent_of_equity, percent_of_position, risk_dollar_amount, risk_percent · Allow signal override needed: Position Size

Prices and order type

signalPrice (or price)

The price when the alert fired. Used for limit prices, sizing and slippage when no limitPrice is sent. An unreadable value counts as no price.

Type: number · Always read (no setting needed)

orderType

The order type for the entry and exit. One the broker can't take keeps the subscription's own.

Type: text · Values: limit, market, stop, stop_limit, stop_market, trailing_stop · Allow signal override needed: Entry / Exit order type

limitPrice

The limit price of a limit or stop_limit order.

Type: number · Always read (no setting needed)

stopPrice

The trigger price of a stop or stop_limit order.

Type: number · Always read (no setting needed)

trailAmount / trailPercent

The trail of a trailing_stop order: a price distance, or a percent below 100. Send one.

Type: number · Allow signal override needed: Entry / Exit order type

timeInForce

How long the order stays open. One the broker can't take keeps the subscription's own.

Type: text · Values: cls, day, fok, gtc, gtd, ioc, opg · Allow signal override needed: Entry / Exit time in force

extendedHours

Trade in the pre/post-market session (stocks, where the broker supports it).

Type: true / false · Allow signal override needed: Entry / Exit time in force

marketPriceType

Which quote price to use when the signal has no price.

Type: text · Values: ask, ask_bid, bid, bid_ask, last, mark, midpoint · Allow signal override needed: Entry / Exit market price type

Take profit and stop loss

takeProfit

A take profit attached to the entry, where the broker supports it.

Type: object · Values: percent, amount, limitPrice or pnlAmount (one) · Allow signal override needed: Take profit

stopLoss

A stop loss attached to the entry. A trailing_stop type is refused for now.

Type: object · Values: type (stop, stop_limit, stop_market, trailing_stop), plus percent, amount, stopPrice or pnlAmount (one), limitPrice for stop_limit · Allow signal override needed: Stop loss

breakevenOffset

With action breakeven: how far past the entry price to put the new stop.

Type: number · Values: 0.001 to 100 · Allow signal override needed: Exit market price type

Open orders and timing

cancel

Cancel open orders on the ticker first (true) or don't (false), whatever the subscription says.

Type: true / false · Always read (no setting needed)

cancelOrderType

With cancel: only cancel open orders of this type.

Type: text · Values: market, limit, stop, stop_limit, trailing_stop · Always read (no setting needed)

cancelAfter

Cancel the order if it's still open after this long.

Type: seconds · Values: 1 to 3600 · Allow signal override needed: Cancel open entry / exit order after

rejectAfter

Skip the trade if the signal is older than this when it runs.

Type: seconds · Allow signal override needed: Reject entry / exit if signal is older than

delay

Wait this long before trading. At most 24 hours.

Type: seconds or time · Values: 1 to 86400, "+5 minutes", "5:30 pm EST" · Always read (no setting needed)

expiresAt

Don't trade the signal after this.

Type: date or time · Values: "2026-01-25", "+1 month" · Always read (no setting needed)

ignoreTradingWindows

Trade even outside the subscription's trading windows.

Type: true / false · Always read (no setting needed)

bidAskSpreadFilter / bidAskSpreadFilterPercent

Skip the order if the bid/ask spread is wider than this. Send one.

Type: number · Values: percent: 0.01 to 99.99 · Allow signal override needed: Entry / Exit bid-ask spread

Options contract

optionType

Which side of the chain to pick when the ticker is an underlying (SPY), not a contract.

Type: text · Values: both, call, calls, put, puts · Allow signal override needed: Options contract

intrinsicValue

In or out of the money.

Type: text · Values: itm, otm · Allow signal override needed: Options contract

expiration

The first expiration on or after this.

Type: date or relative · Values: "2026-11-20", "+1 month", "0 days" · Allow signal override needed: Options contract

expirationType

Which kind of expiration to pick.

Type: text · Values: 0dte, any, daily, end-of-month, leaps, monthly, quarterly, weekly, zero-dte · Allow signal override needed: Options contract

strikeCount

How many strikes to read around the money.

Type: whole number · Values: even, 2 to 20 · Allow signal override needed: Options contract

strikesAway

How many strikes from the money to pick.

Type: whole number · Values: 1 to half the strike count · Allow signal override needed: Options contract

strikePrice

An exact strike to trade.

Type: number · Allow signal override needed: Options contract

Stored with the signal

message

A note shown with the signal.

Type: text · Values: up to 255 characters, no HTML · Always read (no setting needed)

time

When the alert fired. "Reject if signal is older than" counts from this time, so a late delivery isn't treated as fresh. A time in the future, or none, counts from when we received it.

Type: ISO-8601 time · Values: "2026-10-24T14:30:00Z" (TradingView: {{timenow}}) · Always read (no setting needed)

interval, extras

Saved and shown on the signal's page. Use extras for your own fields so they never clash with ours.

Type: any · Always read (no setting needed)

Batch signals

When the strategy's Allow batch signals is on, one request can carry a JSON list of up to 5 signals. Every item is checked first: if any one is invalid, none of them are accepted.

[
    {"ticker": "AAPL", "action": "buy", "quantity": 10},
    {"ticker": "MSFT", "action": "buy", "quantity": 5}
]

Examples

Enter long

{
    "ticker": "SPY",
    "action": "buy"
}

Exit the position

{
    "ticker": "SPY",
    "action": "exit"
}

An exit without a quantity closes the whole position. With a quantity smaller than the position, it closes part of it.

Close a long without going short

{
    "ticker": "SPY",
    "action": "sell",
    "sentiment": "flat"
}

sentiment: flat always closes the full position, whatever quantity is sent, and never opens the other side.

Partial exit by percent

{
    "ticker": "SPY",
    "action": "exit",
    "quantityType": "percent_of_position",
    "quantity": 50
}

Limit order with take profit and stop loss prices

{
    "ticker": "TSLA",
    "action": "buy",
    "orderType": "limit",
    "limitPrice": 250.50,
    "takeProfit": {
        "limitPrice": 265
    },
    "stopLoss": {
        "type": "stop_limit",
        "stopPrice": 242,
        "limitPrice": 241.50
    }
}

Risk a fixed dollar amount

{
    "ticker": "AAPL",
    "action": "buy",
    "signalPrice": 100,
    "quantityType": "risk_dollar_amount",
    "quantity": 100,
    "stopLoss": {
        "type": "stop",
        "stopPrice": 90
    }
}

The stop is $10 below the entry, so risking $100 buys 10 shares. See Position Sizing.

Cancel open orders

{
    "ticker": "SPY",
    "action": "cancel",
    "cancelOrderType": "stop"
}

Without cancelOrderType, every open order on the ticker is cancelled.

Wait before trading

{
    "ticker": "QQQ",
    "action": "exit",
    "delay": 60
}