API documentation

CHANNEL — channel trading bot

CHANNEL trades bounces inside horizontal price zones: buy at the bottom of a zone, sell at its top. One bot type, three flavors — the terminal calls them GRID / LEVELS / SCALE; pick the one that matches how you think:

Flavor (terminal name) strategy channels field You define
LEVELS — individual level work horizontal_fixed array of channels Each zone by hand, in absolute prices
GRID — an order grid for a range/sideways market horizontal_fixed one object {name: "horizontal_grid", …} Just count + min/max — zones are generated evenly
SCALE — a Channel × Fibonacci hybrid horizontal_scaled array of channels + scale Zones as 0…1 fractions of a price window — a reusable template

Prerequisites: the bot lifecycle and the shared config blocks. Required fields for every flavor: type, symbol, exchange, deposit, strategy, channels.

LEVELS — hand-picked zones

You know your support/resistance map; each channel is a zone with absolute buy/sell prices and its own share of the deposit. Verified config — four stacked zones on SOL with two stop-loss rules (a disabled breakeven blank plus a hard price stop at 41.45):

{
  "type": "CHANNEL",
  "settings": {
    "type": "CHANNEL",
    "symbol": { "base": "SOL", "quote": "USDT" },
    "ticker": "SOLUSDT",
    "name": "Levels: 4, 60.03 → 126.72",
    "exchange": "binance-futures",
    "deposit": { "value": "100", "asset": "USDT", "allocate": "auto" },
    "noticeLevel": 1,
    "timeout": { "type": "ttl", "value": 604800000 },
    "positionSide": "LONG",
    "marginType": "CROSSED",
    "strategy": "horizontal_fixed",
    "channels": [
      { "name": "L1", "buy": 115.38, "sell": 126.72, "buyPercent": 0.83, "depositePercent": "25.0" },
      { "name": "L2", "buy": 104.05, "sell": 115.38, "buyPercent": 0.66, "depositePercent": "25.0" },
      { "name": "L3", "buy": 82.04,  "sell": 104.05, "buyPercent": 0.33, "depositePercent": "25.0" },
      { "name": "L4", "buy": 60.03,  "sell": 82.04,  "buyPercent": 0,    "depositePercent": "25.0" }
    ],
    "green": 1,
    "mergeChannels": false,
    "range": [ { "type": "price", "max": 121.05 } ],
    "stop": [
      { "strategy": "breakeven", "complete": true, "disabled": true,
        "trigger": { "type": "kline" }, "order": { "type": "MARKET" } },
      { "strategy": "price", "disabled": false, "complete": true,
        "trigger": { "type": "kline", "value": 41.45, "edge": "close",
                     "closed": true, "timeFrame": 60000 },
        "order": { "type": "MARKET" } }
    ]
  }
}

GRID — auto-generated zones

Don’t want to hand-place levels? Give the boundaries and a count — the bot builds evenly spaced zones itself. Note that channels here is a single object, not an array:

{
  "type": "CHANNEL",
  "settings": {
    "type": "CHANNEL",
    "symbol": { "base": "SOL", "quote": "USDT" },
    "ticker": "SOLUSDT",
    "name": "Grid: 10, 20.28 → 56.65",
    "exchange": "binance-futures",
    "deposit": { "value": "222", "asset": "USDT", "allocate": "no_reserve" },
    "noticeLevel": 1,
    "timeout": { "type": "ttl", "value": 604800000 },
    "positionSide": "LONG",
    "marginType": "CROSSED",
    "strategy": "horizontal_fixed",
    "channels": { "name": "horizontal_grid", "count": 10, "min": 20.28, "max": 56.65, "percent": false },
    "mergeChannels": false,
    "profitAsset": "USDT",
    "stop": [
      { "strategy": "breakeven", "complete": true, "disabled": true,
        "trigger": { "type": "kline" }, "order": { "type": "MARKET" } }
    ]
  }
}

Grid options: percent: true switches from fixed price steps to percentage steps; martingale multiplies each next level’s deposit share by the given factor — in the terminal this is the “geometric (Martingale) distribution”, and percent: true is the “fixed percentage step” between grid levels.

SCALE — a template over a price window

Channels are defined as fractions 0…1 of a price window (scale), so the same channel layout can be reused on any range or symbol. The bot maps each fraction to an absolute price:

price = scale.min + position × (scale.max − scale.min)
{
  "type": "CHANNEL",
  "settings": {
    "type": "CHANNEL",
    "symbol": { "base": "SOL", "quote": "USDT" },
    "ticker": "SOLUSDT",
    "name": "Scale: 4, 23.33 → 64.87",
    "exchange": "binance-futures",
    "deposit": { "value": "300", "asset": "USDT", "allocate": "no_reserve" },
    "noticeLevel": 1,
    "timeout": { "type": "ttl", "value": 604800000 },
    "positionSide": "LONG",
    "marginType": "CROSSED",
    "strategy": "horizontal_scaled",
    "scale": { "min": 23.33, "max": 64.87 },
    "channels": [
      { "name": "S1", "buy": 0.8, "sell": 1,   "depositePercent": "18.6", "isActive": true },
      { "name": "S2", "buy": 0.6, "sell": 0.8, "depositePercent": "22.4", "isActive": true },
      { "name": "S3", "buy": 0.4, "sell": 0.6, "depositePercent": "26.8", "isActive": true },
      { "name": "S4", "buy": 0.2, "sell": 0.4, "depositePercent": "32.2", "isActive": true }
    ],
    "mergeChannels": false,
    "stop": [
      { "strategy": "breakeven", "complete": true, "disabled": true,
        "trigger": { "type": "kline" }, "order": { "type": "MARKET" } }
    ]
  }
}

Field reference

HorizontalChannel (LEVELS & SCALE):

Field Type Meaning
name string Zone label — L1, L2… (LEVELS) / S1, S2… (SCALE)
depositePercent string Share of the deposit; sum across channels should equal 100
buy ✳ / sell number | string horizontal_fixed: absolute prices. horizontal_scaled: relative positions 0…1 within scale
buyPercent number 0…1 Where inside the zone to buy: 0 = zone bottom, 1 = zone top
isActive boolean (default true) Set false to park a zone without deleting it

HorizontalGrid (GRID): name: "horizontal_grid" ✳ · count ✳ · min ✳ · max ✳ · percent (percentage steps) · martingale (per-level deposit multiplier).

ChannelScale (SCALE): min ✳, max ✳ — the price window; required when strategy: "horizontal_scaled".

CHANNEL-specific top-level fields: strategy ✳ (horizontal_fixed | horizontal_scaled) · channels ✳ (array or grid object — must match the strategy) · scale (SCALE only) · mergeChannels (merge zones sharing boundary prices) · green (integer — how many zones ahead count as the «green zone» for optimistic order placement).

Everything else — deposit, stop (object or array), orders, timeout, filters, range, positionSide, marginType, short, profitAsset, onetime, noticeLevel — is shared. timeFrame (ms) is optional here: omit it and the bot reacts to every tick.

Pitfalls

  • strategy and the channels form must match. horizontal_scaled + grid object, or horizontal_fixed + 0…1 fractions, are configuration nonsense the gateway will not catch at create time (deep validation happens at start).
  • scale is required for horizontal_scaled — without it the 0…1 positions have nothing to map onto.
  • The meaning of buy/sell flips between flavors (absolute price ↔ fraction). Re-check after copy-pasting between configs.
  • green here is an integer count of zones, not the percent threshold of the same-named FIBO field. Same name, different unit — beware when porting configs.
  • Grid martingale grows position sizes down the grid fast — model your worst-case inventory before enabling it.

Verified against API spec v2.0.0 · 2026-07-11

Cookie Preferences

Manage your cookie preferences below. Necessary cookies are always active as they are essential for the website to function properly.

Strictly Necessary

Essential for the website to function. These cookies cannot be disabled.

Analytics

Help us understand how visitors interact with our website by collecting and reporting information anonymously.

Marketing

Used to track visitors across websites to display relevant advertisements.

Preferences

Allow the website to remember choices you make, such as language or region.