Price Change from Low

The price_change_from_low trigger fires when the current price has risen by a specified percentage from the lowest price within a lookback window. It is a global trigger — no open position is required.

Use it to detect recovery-from-bottom signals: "price has bounced 3% off its low over the last 12 hours."

Note

This trigger measures the rise from a recent low in the market, not from your position's entry price. For position-relative tracking, see Position Price Change instead.

TOML Syntax

[[actions.triggers]]
type = "price_change_from_low"
value = "3%"            # Required: rise threshold (always positive)
timeframe = "1h"        # Optional: candle size (default: 1m)
lookback = 12           # Optional: number of candles to scan (default: 24)
max_value = "15%"       # Optional: maximum allowed rise (range cap)
max_count = 1           # Optional: max fires per position

Parameters

ParameterTypeRequiredDefaultDescription
typestringYesMust be "price_change_from_low"
valuestringYesRise threshold in "N%" format (always positive)
timeframestringNo"1m"Candle size for the lookback window
lookbackintegerNo24Number of timeframe-sized candles to scan
max_valuestringNoMaximum rise in "N%" format (range cap)
max_countintegerNounlimitedMaximum times this trigger can fire per position

How It Works

  1. Compute the lookback window: total_candles = lookback × timeframe_in_minutes
  2. Find the lowest close in that window
  3. Calculate the rise: change_pct = (current_close - lowest_close) / lowest_close × 100
  4. Fire if change_pct >= threshold (and within max_value range if set)
graph TD
    A["Scan last N candles<br/>(lookback × timeframe)"] --> B["Find lowest close"]
    B --> C["Calculate % rise<br/>from low to current"]
    C --> D{"Rise meets<br/>threshold?"}
    D -->|Yes| E{"Within max_value<br/>range?"}
    D -->|No| F["No action"]
    E -->|Yes or no max_value| G["Trigger fires"]
    E -->|No — too extreme| F

Example Calculation

With timeframe = "1h", lookback = 12, value = "3%":

  • Window: last 12 × 60 = 720 one-minute candles (12 hours)
  • Lowest close in window: $45,000
  • Current close: $46,800
  • Change: ($46,800 - $45,000) / $45,000 × 100 = +4.0%
  • +4.0% ≥ +3.0% → trigger fires

The value Format

The value must be positive (you're measuring a rise from a low):

ValueMeaning
"3%"Price rose at least 3% from the window's low
"5%"Price rose at least 5% from the window's low
"1.5%"Price rose at least 1.5% from the window's low

Examples

Buy After 3% Bounce from 12h Low

[[actions]]
type = "open_long"
amount = "100 USDC"

[[actions.triggers]]
type = "price_change_from_low"
value = "3%"
timeframe = "1h"
lookback = 12

Confirm Reversal — Not a Dead Cat Bounce

# Enter on a 5% bounce, but skip if it bounced more than 20%
# (might be too late / overbought)
[[actions]]
type = "open_long"
amount = "100 USDC"

[[actions.triggers]]
type = "price_change_from_low"
value = "5%"
max_value = "20%"
timeframe = "1h"
lookback = 24

Combine with Volume Confirmation

[[actions]]
type = "open_long"
amount = "150 USDC"

# Price bounced 3% from 6h low
[[actions.triggers]]
type = "price_change_from_low"
value = "3%"
timeframe = "1h"
lookback = 6

# AND volume is above average (confirmation)
[[actions.triggers]]
indicator = "volume_sma_20"
operator = ">"
target = "volume_sma_50"
timeframe = "1h"

Short-Window Recovery (5m candles)

[[actions]]
type = "open_long"
amount = "50 USDC"

[[actions.triggers]]
type = "price_change_from_low"
value = "1.5%"
timeframe = "5m"
lookback = 24
max_count = 1

Tips

Tip

price_change_from_low is a momentum confirmation trigger. A price bouncing off a low with strength suggests buying interest. Combine it with volume or RSI triggers for higher confidence entries.

Tip

Use max_value to avoid chasing. If the price already bounced 20% from the low, the easy gains may already be captured.

Note

Like all price triggers, this fires based on candle closes, not intra-candle wicks. The "lowest close" is the lowest closing price in the window.

TriggerWhat It Measures
Price Change from High% drop from the highest price in a lookback window
Price Change% change over a fixed lookback period
Position Price Change% change from your entry price
Trailing Take-ProfitLocks in profit as price moves up