BLACK FRIDAY IS BACKNov 24 to 30. Join the list and get in a day early.Join the list

Run several strategies on one exchange account

Autoview · Guide · Updated October 25, 2026

You have a trend strategy and a mean reversion strategy, and both send alerts to the same exchange account. Autoview runs each alert as a command on that account. It does not know which strategy sent it, and the exchange does not either. So the question is simple: when the two strategies trade the same symbol, which commands from one can touch the other?

This guide comes from the Autoview integrations code that runs on our servers today. We read the code for it and did not re-run it live, so test your own alerts with d=1 first.

What the two strategies share

On one account and one symbol, the exchange keeps one position (or one per side, if the account is in hedge mode) and one list of resting orders. Both strategies add to that position and that list. Nothing on the exchange records that strategy A opened 2 contracts and strategy B opened 3. It sees a position of 5.

If your strategies trade different symbols, none of this matters much. Each symbol has its own position and its own orders, and the commands below stay inside the symbol you name with s=.

Commands that reach across strategies

CommandWhat it does on a shared symbol
c=positionCloses the position on that symbol and side, whoever opened it. q=50% closes half of the whole position, not half of one strategy's part. See partial close by exchange.
c=orderCancels every resting order on that symbol that matches the rest of the line, such as b=. That includes the other strategy's stops and limits, unless you scope it with id= (next section).
Flat alert (b=flat)Turns into c=all. On Tradovate that liquidates the symbol's position on the account. On every other exchange c=all is not supported, so the alert stops with an unsupported feature error and closes nothing.
ReversalA close followed by a new entry closes the shared position, so the other strategy's part goes with it. See close or reverse by exchange.

The flat case matters most. A TradingView strategy that goes flat sends a flat alert. On Tradovate, strategy A going flat closes strategy B's contracts on the same symbol too. On other exchanges strategy A's flat alert does nothing, so its own position stays open unless you send an explicit c=position instead.

Keep resting orders apart with id=

id= attaches your own identifier to an order. Send c=order with the same id= and only resting orders carrying exactly that identifier are cancelled. The match is on the whole value, not the start of it, so c=order id=trend does not cancel an order tagged trend-entry.

One id= value, one open order

On most of the exchanges below, Autoview sends your id= value to the exchange as its client order ID and adds nothing unique to it. Binance, Kraken and OANDA say in their API docs that a client order ID has to be unique among your open orders. So if strategy A rests a limit entry with id=trend and then sends a second order with id=trend while the first is still open, the exchange docs say the second one is rejected. That second order could be your stop. A d=1 test will not show this, because the reject would come from the exchange, not from Autoview.

Give every order its own id= instead, and start each one with the strategy name so you can tell them apart:

b=long q=10% t=limit fp=64000 id=trend-entry
b=long q=10% t=limit fp=63000 id=trend-add
c=order id=trend-entry
c=order id=trend-add

To clear all of strategy A's resting orders, send one c=order line for each of its ids. Keep ids short and stick to letters, digits and dashes.

We read the id= cancel filter and how the id is placed for these exchanges:

  • Binance spot, Binance Futures and Binance Delivery. The id goes out as the client order ID behind a fixed Autoview prefix, with nothing unique added. Binance's spot and Futures docs say it must be unique among open orders. Delivery runs the same code; we have not checked its docs.
  • Bitget spot and Bitget futures. Autoview adds a timestamp to each id before sending it, so one value can sit on several open orders, and c=order with that id= still finds all of them. This is the only exchange in this list where one id per strategy works.
  • Kraken. The id goes out as Kraken's cl_ord_id, which Kraken's docs say must be unique among your open orders and can be up to 18 characters. A number-only id is also sent as userref, and Kraken's docs say the two cannot be sent together, so use an id with letters in it. See the Kraken command reference.
  • Kraken Futures. The id goes out as the client order ID with nothing added. We have not checked whether Kraken Futures accepts the same value on two open orders, so treat that as untested and use a different id per order.
  • KuCoin spot and KuCoin Futures. The id goes out as KuCoin's client order ID with nothing added. KuCoin's docs call it a unique identifier but do not say what happens on a repeat. Untested, so use a different id per order.
  • OANDA, where it is stored as the order's client extension id. OANDA's list of reject reasons includes a client order ID that is already in use. See the OANDA command reference.
  • Tradovate reads it too, but the code carries a note that the identifier may not come back in the open order list. Treat Tradovate as untested and check with d=1 and your order history.

This part comes from the code and the exchanges' API docs. We have not sent a repeated id to any exchange live.

On many other exchanges, including Bybit, OKX, Coinbase Advanced and TradeStation, Autoview ignores id= on a cancel, so c=order cancels every matching order on the symbol. The full list is in cancel orders by id=, by exchange.

id= does not help with positions. There is no way to close only one strategy's share of a position on a shared symbol.

Keep everything apart with separate accounts

The clean fix is one account per strategy. Then each strategy has its own position, its own orders and its own balance, and nothing from one can reach the other.

  • One linked account per strategy. On the webhook platform the linked account decides where an alert goes, so point each strategy's webhook at its own linked account. The command reference covers how alerts pick an account.
  • Sub-accounts at the exchange. Most crypto exchanges let you create sub-accounts with their own API keys. Connect each sub-account to Autoview as its own account.
  • aid= on brokers with several accounts under one login. On Capital.com, Charles Schwab, TradeStation and Tradovate, aid= picks the account by its name. If the name does not match, the alert stops with an "Account Name not found" error that lists the names Autoview can see.

A quick checklist

  • Two strategies, same symbol, same account: expect shared positions and shared orders.
  • Give every order its own id= that starts with the strategy name, and cancel with c=order and that exact id=. Only Bitget lets one value sit on several open orders.
  • Do not rely on a flat alert. Close with c=position and the side you hold.
  • If one strategy must never touch the other, give it its own account or sub-account.

Test it once before you rely on it

Add d=1 to each alert. Autoview writes what it would send to your log and places nothing. Fire strategy A's close and cancel lines while strategy B has orders resting, and check in the log that only A's orders are picked. The log guide shows where to look. If you see repeated orders rather than crossed ones, see duplicate or repeated orders.

Open the command reference