Two actions trade nothing at all. breakeven and update move the stop — and the target, if you send one — that rests at your broker behind a position that is already open, normally the stop and target Tradeus sent with the entry. They change the level of an order that is already there. They never place a stop, never cancel one, and never open, size or close a position. This is being proven on Tradovate and switched on per account, and not on any other broker yet (see Which brokers, below): until it is switched on for your account, every move is answered not_supported and nothing is sent.
Which stop. The one stop working behind the position is the one moved — normally the stop Tradeus placed with the entry, but a single stop you placed by hand is moved just the same. Tradeus's record of which stops it placed does not survive a restart of the server, so it cannot be what decides; a stop resting on the other side of the market, waiting to enter a trade, is not behind the position and is never touched. With several stops behind the position, the move is refused — unless exactly one of them is the stop Tradeus's own entry placed, which is then the one moved, for as long as that record is there.
breakeven once the trade is 20 points in profit; a stop 20 points away, at +40. Send price with it — your market price at that moment.{
"passphrase": "YOUR-PASSPHRASE",
"ticker": "MNQ1!",
"action": "breakeven",
"be_offset": 1,
"account": "APEX-1234",
"price": 19862.25,
"id": "t8812-be"
}{
"passphrase": "YOUR-PASSPHRASE",
"ticker": "MNQ1!",
"action": "update",
"sl": 19850.25,
"tp": 19920,
"account": "APEX-1234",
"price": 19871.5,
"id": "t8812-trail1"
}The fields
breakeven moves the stop to each account's own average entry, plus be_offset. update moves the stop to sl and the target to tp — either or both; with neither it is refused, naming both fields. update with "sl": "entry" is the same as breakeven.update: a price, or the word entry. entry on a buy or sell is refused — an order that opens a position has no entry yet. TradersPost's stopLoss.stopPrice is read too, with the same warnings as on an entry. A price between two ticks goes onto the instrument's tick grid on the tighter side — up on a long, down on a short — and the answer names the level that was sent.takeProfit.limitPrice. A price between two ticks goes onto the grid away from the market — up on a long, down on a short — so rounding can never bring it to the price, where a limit fills at once.breakeven or "sl": "entry". On a long the stop goes to entry + offset, on a short to entry − offset, rounded to the instrument's tick on the side that keeps it at or past that level: up on a long, down on a short. TradersPost's breakevenOffset is refused rather than read: TradersPost's own pages give it in dollars on one and in ticks on another, and a stop placed in the wrong unit is a stop in the wrong place.price is refused.account as the entry. Without it, the stop moves on every subscribed account that holds the instrument — see The TradingView alert.long or short. An account holding the other side is skipped. flat is refused — to close, send exit.id, the alert's price is part of what makes it one move: a breakeven names no level, so two breakevens for two trades a minute apart are told apart by their prices. One id per trade is still the surer way.Each account's own entry
entry is each account's average entry as its broker reports it — not the alert's price, and not your fill. Two accounts that filled two ticks apart get two different breakevens, each at or past its own. On a copy group the same holds for every follower: breakeven moves each follower to its own entry. An absolute sl or tp moves each follower to exactly the leader's level — and only where the follower names the instrument the same way the leader does, because a level is a price on one instrument. A follower whose broker cannot move a stop by alert is named in the answer and left as it is.
What it will not do
- Widen a stop. A move only tightens: on a long the new stop must be above the one resting, on a short below it. A looser one is refused, naming both levels. If you really mean to widen, do it by hand in your broker's platform.
- Place a stop. With no stop resting behind the position, the move is refused. Nothing is placed in its stead.
- Move a trailing stop or a stop-limit — or a stop whose status is not Working, because a change to it is already under way. Each is refused with the broker's own name for it.
- Pick one of several stops. If more than one stop rests behind the position, the move is refused and the levels are listed — unless exactly one of them is the stop Tradeus's own entry placed, which is then the one moved. A single stop is moved whoever placed it (see Which stop, above).
- Act on a flat account. Skipped, nothing sent. That is the usual answer when the stop filled before the move arrived.
- Run late. Older than the age limit, it is skipped. A position opened in an earlier session is refused a breakeven too: what the broker's average means for it is not proven.
- Park for confirmation. On a subscription that confirms orders by hand, a move is held with a reason, never parked: by the time anyone confirmed it, it would be stale.
- Race the account lock. While the lock is closing the account, the move is skipped. A locked account that is not being closed still takes a move — it can only take risk off — and outside your trading window a move follows the exits setting.
How you know
Every account row in the answer carries a status and a code — the word to branch on, listed below; the reason is the same thing as a sentence for a person, and its wording can change. A move is there only where a leg was looked at or sent: the stop's from and to, its order id, confirmed, and the entry a breakeven was worked out from. A row that never reached the account's stop — not supported, stale, flat, superseded, aimed at another account, turned down by Tradeus itself — has none, so read code first and move only where it is there. "status": "ok" means the broker read back the new level — or that the stop was already there and nothing was sent, which the reason says. "confirmed": false means the change was sent and not seen to land; the row is an error, and Tradeus reads the stop again a few seconds later and writes the final word to your log. A refusal by the BROKER carries the broker's own words and where the stop is now; a refusal Tradeus decided before asking the broker — a widening, a stop past the price — names both levels in the reason. A stop that filled while the move was on its way, or was cancelled because the target filled, is not a refusal to worry about: the position is read again, and a flat account is answered flat_after. Only where the position is still open with no stop working behind it does the log say that position is unprotected, and the operator is alerted. Sending the same breakeven again is always safe: a stop already at its level is answered as already there. A move whose answer was an error or rate_limited is routed again when you resend it, even inside the 60-second duplicate window; one that landed, or is still being sent, is answered as a duplicate.
{
"ok": true,
"accounts": [
{ "accountId": "70276688", "role": "subscriber", "status": "ok",
"code": "moved", "reason": "stop moved 19818 → 19842.5 (breakeven: entry 19842.37 +0)",
"move": { "stop": { "from": 19818, "to": 19842.5, "orderId": "687826985974", "confirmed": true }, "entry": 19842.37 } },
{ "accountId": "70276695", "role": "subscriber", "status": "skipped",
"code": "flat", "reason": "flat — no MNQZ2026 position to move a stop behind" }
]
}moved — the broker read back the new level. already_there — the stop or target already rests at that level; nothing was sent.unconfirmed — sent and not seen to land; the log has the second read's verdict. refused — the broker refused it; the reason has its words and where the stop is now.flat — no position to move a stop behind. flat_after — the stop filled, or the target filled and took it along, while the move was on its way: the account is flat and nothing is left to protect.not_supported — not switched on for this account or broker. other_account / account_unmatched — the alert's account names another account, or none of them. stale — older than the age limit. outside_window — outside the trading window, with exits held to it. manual_not_parked — a subscription that confirms by hand. lock_close_in_flight — the lock is closing the account. superseded — a newer move for the same stop or target arrived while it waited. invalid_move — a move without a level reached the account.market_mismatch — a follower trading another market. different_symbol — a follower naming the instrument differently, for an absolute level. symbol_lookup_failed / symbol_unresolved — the account's name for the instrument could not be looked up, or there is none. read_failed — the position and its stop could not be read. position_mismatch — the account holds the other side than position says.no_working_stop / no_working_target — none to move; none is ever placed. several_stops / several_targets — more than one, none plainly Tradeus's. unmovable_type — a trailing stop, a stop-limit or another type. change_in_flight — a change to it is already under way. level_unknown — the broker reports no level for it.entry_unknown — no average entry reported. carried_over — opened in an earlier session. tick_unknown — the instrument's tick is not known.would_widen — the stop would loosen. wrong_side_of_price — the stop is at or past your price, or no price came. crosses_target — stop and target would cross. target_wrong_side — the target is at or behind your price.modify_ceiling — the login's hourly ceiling for moves is reached. rate_limited — the connection's order limiter is.Your log has the same under Risk: stop moved · … with both levels, stop not moved · … with the reason, and stop move refused · … with the broker's words.