Why a Trade Was Skipped
Every reason shown on a signal when it was refused, skipped or failed, what caused it, and what to change.
Where to find the reason
Open the strategy's Signals, then the signal. Each subscription shows its result. Open a skipped or failed one to see the reason, the broker's own message if there was one, and the settings it ran with.
- Refused at the webhook: nothing ran on any account. The reason is about the request itself.
- Skipped: a subscription decided not to trade, for example outside its trading window. Nothing was sent to the broker.
- Failed: something went wrong while sending, or the broker rejected the order.

Refused at the webhook
| Reason | What happened | What to do |
|---|---|---|
Rate limitedrate_limited |
This strategy's webhook received more than 60 requests in 60 seconds, so this one was rejected before it was even read. | If this wasn't expected, check whether the sender is misconfigured to fire far more often than intended. |
Incorrect webhook secretinvalid_auth |
The secret in the webhook URL didn't match this strategy's secret. | Copy the exact webhook URL from this strategy's page (don't type it by hand) and paste it into your alert. |
Sender IP not allowedip_blocked |
This strategy only accepts signals from specific IP addresses, and the sender's IP wasn't on that list. | Check the strategy's IP restriction setting, or switch it back to "Any" if you don't need to lock it down. |
Empty request bodypayload_empty |
The webhook POST arrived with no body at all. | Make sure your alert's message field actually has JSON in it. |
Malformed payloadpayload_malformed |
The request body wasn't valid JSON, or wasn't a JSON object (e.g. it was a plain string or array). | Compare your alert's message field against the JSON examples on this strategy's Webhook panel. |
Missing required fieldspayload_missing_fields |
Every signal needs a "ticker" and a valid "action". One of them was missing or empty. | Check your alert's JSON includes both fields, and that action is one of the supported values (buy, sell, exit, reverse, add, cancel, breakeven). |
Ticker not allowed on this strategyunsupported_ticker |
This strategy is set to Only selected tickers, and the signal's ticker isn't on its list, so it was refused before reaching any subscription. | Add the ticker to the strategy's Allowed tickers (on an options strategy, its underlying, e.g. SPY), or choose "Any tickers". |
Invalid options ticker formatinvalid_options_ticker |
The ticker looks like an options contract, but it couldn't be read as one. The date isn't a real date, the strike isn't a valid price, or call/put is missing with no optionType to supply it. It was refused before reaching any subscription or broker. | Send the contract as underlying, YYMMDD expiry, C or P, strike: e.g. AAPL261007C335 or AAPL 261007C335.0 (TradingView's {{ticker}} format and the OCC form AAPL261007C00335000 work too), or send the underlying (AAPL) to have a contract picked. |
Ticker and optionType don't matchinvalid_ticker_option_type |
The ticker is a call contract and the signal's optionType says put (or the reverse), so it's unclear which one was meant. It was refused before reaching any subscription or broker. | Make optionType match the C or P in the contract symbol, or leave optionType out when sending an exact contract. |
Duplicate signalduplicate_signal |
An identical signal (same strategy, ticker, action, and payload) was already received within the last few seconds, so this one was logged but not re-executed. | Usually just a retried delivery from the sender, no action needed. |
Couldn't queue for executiondispatch_failed |
This signal was received and logged, but the background task queue that actually runs it couldn't be reached, no order was placed. | If your alert sender retries on failure (most do), it likely already succeeded on a later attempt. Check for a newer signal with the same ticker/action. This signal itself is never re-sent automatically, since that could place the same order twice. If no newer signal went through, place the trade yourself if you still want it. |
Invalid quantityinvalid_quantity |
The alert's "quantity" wasn't a positive number (for example "abc", 0, -5 or a TradingView placeholder that didn't fill in). The whole alert was refused when it arrived, so nothing was sent and your position wasn't touched. | Send a positive number such as 10 or "2.5", or leave quantity out to use the subscription's Position Size (an exit then closes the whole position). Only a resize can send 0. |
Invalid quantity typeinvalid_quantity_type |
The alert's "quantityType" isn't one of the allowed values, so the whole alert was refused and nothing was sent. Values are case-sensitive. | Use fixed_quantity, dollar_amount, risk_dollar_amount, risk_percent, percent_of_equity or percent_of_position. |
Quantity type needs a quantityquantity_type_requires_quantity |
The alert sent a "quantityType" but no "quantity", so there was nothing to size with and the whole alert was refused. | Send a quantity with the quantityType, or leave both out to use the subscription's Position Size. |
Resize needs a quantityresize_requires_quantity |
A "resize" alert says what size to end at, so it needs a "quantity" of 0 or more. This one had none and was refused. | Send the target size as quantity. 0 closes the position. |
Quantity type not allowed on this actioninvalid_quantity_type_action |
This quantityType can't be used with this action, so the whole alert was refused: percent_of_position only with buy, sell, reverse or exit; risk_dollar_amount / risk_percent only with buy, sell, reverse or add; no quantityType at all with cancel. | Use a quantityType that fits the action, or leave it out. |
Invalid delayinvalid_delay |
The alert's "delay" couldn't be used: it wasn't a number of seconds from 1 to 86400, a relative time like "+5 minutes", or a future time with a timezone within 24 hours. The whole alert was refused. | Send for example 60, "+5 minutes" or "noon tomorrow EST". A date and time needs a timezone (Z, EST, ET…). |
Invalid expiresAtinvalid_expires_at |
The alert's "expiresAt" wasn't a future date like "2026-12-31" or a relative time like "+1 month", so the whole alert was refused. | Send a future date or relative time, or leave expiresAt out. |
Invalid signal fieldinvalid_signal_field |
A field in the alert had a value TradersPost-style webhooks don't accept: for example a sentiment on an exit, a breakeven without orderType stop / stop_limit, an unknown cancelOrderType, a message over 255 characters or with HTML, or a take profit / stop loss that mixes a percent with a price. The whole alert was refused and nothing was sent; the exact field is named above. | Fix the named field in your alert's message and send it again. |
Skipped or failed for one subscription
| Reason | What happened | What to do |
|---|---|---|
Ticker not allowedticker_not_allowed |
This subscription's ticker list doesn't include the signal's ticker, and "Any tickers" isn't selected. | Add the ticker to the subscription's allowed list (on an options subscription, its underlying, e.g. SPY), or choose "Any tickers". |
Wrong asset type for this subscriptionasset_class_mismatch |
Each subscription trades only the asset class selected on it. This signal's ticker is a different type. An options contract sent to a Stocks subscription, or a stock ticker sent to an Options subscription, so nothing was sent to the broker. | Send stock tickers to a Stocks subscription and options contracts (e.g. SPY260925C00650000) to an Options subscription. On Fire Panel, check the account's link of the matching type. |
Broker doesn't support this asset typebroker_unsupported_asset_class |
EZPZ Trader can't trade this subscription's asset class on its broker yet (for example Futures on an Alpaca account, or Options on a broker EZPZ only trades stocks with), so nothing was sent to the broker. | Edit the subscription and pick an account whose broker supports this asset class. The account list only shows compatible ones. |
Outside trading windowoutside_trading_window |
The subscription has trading windows configured, and the signal arrived outside all of them. | Adjust the subscription's trading windows, or enable "Allow exits outside trading window" if this was meant to be an exit. |
Signal too oldsignal_too_old |
The subscription rejects signals older than a set number of seconds (Reject entry/exit if signal is older than), counted from the alert's own time if it sends one, else from when it arrived. While the market is open, time spent waiting for another trade on the same account and symbol (trade locking) counts toward the age; a signal that arrived while its market was closed is judged as of when it arrived. This one was past the limit. | Raise (or clear) the subscription's signal-age limit if your alerts are sometimes delayed. |
Breakeven price unavailablebreakeven_unsupported |
A breakeven exit is priced from the position's average entry price, as reported by the broker. It wasn't reported this time (or the offset put the stop at or below 0), so no order was sent. | Check the position at the broker, or send a regular exit / stopLoss instead. |
Breakeven needs a stop exitbreakeven_needs_stop |
A breakeven is sent as a Stop or Stop Limit exit order at the average entry price ± the Exit breakeven offset (the same as TradersPost). This subscription's exit order type is neither. | Set the Exit order type to Stop Market or Stop Limit, or send "orderType": "stop" or "stop_limit" with Allow signal override on. |
Price not past the breakeven stop yetbreakeven_not_reached |
A breakeven moves your stop loss to the average entry price ± the Exit breakeven offset. A long's stop has to sit below the current bid (a short's above the ask), or the broker refuses it, and with Cancel open orders on, your old stop loss would already be gone. So it's checked first: nothing was cancelled or sent, and your current stop loss is still in place. | Send breakeven again once the price has moved past the breakeven stop. |
Trailing Stop not available here yettrailing_stop_unsupported |
Trailing Stop orders are switched on broker by broker, only once that broker's API has been checked. This broker (or this asset class on it) isn't switched on yet. Today: Alpaca stocks and the paper broker. | Use another order type for this subscription, or a broker where Trailing Stop is available. |
Waiting for another tradewaiting_for_trade_lock |
Trade locking runs one trade at a time per broker account and symbol, across all your subscriptions on that account. Another trade for this symbol was still running, so this one went back on the queue and is tried again after a short delay, until that trade is done. | Nothing to do. It's sent as soon as the other trade finishes. Turn off Enable trade locking in the Retry section only if your strategies never trade the same symbol on the same account at the same time. |
Trailing Stop needs a trailinvalid_trail |
A Trailing Stop follows the price by a trail amount ($) or a trail percent: exactly one of the two, greater than 0 (a percent below 100). | Set the trail amount or trail percent next to the order type, or send "trailAmount" / "trailPercent" with Allow signal override on. |
Trailing Stop entry with take profit / stop losstrailing_stop_with_tp_sl |
A Trailing Stop entry is a single order at the broker (Alpaca: "supported only with single orders"), so a take profit or stop loss can't ride on it. | Turn off the take profit / stop loss, or use a Market, Limit or Stop entry. |
No open position to exitno_position_to_exit |
An exit signal arrived, but this subscription doesn't currently hold a position in this ticker. | Nothing to fix. Expected if the position was already closed or never opened. |
No open position to reverseno_position_to_reverse |
A reverse signal arrived while flat. Reversing only makes sense against an existing position, so it's treated as a no-op rather than guessing a direction. | No fix needed unless you expected a position to already be open. |
No existing position to add tono_position_to_add |
An add signal arrived while flat. "Add" only makes sense against an existing position. | No fix needed unless you expected a position to already be open. |
Side not allowedside_not_allowed |
This signal would open (or keep) a position on a side this subscription's "Allowed Sides" setting doesn't permit. | Change the subscription's Allowed Sides setting if this side should be permitted. |
Already holds this sidealready_holds_side |
The subscription already holds a position on this side, and "Allow add to position" is off, so the signal was skipped instead of adding to it. | Turn on "Allow add to position" if repeat same-side signals should add to the position. |
Unhandled actionunhandled_action |
The signal's action wasn't one the engine recognizes. | This shouldn't normally happen since the webhook already validates the action. Check the payload for a typo. |
No sizing method configuredno_sizing_method |
This subscription doesn't have a Position Size method set, and there's no default. The app won't guess a trade size. | Open the subscription's settings and set a Position Size method (fixed quantity, dollar amount, % of equity, or risk-based). |
Quantity not usablequantity_not_positive |
The quantity used to size this order: the signal's "quantity" (when the subscription allows the signal to override Position Size), or the subscription's own Position Size value. Wasn't a usable positive number. | Send a positive numeric "quantity" in the signal, or check the Position Size value on the subscription. |
Invalid sentimentinvalid_sentiment |
The signal's "sentiment" field wasn't one of the values EZPZ Trader understands, so nothing was sent rather than guessing what it meant. | Send sentiment as long (or bullish), short (or bearish) or flat. For TradingView strategies, {{strategy.market_position}} already sends one of these. |
Sentiment needs a quantitysentiment_needs_quantity |
The signal's sentiment says the position stays open on its current side after this order (for example a sell with sentiment long), so it's a partial exit, but the signal didn't say how much to close. Nothing was sent instead of closing the whole position. | Include "quantity" with the amount to close (TradingView strategies: {{strategy.order.contracts}}), or send sentiment flat to close everything. |
Another signal was still runninglane_busy |
Signals for the same account and symbol are handled one at a time, so two can't both act on the same position. Under an earlier rule, a signal that waited over 11 minutes for the one ahead of it was skipped. That rule is gone: a waiting trade now keeps retrying until the trade ahead is done. | Check the position at your broker and the earlier signal's result, then send the signal again if you still want this trade. |
Missing entry pricemissing_entry_price |
Dollar-amount sizing needs an entry price to convert into a share quantity, and none was available. | Include a "price" field in the signal. |
Missing equity or pricemissing_equity_or_price |
Percent-of-equity sizing needs both the account's equity and an entry price, and one was unavailable. | Include a "price" field in the signal, and confirm the broker connection can report account equity. |
No position to size a percent ofno_position_for_percent |
Percent-of-position sizing needs an existing position to take a percentage of, and this subscription is flat. | This sizing method only works on top of an existing position. Use a different method for fresh entries. |
Missing inputs for risk-based sizingrisk_sizing_missing_inputs |
Risk-dollar sizing needs both an entry price and a stop-loss price to compute risk per share. | Include both a "price" and a "stopLoss" in the signal. |
Missing inputs for risk-percent sizingrisk_percent_missing_inputs |
Risk-percent sizing needs an entry price, a stop-loss price, and account equity. | Include both a "price" and a "stopLoss" in the signal, and confirm the broker connection can report account equity. |
Stop-loss equals entry pricestop_equals_entry |
Risk-based sizing divides by the distance between entry and stop-loss. If they're equal, that distance is zero and the math breaks. | Send a stop-loss price that's actually different from the entry price. |
Quantity rounds to zeroquantity_rounds_to_zero |
The computed quantity was smaller than the smallest amount that can be ordered: less than one share when fractional shares are off or the broker takes whole shares only, or less than the broker's smallest step for this symbol. | Increase the sizing amount, or turn on "Use fractional quantity" on a broker that supports it. |
Quantity below broker minimumquantity_below_broker_minimum |
The computed order was smaller than the minimum size or minimum order value your broker accepts for this symbol, so it wasn't sent. | Increase the sizing amount so the order is at least the broker minimum shown in the message. |
Unknown futures contractunknown_futures_contract |
This futures root wasn't in the list of contracts with a known point value, so a size that depends on the point value couldn't be worked out. Nothing was sent. (Shown on older trades; futures now trade by a fixed contract count.) | Use a fixed contract quantity, and send the full contract symbol such as MNQZ2026. |
Futures sizing not supportedfutures_sizing_not_supported |
Futures can only be sized by a fixed contract quantity. Dollar amount, risk and percent of equity sizing aren't supported for futures (the same as TradersPost). | Set the subscription's Position Size to None or Fixed quantity, or send a plain "quantity" without a dollar/risk/percent quantityType. |
Resize not usableinvalid_resize |
A resize sets the size the position should end at. This one had no usable target: "quantity" missing, negative or not a number, a quantityType other than fixed_quantity, dollar_amount or percent_of_equity, or a plain options ticker instead of a contract. | Send "action": "resize" with "quantity" = the size to hold (0 closes the position), optionally with "quantityType" fixed_quantity, dollar_amount or percent_of_equity. |
Already at the resize targetresize_at_target |
The position was already the size the resize asked for (or nothing was open and the target was 0), so no order was needed. Resting take profit / stop loss orders were left as they were. | Nothing to fix. Send a different target to change the position. |
Resize sentiment conflictresize_sentiment_conflict |
On a resize, "sentiment" guards the order's direction: bullish allows only buys, bearish only sells, and flat only moving toward flat. The order this resize needed went the other way, so nothing was sent. | Send the sentiment that matches the order (bullish to grow a long or shrink a short, bearish the opposite), or leave sentiment out. |
Missing or invalid signal pricemissing_or_invalid_price |
Entries and exits need a usable "price" field on the signal, for sizing math and as the limit price on limit orders. | Include a positive numeric "price" field in the signal, e.g. {{close}} in a TradingView alert. |
Nothing to do for this signalnothing_to_do |
The signal resolved to no steps at all. An edge case in how the action and current position combined. | No fix needed; this shouldn't happen often. |
Take-profit PnL unit not supportedtake_profit_pnl_unsupported |
This subscription's take-profit is set to the "PnL" unit, which needs live position monitoring rather than a fixed price. Broker-side bracket orders can't be built from it yet. | Switch the subscription's take-profit unit to Percent or Dollar. |
Stop-loss PnL unit not supportedstop_loss_pnl_unsupported |
This subscription's stop-loss is set to the "PnL" unit, which needs live position monitoring rather than a fixed price. Broker-side bracket orders can't be built from it yet. | Switch the subscription's stop-loss unit to Percent or Dollar. |
Stop Limit not supportedstop_loss_limit_unsupported |
This subscription's stop loss is "Stop Limit", but no limit price could be worked out: neither a "Stop limit offset" on the subscription nor a stopLoss.limitPrice in the signal. | Set the Stop limit offset on the subscription, send stopLoss.limitPrice, or switch the stop loss to Stop Market. |
Take-profit/stop-loss value missingbracket_value_missing |
A take-profit or stop-loss type is enabled on this subscription, but its numeric value is empty. | Set a value for the enabled take-profit/stop-loss field, or turn it back to None. |
Broker doesn't support bracket ordersbracket_unsupported_by_broker |
This subscription's take-profit/stop-loss configuration would need an attached bracket or one-triggers-other order, and the connected broker doesn't support that order class. | Turn off the take-profit/stop-loss on this subscription, or connect a broker that supports attached orders. |
Broker doesn't support stop entriesstop_entry_unsupported_by_broker |
This subscription's order type is Stop Market, which needs the broker's own systems to watch the price and trigger the order, and this connection's broker doesn't support that order type for this asset class in EZPZ Trader yet. | Switch this subscription's order type to Market or Limit, or connect a broker that supports native stop orders. |
Broker doesn't accept this time in forcetif_unsupported_by_broker |
This subscription's time in force isn't one the broker accepts for this asset class (for example Alpaca crypto only takes GTC or IOC), so nothing was sent to the broker. | Edit the subscription and set Entry/Exit time in force to Default or one of the choices the form offers. |
Broker has no live quotesquote_unsupported_by_broker |
The order needed a price, the signal didn't send one, and this broker doesn't give us live quotes to price it from. Nothing was sent. | Send a price in the alert ("price": "{{close}}" or a limitPrice / stopPrice), or use a Market order. |
Live quotes not yet verifiedquote_not_yet_verified |
The order needed a price, the signal didn't send one, and this broker's live quotes haven't been verified for real trading yet, so they aren't used to price orders. Nothing was sent. | Send a price in the alert ("price": "{{close}}" or a limitPrice / stopPrice), or use a Market order. |
No live quote right nowlive_quote_unavailable |
The order needed a price, the signal didn't send one, and the broker had no usable quote for this ticker at that moment (common before the open or for thinly traded symbols). Nothing was sent. | Send a price in the alert ("price": "{{close}}"), especially for pre- and post-market trades, or use a Market order during the regular session. |
Rejected by the brokerrejected_by_broker |
The broker itself rejected this order. The message shown is the broker's own response, not something EZPZ Trader generated. | Check the broker's message above for the specific reason (buying power, market hours, symbol restrictions, etc). |
Broker errorbroker_error |
Something went wrong talking to the broker (a network issue, an expired connection, or a broker-side outage) rather than the order itself being rejected. | If this keeps happening, try reconnecting the broker connection. |
Broker refused: too many requestsrate_limited_by_broker |
The broker turned the request away because too many requests reached this account at the same moment. The message says which step it was. An order refused this way was not placed, and it's never sent again automatically, so it can't be doubled. | Send the signal again if you still want the trade. Spread out signals that hit the same account at the same moment. |
Unexpected errorunexpected_error |
Something failed on our side that isn't one of the normal, expected outcomes for this subscription. Isolated from the rest of the signal's fan-out. The message says whether any order was sent: "nothing was placed" means no order reached your broker. If a reverse's closing order was already placed, it's kept and followed until it ends, and the new entry was not placed. | If an order may have been sent, check your broker's orders before sending another signal. If this keeps happening on the same subscription, it's worth reporting. |
Rejected by youmanually_rejected |
This subscription is set to Manual Submit. The order was fully resolved and held for review, and you rejected it before it reached the broker. | No fix needed. This was your call. Approve future signals from the Approvals page if you want them to go through. |
Exit signals ignoredexit_signals_ignored |
This subscription's "Ignore exit signals" setting is on, so exit signals (including the exit leg of a reverse or side flip) never close the position automatically. | Turn off "Ignore exit signals" if you want signals to close positions again, or close manually via Fire Panel/the dashboard. |
Side swap not allowedside_swap_not_allowed |
A signal arrived for the opposite side of an open position while this subscription's "Allow side swapping" setting was off, and older versions of EZPZ Trader ignored it. Opposite-side signals now always close the open position; with side swapping off they stop there instead of opening the other side. | No action needed. New signals close the position. Turn on "Allow side swapping" if opposite-side signals should also open the new direction. |
Entry bid-ask spread too wideentry_spread_too_wide |
The live bid-ask spread was wider than this subscription's configured entry spread filter, so the entry was skipped to avoid trading into a thin, volatile order book. | Widen the entry spread filter, or try again once the market is less volatile. |
Exit bid-ask spread too wideexit_spread_too_wide |
The live bid-ask spread was wider than this subscription's configured exit spread filter, so the exit was skipped to avoid trading into a thin, volatile order book. | Widen the exit spread filter, or try again once the market is less volatile. |
No stop-loss on record to moveno_stop_loss_to_move |
A breakeven signal arrived, but this position doesn't have a stop-loss on record to move: either none was ever configured, or nothing was found for this position. | No fix needed unless you expected a stop-loss to already be attached to this position. |
Exit order did not fill in timeexit_did_not_fill |
This signal needed to close an existing position before opening a new one on the opposite side. The closing order was placed but didn't fill within the subscription's exit order fill wait time, so the new opposite-side order was never placed. This avoids being on both sides of the position at once. The closing order was left open at your broker; if it fills later, the Journal records the close. | Check the closing order at your broker. Cancel it there if you no longer want it, or set "Cancel open exit order after delay" to have it cancelled automatically. If this happens often, the exit order type or wait time (60-300 seconds) may need adjusting for how liquid this ticker is. |
Order not confirmed by the brokerorder_not_confirmed |
We couldn't confirm the order was placed: the broker didn't answer in time (a timeout or a server error), answered without an order ID, or something failed on our side right after the order was sent. The order may or may not exist at the broker, so it was never sent again automatically. Where the broker lets us, we looked it up by our own order ID right away and once more a minute later. If it shows up, it's tracked from then on. If this was the closing order of a reverse or side flip, the new opposite-side order was never placed, so you can't end up on both sides of the position at once. | Check your broker's order list for this symbol before sending another signal for it. The order may be live. Cancel it there if you no longer want it. |
Failed to cancel open orders in timeopen_orders_not_canceled |
"Cancel open orders" was on for this trade, so every open order for this ticker on your broker account was cancelled first. The broker didn't confirm all of them were cancelled within the cancel open order wait time, so this order was never sent. Sending it behind an order that might still fill (for example a stop-loss) could close or open more than you meant to. | Check your broker's open orders for this ticker and cancel any that are left, then send the signal again. If your broker is often slow to confirm cancels, raise "Cancel open order wait time" (60-300 seconds). |
Cancelled before it was sentcancelled_before_open |
This order was waiting to be sent (for the market to open, or for another trade to finish) and was cancelled first. You cancelled it, the subscription, strategy or broker connection was switched off, or the account was deactivated. Nothing was sent to your broker. | If you still want this trade, switch the subscription back on (or ask support about the account) and send the signal again. |
Removed before it was sentremoved_before_sent |
This order was waiting (for your approval, or for the market to open) when its subscription, strategy or broker connection was removed or turned off, so it was cancelled. Nothing was sent to the broker. | Nothing to fix if you meant to remove it. Otherwise turn the subscription back on and send the signal again. |
Replaced by a newer signalreplaced_by_newer_signal |
This order was waiting to be sent when a newer signal for the same ticker on this subscription was queued. It arrived, or you approved it. Only the newest waiting signal is sent, so this one was dropped. | No fix needed. The newer signal is the one that runs. |
Option contract expiredoption_contract_expired |
The options contract in this signal has already expired, or it expires today and has stopped trading. It can't be traded anymore, so nothing was sent. | Send a contract with a later expiration date. |
Invalid options contract settingsinvalid_option_settings |
The contract settings for this signal (the subscription's Options Settings, or the values the signal sent to override them) couldn't be used, so no contract was picked. | Check the reason above. Signal values: optionType both/calls/puts, intrinsicValue itm/otm, expirationType zero-dte/daily/weekly/monthly/end-of-month/quarterly/leaps, strikesAway at most half of strikeCount. |
Broker can't pick a contract yetoption_selection_unsupported |
The signal sent a plain ticker to an options subscription, but automatic contract selection isn't available on this account's broker yet (it needs the broker's option chain), so nothing was sent. | Send the exact contract symbol as the ticker (e.g. SPY260925C00650000), or use an account on Alpaca, Tradier, Schwab or E*TRADE. |
No option contract matchedno_option_contract |
The option chain had no contract matching this subscription's Options Settings: no expiration in the chosen series on or after the Expiration date, or no strike that far from the price in the chosen direction. | Loosen the Options Settings (Expiration type Any, a nearer Expiration, fewer Strikes away or a larger Strike count). |
Action needs an exact contractoption_action_needs_contract |
Only buy, sell and exit can pick a contract from a plain ticker. Actions like add, reverse, cancel and breakeven work on one specific contract. | Send the exact contract symbol as the ticker for this action (e.g. SPY260925C00650000). |
Take profit / stop loss price below zerobracket_price_invalid |
The take profit or stop loss, worked out from the entry price and this subscription's value, came to $0 or less, for example a 100% stop loss on a long option. No broker accepts that, so nothing was sent. | Lower the Take profit / Stop loss value on the subscription (below 100% for a percent stop on a long position). |
Stop loss already crossedbracket_stop_crossed |
When the order was about to be sent, the stop loss was already on the wrong side of the market price (above it for a long, below it for a short), so the position would have been stopped out at once. Usually the signal's price was out of date, for example after waiting for the market to open. Nothing was sent. | Send a fresh price with the signal, or use a percent / $ stop loss so it's worked out from the current price. |
Signal value not readableinvalid_signal_override |
The alert sent a field this subscription can't read: for example a quantityType that isn't one of the exact values, an unknown orderType or timeInForce, or a price that isn't a number. Field values are case-sensitive, so "Dollar_Amount" isn't "dollar_amount". Nothing was sent, so a misread value can never become the wrong order size. | Correct the alert JSON. quantityType must be exactly fixed_quantity, dollar_amount, risk_dollar_amount, risk_percent, percent_of_equity or percent_of_position (or leave it out for a fixed quantity). |
Sides isolatedsides_isolated |
This account holds a position on the side this subscription doesn't trade (for example a short on a Long only subscription). With Sides isolated on, a signal never touches that position, so the trade was refused. | Close that position yourself, or turn off Sides isolated if this subscription should close it. |
P&L stop loss with risk sizingpnl_with_risk_sizing |
A P&L stop loss is worked out from the quantity, and risk-based sizing (Risk $ / Risk %) works the quantity out from the stop loss, so each would depend on the other. Nothing was sent. | Use a % or $ stop loss with risk sizing, or choose a different sizing method. |
Position changed before it was sentposition_changed |
This order was held for approval (or approved while the market was closed) and was built against the position you had at that moment. By the time it was due to go out, your position for this symbol was different (for example already closed) so sending it as held could have opened a position the other way (an old "sell" becoming a short) or doubled one. Nothing was sent to your broker. | Check your current position. If you still want this trade, send the signal again (or use Fire Panel) so it's sized against what you hold now. |
Free trial endedtrial_ended |
Your free trial has ended, so nothing is sent to your broker for this account: no entries, exits, cancels or stop moves. Orders already resting at your broker keep working there. | Upgrade to a paid plan, then turn your subscriptions back on. |
Stop exit can't be part of a reversestop_exit_on_reverse |
This signal closes the current position and opens the opposite one, and the closing order is a Stop order. A stop order rests at the broker until its price is reached, but a reverse only sends the new entry once the close has filled, so the reverse could never complete and the resting stop could close the position later on its own. Nothing was sent to the broker. | Set the subscription's Exit order type to Market or Limit, or close the position first (Exit) and then send the new entry. |
Broker doesn't support stop limit ordersstop_limit_entry_unsupported |
This subscription's order type is Stop Limit, and this connection's broker doesn't take a stop limit order for this asset class in EZPZ Trader yet. Nothing was sent to the broker. | Switch this subscription's order type to one the subscription form offers for this account (Market, Limit, or Stop Market where available). |
Take profit / stop loss can't ride on a stop entry herestop_entry_bracket_unsupported |
The entry is a Stop or Stop Limit order with a take profit or stop loss attached, and this broker hasn't been confirmed to accept attached legs on a stop entry. Rather than send the entry without the protection you asked for, nothing was sent. | Use a Market or Limit entry for a trade with take profit / stop loss, or turn them off for stop entries on this account. |
Take profit / stop loss between the stop and limit pricebracket_inside_stop_limit |
A Stop Limit entry can fill anywhere between its stop price and its limit price. A take profit or stop loss inside that range could be on the wrong side of the fill and close the trade the moment it opens, so nothing was sent. | Put the stop loss beyond the stop price (below it for a buy, above it for a sell), or narrow the gap between the stop and limit prices. |
Stop orders need an exact options contractoption_stop_needs_contract |
For a contract picked from a plain ticker, the only price available is the contract's bid/ask midpoint, so a Stop or Stop Limit order would trigger the moment it was placed. Nothing was sent. | Send the exact contract symbol as the ticker with stopPrice/limitPrice, or use a Market or Limit order type on this subscription. |
Crypto can't be shortedcrypto_short_unsupported |
This sell would have opened a short crypto position. The crypto brokers EZPZ Trader connects to trade spot crypto, which can't be sold short, so nothing was sent. A sell while you hold the coin still closes it as usual. | Set the subscription's Allowed sides to Long only, and send sells only to close a position you hold. |
Live trading is off for this strategylive_trading_disabled |
This strategy has Allow live trading switched off, and this subscription is on a live broker account, so nothing was sent to your broker: no entries, exits, cancels or stop moves. Paper accounts on this strategy still trade. | Edit the strategy and switch Allow live trading on, or point this subscription at a paper account. |
Position changed before exitposition_changed_before_exit |
"Cancel open orders" was on, so your open orders for this ticker were cancelled first. While we waited for the broker to confirm, your position changed to the other side (for example a stop loss filled and something else opened), so the planned exit would no longer close it. It was not sent. | Check your position and open orders at your broker. The cancelled orders may have left it without a stop loss or take profit. Send the signal again if you still want this trade. |
Position appeared before entryposition_appeared_before_entry |
This entry was planned from a flat position. While your open orders were being cancelled, an order filled and you now hold this side already. "Allow add to position" is off, so the new entry was not sent. It would have added to the position. | Check your position at your broker. Turn on "Allow add to position" if you want entries to add in this case. |
Position changed before entryposition_changed_before_entry |
This entry was planned from a flat position. While your open orders were being cancelled, a position on the other side appeared, so the new entry was not sent. | Check your position and open orders at your broker, then send the signal again if you still want this trade. |
Position flipped before entryposition_flipped_before_entry |
This order was planned to add to your open position. While your open orders were being cancelled, the position flipped to the other side, so adding to it was no longer the trade you sent. It was not sent. | Check your position and open orders at your broker, then send the signal again if you still want this trade. |
Exit quantity rounds to zeroexit_quantity_zero |
The signal asked to close a percent of your position, but that share of what you hold rounds down to zero whole units, so nothing was sent. For example, 50% of 1 share is 0.5, which can't be sold without fractional shares. | Send a larger percent, a fixed quantity, or no quantity to close the whole position. |
Signal expiredsignal_expired |
The signal's expiresAt time passed before it could be traded (for example while it waited for the market to open), so it was no longer eligible and nothing was sent. | Send a later expiresAt, or leave it out if the signal should not expire. |
Max strategy positionsmax_strategy_positions |
This broker account has "Max strategy positions" set. It already holds that many different tickers, so a new entry into a ticker it doesn't hold was not sent. Adds to, and exits from, tickers you already hold still go. | Close a position first, or raise or clear "Max strategy positions" in this broker connection's settings. |
Max quantity per tickermax_quantity_per_ticker |
This broker account has a ticker quantity limit for this underlying. Filling this order would have taken what you hold past that maximum (long and short both count), so it was not sent. With "Reduce to max" an order is trimmed instead, unless it's sized in dollars or there's no room left. | Adjust or remove the limit under Risk limits in this broker connection's settings. |
↑ ↓ to move · Enter to open · Esc to close