Skip to main content

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.

namestringrequired

Name shown in the cabinet.

Example: My Signal Bot
aboutstring | nullnullable

Optional description shown with the bot.

timestringrequired

Signal timeframe, for example 5M.

Example: 5M
exchanges 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

  • Array [
  • codestringrequired

    API profile code.

    multipliernumber

    Multiplier for this profile's order amount.

    Possible values: >= 0.1 and <= 125

    Default value: 1
  • ]
  • pairsCodesstring[]required

    Pairs traded on this exchange.

    Possible values: >= 1

    leveragenumber

    Leverage for this exchange's orders.

    Default value: 1
    leverageBystring

    cost multiplies order amount by leverage; value keeps the amount multiplier at 1 while setting position leverage.

    Possible values: [value, cost]

    Default value: value
    multipleEntriesbooleanrequired

    Allow repeated same-side entries for a pair; when false, an existing same-side position blocks another entry.

    dynamicPairbooleanrequired

    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.

    swingTradebooleanrequired

    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.

    maxOpenPositionsnumber | nullnullable

    Maximum positions this bot may keep open at once.

    alertSettingsTypestringrequired

    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]

    signalSourcestringrequired

    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.

    Example: trading_view
    simulateSignalstringdeprecated

    Default side used by the cabinet's signal simulation control.

    Possible values: [long, short, wait]

    Default value: wait
    maxCapitalUsdCentsinteger | nullnullable

    Maximum capital in US dollar cents.

    Possible values: >= 1

    amountPerTradenumber

    Entry order amount for message alerts, in amountPerTradeType units.

    Possible values: >= 0

    amountPerTradeTypestring

    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]

    orderTypestring

    Entry order type.

    Possible values: [market, limit, stop_limit, best_bid_ask_limit]

    orderTypeSettings objectnull

    Settings for best_bid_ask_limit entry orders.

    postOnlyboolean

    Place the limit order without taking existing liquidity.

    maxAttemptsinteger

    Maximum attempts to place a conditional limit order.

    Possible values: >= 1 and <= 5

    afterMaxAttemptsReachedstring

    Cancel or use a market order after the last attempt.

    Possible values: [cancel, market]

    maxChaseDistancenumber | nullnullable

    Maximum price drift to chase for a limit order, as a fraction (5% = 0.05).

    Possible values: >= 0.0001 and <= 0.05

    limitOrderPriceTypestring | nullnullable

    Ticker price used as the limit-order reference: bid, ask or last.

    Possible values: [bid, ask, last, null]

    limitOrderPriceDeviationnumber | nullnullable

    Distance from the reference price for a limit entry order.

    Possible values: > 0

    limitOrderPriceDeviationTypestring | nullnullable

    Unit of limitOrderPriceDeviation: base amount or fraction.

    Possible values: [base, percents, null]

    timeToLiveinteger | nullnullable

    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.

  • Array [
  • pricenumber | nullnullable

    Fixed target price when a price is used.

    priceDeviationnumber | nullnullable

    Target price change from the reference price, as a fraction.

    portfolionumberrequired

    Share of the position to close at this target, as a fraction.

    Possible values: > 0

  • ]
  • takeProfitBaseOnstring

    Price used as the base for take-profit targets.

    Possible values: [entry_order, average_price]

    Default value: average_price
    takeProfitOrderTypestring

    Order type used to take profit.

    Possible values: [market, best_bid_ask_limit]

    takeProfitOrderTypeSettings objectnull

    Settings for best_bid_ask_limit take-profit orders.

    postOnlyboolean

    Place the take-profit limit order without taking existing liquidity.

    stopLossnumber | nullnullable

    Price loss that triggers stop loss, as a fraction (2% = 0.02).

    Possible values: > 0

    stopLossBaseOnstring

    Price used as the base for stop loss.

    Possible values: [entry_order, average_price]

    Default value: entry_order
    stopLossOrderTypestring

    Order type used to execute stop loss.

    Possible values: [market, best_bid_ask_limit]

    stopLossOrderTypeSettings objectnull

    Settings for best_bid_ask_limit stop-loss orders.

    postOnlyboolean

    Place the stop-loss limit order without taking existing liquidity.

    stopLossMovenumber | nullnullable

    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

    stopLossMoveExecutenumber | nullnullable

    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.

    trailingStopActivationnumber | nullnullable

    Favorable price move that activates trailing stop, as a fraction (2% = 0.02).

    Possible values: > 0

    trailingStopExecutenumber | nullnullable

    Trailing-stop price distance after activation, as a fraction (2% = 0.02).

    Possible values: > 0

    reduceOnlyboolean

    Restrict orders to reducing the position; required for base_json and message alerts.

    keepPositionOpenboolean

    Keep monitoring a position without take profit or stop loss; required for base_json and message alerts.

    placeConditionalOrdersOnExchangeboolean

    Place conditional exit orders on the exchange; required for base_json and message alerts.

    extraOrderCountinteger | nullnullable

    Maximum entry orders including the initial entry; 5 permits the entry and four extra orders.

    Possible values: >= 1 and <= 30

    extraOrderDeviationnumber | nullnullable

    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

    extraOrderVolumeMultipliernumber | nullnullable

    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

    extraOrderDeviationMultipliernumber | nullnullable

    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

    extraOrderCostAveragingstring | nullnullable

    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]

    extraOrderTypestring | nullnullable

    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]

    applyDcaForFirstSafetyOrderboolean

    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.

    Default value: false
    property name*any

    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.

    Example: {"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"}



    UpsertSignalBot — REST API
    {
    "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"
    }