API documentation

SQUEEZE — squeeze (price-drop) trading

SQUEEZE trades “squeezes” — sharp price drops with a quick bounce. A buy limit order sits a configured percentage below the binding of the previous closed candle (default: its low, the “safest” binding) and trails down while lows keep printing lower; after a fill the bot takes profit a configured percentage above its entry (the average entry when there were several buys). Many small cycles, short holding times. Works best on liquid pairs and short timeframes; the momentum filters below keep it out of runaway dumps and pumps. In the terminal this is the Squeeze strategy — the same mechanics described in the knowledge base.

Prerequisites: the bot lifecycle and the shared config blocks. Required fields: type, symbol, exchange, deposit, price.

How it trades

  1. On each candle of timeFrame (milliseconds here) the bot takes the binding of the previous closed candle (trailingEdge, default: low) as its reference point.
  2. The buy limit sits price.percent.buy % below the binding and trails it down while the binding keeps moving lower (with trailing enabled, the entry follows the falling price and executes on the reversal). A sharp drop into the limit → the bot buys.
  3. Position exits at price.percent.sell % above the entry (average entry across multiple buys) — or rides further with trailingSell.
  4. oncePerTimeFrame caps entries at one buy per candle; trailingRules filter out abnormal momentum.

Minimal working config

Verified POST /v2/bots body — 1-minute candles, buy at −4% from the binding, take profit at +1%, binding on the candle low:

{
  "type": "SQUEEZE",
  "settings": {
    "type": "SQUEEZE",
    "symbol": { "base": "SOL", "quote": "USDT" },
    "ticker": "SOLUSDT",
    "name": "1m, 4% 1%, low",
    "exchange": "binance-futures",
    "timeFrame": 60000,
    "deposit": { "value": "11", "asset": "USDT" },
    "noticeLevel": 1,
    "timeout": { "type": "ttl", "value": 604800000 },
    "positionSide": "LONG",
    "stop": [
      { "strategy": "breakeven", "complete": true, "disabled": true,
        "trigger": { "type": "kline" }, "order": { "type": "MARKET" } }
    ],
    "price": { "percent": { "buy": "4", "sell": "1" } },
    "trailing": true,
    "trailingEdge": "low",
    "trailingSell": false,
    "oncePerTimeFrame": true,
    "range": [ { "type": "kline_percent", "max": "2" } ]
  }
}

SQUEEZE-specific fields

Everything from the shared blocks applies (symbol — object form; timeFramemilliseconds), plus:

Field Type Meaning
price object { "percent": { "buy", "sell" } } — both strings. buy — the “Buy trigger”: % below the previous candle’s binding where the buy limit sits. sell — the “Sell trigger”: % above the entry price for take-profit
trailing boolean Trail entries/exits to capture more of the move
trailingEdge enum The binding — the candle reference point the buy trigger is measured from: open · close · high · low · hl2 (=(H+L)/2) · oc2 (=(O+C)/2) · hlc3 (=(H+L+C)/3) · ohlc4 (=(O+H+L+C)/4)
trailingSell boolean Trail specifically the exit — ride a breakout past the fixed TP
trailingPart boolean Partial trailing — trail a fraction of the position, take fixed profit on the rest
trailingRules array Momentum filter rules, discriminated by type — see below
oncePerTimeFrame boolean At most one buy per candle — the anti-overtrading switch

TrailingRuleDef — momentum filters:

Field Meaning
type pump_filter — reacts to upward momentum · dump_filter — to downward momentum
maxChange Price-change % threshold that activates the filter
count Consecutive candles required to confirm momentum (pump_filter only)
edge Candle edge for the comparison (same 8 values as trailingEdge)
timeout Milliseconds after which the filter resets

Advanced example — timeout stop, pump filter, trailing exit

Verified config: 5-minute candles, entry −3%, TP +2%. Two stop rules — a disabled breakeven blank plus a timeout_buy stop that fires after 1 hour without completion, may retrigger after a 3-minute snooze, at most 5 times per run. A pump_filter keeps the bot out of vertical candles, and trailingSell lets winners run:

{
  "type": "SQUEEZE",
  "settings": {
    "type": "SQUEEZE",
    "symbol": { "base": "SOL", "quote": "USDT" },
    "ticker": "SOLUSDT",
    "name": "5m, 3% 2%, close, filtered",
    "exchange": "binance-futures",
    "timeFrame": 300000,
    "deposit": { "value": "50", "asset": "USDT", "allocate": "auto" },
    "noticeLevel": 2,
    "timeout": { "type": "ttl", "value": 2592000000 },
    "positionSide": "LONG",
    "short": false,
    "stop": [
      { "strategy": "breakeven", "complete": true, "disabled": true,
        "trigger": { "type": "kline" }, "order": { "type": "MARKET" } },
      { "strategy": "timeout_buy", "complete": false, "disabled": false,
        "trigger": { "type": "timeout", "value": "3600000" },
        "order": { "type": "MARKET" },
        "snoozeDuration": 180000, "maxStops": 5 }
    ],
    "price": { "percent": { "buy": "3", "sell": "2" } },
    "trailing": true,
    "trailingEdge": "close",
    "trailingSell": true,
    "trailingPart": false,
    "oncePerTimeFrame": true,
    "trailingRules": [
      { "type": "pump_filter", "maxChange": 5, "count": 3, "edge": "close", "timeout": 120000 }
    ],
    "range": [ { "type": "kline_percent", "max": "3" } ]
  }
}

Pitfalls

  • price.percent.buy/sell are strings ("4", not 4) — while trailingRules.maxChange and timeout are numbers. Mixed on purpose; copy the examples.
  • Without oncePerTimeFrame a volatile candle can fire several entries — enable it unless over-trading is the strategy.
  • trailingSell: true overrides the fixed sell % behavior — the exit follows the price instead of parking at +N%.
  • The timeout_buy stop’s trigger.value is a duration in ms as a string ("3600000") — a different animal from Fn.Format level triggers.
  • SQUEEZE reacts on candles of timeFrame (ms60000 = 1m); see the shapes table before porting configs to ALGO, where symbol is a string and timeFrame is in minutes.
  • Knowledge-base methodology: a “safe” config completes within 1–3 candles, and the sell percentage is kept at no more than ⅓ of the buy percentage (buy −3% → take ≤ +1%); no single config stays profitable forever — revisit it as the market changes.

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

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.