UpsertSignalBot (REST)
Complete Signal Bot settings. Edit uses the same full upsert payload as create. Entry, exit and DCA fields apply to base_json and message alerts; message alerts also use amountPerTrade and amountPerTradeType. advanced_json uses only the common bot fields.
Name shown in the cabinet.
My Signal BotOptional description shown with the bot.
Signal timeframe, for example 5M.
5Mexchanges objectrequired
Map keyed by exchange code. Profile codes and pair codes must belong to the authenticated trader and exchange.
property name* object
Settings for one exchange.
profiles object[]required
API profiles that receive this bot's signals.
Possible values: >= 1
API profile code.
Multiplier for this profile's order amount.
Possible values: >= 0.1 and <= 125
1Pairs traded on this exchange.
Possible values: >= 1
Leverage for this exchange's orders.
1cost multiplies order amount by leverage; value keeps the amount multiplier at 1 while setting position leverage.
Possible values: [value, cost]
valueAllow repeated same-side entries for a pair; when false, an existing same-side position blocks another entry.
Use the pair named in each alert, but only if that pair is configured on this single-exchange bot. Alerts for other pairs are ignored.
An opposite Enter Long or Enter Short alert can close or reverse the position; ordinary Exit Long and Exit Short alerts are disabled in this mode.
Maximum positions this bot may keep open at once.
Alert body format: message sends a plain-text action code and uses the bot's saved amount; base_json sends JSON with code, required amountPerTrade and amountPerTradeType for entry; advanced_json sends JSON with code and trading settings. GET /open_api/signal_bots/{code}/alerts returns a webhook URL and matching body examples for this bot. trading_view_strategy uses its strategy JSON template.
Possible values: [message, base_json, advanced_json]
Webhook source in the URL /bot/{signalSource}. Default brand: trading_view, trading_view_strategy, take_profit_com, runbot, custom, other; 3Commas: trading_view, trading_view_strategy, custom, other. GET /open_api/signal_bots/{code}/alerts returns the full URL and action codes. Post the selected alert body to that external URL; custom requires an approved source IP. The webhook accepts a signal asynchronously; HTTP success is not an order fill.
trading_viewDefault side used by the cabinet's signal simulation control.
Possible values: [long, short, wait]
waitMaximum capital in US dollar cents.
Possible values: >= 1
Entry order amount for message alerts, in amountPerTradeType units.
Possible values: >= 0
Unit of the message-alert entry amount. Multiple pairs allow $ or percents; single-pair units depend on the market. Legacy ref is the conventional base asset (BTC in BTC/USDT); base is the conventional quote asset (USDT).
Possible values: [base, ref, contracts, $, percents]
Entry order type.
Possible values: [market, limit, stop_limit, best_bid_ask_limit]
orderTypeSettings objectnull
Settings for best_bid_ask_limit entry orders.
Place the limit order without taking existing liquidity.
Maximum attempts to place a conditional limit order.
Possible values: >= 1 and <= 5
Cancel or use a market order after the last attempt.
Possible values: [cancel, market]
Maximum price drift to chase for a limit order, as a fraction (5% = 0.05).
Possible values: >= 0.0001 and <= 0.05
Ticker price used as the limit-order reference: bid, ask or last.
Possible values: [bid, ask, last, null]
Distance from the reference price for a limit entry order.
Possible values: > 0
Unit of limitOrderPriceDeviation: base amount or fraction.
Possible values: [base, percents, null]
Order lifetime in minutes.
Possible values: >= 5 and <= 20160
takeProfits object[]
Position portions to close at target prices for base_json and message alerts; portfolio and priceDeviation are fractions.
Fixed target price when a price is used.
Target price change from the reference price, as a fraction.
Share of the position to close at this target, as a fraction.
Possible values: > 0
Price used as the base for take-profit targets.
Possible values: [entry_order, average_price]
average_priceOrder type used to take profit.
Possible values: [market, best_bid_ask_limit]
takeProfitOrderTypeSettings objectnull
Settings for best_bid_ask_limit take-profit orders.
Place the take-profit limit order without taking existing liquidity.
Price loss that triggers stop loss, as a fraction (2% = 0.02).
Possible values: > 0
Price used as the base for stop loss.
Possible values: [entry_order, average_price]
entry_orderOrder type used to execute stop loss.
Possible values: [market, best_bid_ask_limit]
stopLossOrderTypeSettings objectnull
Settings for best_bid_ask_limit stop-loss orders.
Place the stop-loss limit order without taking existing liquidity.
Favorable price move from entry that triggers a one-time stop-loss update when monitored: Long rises, Short falls. Send a fraction (2% = 0.02).
Possible values: > 0
New stop-loss price relative to entry: Long adds this fraction, Short subtracts it. If omitted, move to current average entry price; when set, it must be below stopLossMove.
Favorable price move that activates trailing stop, as a fraction (2% = 0.02).
Possible values: > 0
Trailing-stop price distance after activation, as a fraction (2% = 0.02).
Possible values: > 0
Restrict orders to reducing the position; required for base_json and message alerts.
Keep monitoring a position without take profit or stop loss; required for base_json and message alerts.
Place conditional exit orders on the exchange; required for base_json and message alerts.
Maximum entry orders including the initial entry; 5 permits the entry and four extra orders.
Possible values: >= 1 and <= 30
Price spacing before an extra order, as a fraction (0.8% = 0.008). Long orders follow falling prices; Short orders follow rising prices.
Possible values: >= 0.001 and <= 0.2
Scales successive extra-order sizes. The first extra order receives it in Order Averaging mode; Position Averaging starts with the initial size.
Possible values: >= 0.1 and <= 10
Scales successive extra-order price spacing. Order Averaging applies it to the first extra order; Position Averaging starts with unmultiplied spacing.
Possible values: >= 0.1 and <= 10
Conventional asset used as the amount reference: base keeps the traded-asset quantity (BTC in BTC/USDT); quote keeps its cost (USDT). Exchange rules round final orders.
Possible values: [base, quote, null]
market waits until price crosses the calculated level, then submits at the current price; limit places a resting order at that level, including the first extra order immediately after entry.
Possible values: [market, limit, null]
UI DCA mode: true = Order Averaging, applying size and spacing multipliers to the first extra order; false = Position Averaging, starting that order with the initial size and unmultiplied spacing.
falseComplete Signal Bot settings. Edit uses the same full upsert payload as create. Entry, exit and DCA fields apply to base_json and message alerts; message alerts also use amountPerTrade and amountPerTradeType. advanced_json uses only the common bot fields.
{"name":"My Signal Bot","time":"5M","exchanges":{"BINANCE":{"profiles":[{"code":"my-profile-code","multiplier":1}],"pairsCodes":["BTCUSDT"],"leverage":1,"leverageBy":"value"}},"multipleEntries":false,"dynamicPair":false,"swingTrade":false,"alertSettingsType":"advanced_json","signalSource":"trading_view"}{
"name": "My Signal Bot",
"time": "5M",
"exchanges": {
"BINANCE": {
"profiles": [
{
"code": "my-profile-code",
"multiplier": 1
}
],
"pairsCodes": [
"BTCUSDT"
],
"leverage": 1,
"leverageBy": "value"
}
},
"multipleEntries": false,
"dynamicPair": false,
"swingTrade": false,
"alertSettingsType": "advanced_json",
"signalSource": "trading_view"
}