Node Reference
Complete reference for all 104 nodes available in the Flow Builder. Nodes are organized by category. Each entry shows the node description, inputs, outputs, and configurable parameters.
Triggers(4)
Time Trigger
Triggers flow at specified time intervals
Starts your flow automatically at regular intervals. Use this to run strategies that check market conditions every minute, hour, or day.
Outputs
| Name | Type | Description |
|---|---|---|
| timestamp | number | Unix timestamp (ms) when the trigger fired |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| interval | select | 1m | 1m | 5m | 15m | 1h | 4h | 1d | How often the trigger fires |
Candle Close
Triggers when a candle closes
Fires once each time a candlestick completes. Use this instead of Time Trigger when your strategy should react to confirmed candle data rather than arbitrary intervals.
Outputs
| Name | Type | Description |
|---|---|---|
| candle | candle | The completed candle data (OHLCV) |
| timestamp | number | Unix timestamp (ms) of the candle close |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| timeframe | select | 1m | 1m | 5m | 15m | 1h | 4h | 1d | Candle timeframe to watch for close events |
Manual Trigger
Triggered manually by user
Lets you run a flow on demand with a button click. Useful for testing your strategy or executing one-off trades without waiting for a scheduled trigger.
Outputs
| Name | Type | Description |
|---|---|---|
| timestamp | number | Unix timestamp (ms) when clicked |
Webhook
Triggers from external webhook call
Starts your flow when an external service sends an HTTP request to your webhook URL. Use this to connect TradingView alerts, bots, or custom scripts to your flows.
Outputs
| Name | Type | Description |
|---|---|---|
| payload | any | JSON payload received from the webhook |
| timestamp | number | Unix timestamp (ms) when received |
Exchange(3)
Exchange Connect
statefulConnect to cryptocurrency exchange
Establishes a connection to your exchange account. This is the starting point for any flow that needs market data or trade execution. Choose paper mode to practice without risking real funds.
Outputs
| Name | Type | Description |
|---|---|---|
| exchange | exchange | Active exchange connection instance |
| account_id | string | Unique identifier for the connected account |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| exchange | select | binance | binance | coinbase | kraken | okx | mexc | bybit | kucoin | bitget | bitfinex | htx | bithumb | bitstamp | gemini | gate | cex | bitmart | coinex | woo | Which exchange to connect to |
| mode | select | paper | paper | live | Paper uses simulated funds; live uses real funds |
Account Info
Get account balance and positions
Fetches your current account balance and open positions from the exchange. Connect this to Position Size or Balance Check nodes to make sizing decisions based on your available funds.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| exchange | exchange | Yes | Active exchange connection to query |
Outputs
| Name | Type | Description |
|---|---|---|
| balance | number | Total account balance in quote currency |
| margin_available | number | Available margin for new positions |
| positions | any | Array of currently open positions |
Balance Check
Check if sufficient balance for trade
Verifies you have enough funds before placing an order. Use this as a safety check — connect it to an AND Gate before your Place Order node to prevent failed trades.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| exchange | exchange | Yes | Active exchange connection to check |
| required_amount | number | Yes | Minimum balance needed for the trade |
Outputs
| Name | Type | Description |
|---|---|---|
| sufficient | boolean | True if available balance >= required amount |
| available | number | Current available balance in quote currency |
Market Data(6)
Price Data
statefulReal-time price feed
Streams live price data (open, high, low, close, volume) for a trading pair. This is the main data source for most strategies — connect it to indicators, comparators, or order nodes.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| exchange | exchange | Yes | Active exchange connection for market data |
Outputs
| Name | Type | Description |
|---|---|---|
| price | number | Current last-traded price |
| open | number | Current candle open price |
| high | number | Current candle high price |
| low | number | Current candle low price |
| close | number | Current candle close price |
| volume | number | Current candle volume |
| ohlcv | ohlcv | Full OHLCV candle object |
| timestamp | number | Unix timestamp (ms) of the data point |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| symbol | string | BTC/USDT | - | Trading pair symbol (e.g. BTC/USDT) |
| timeframe | select | 1m | 1m | 5m | 15m | 1h | 4h | 1d | Candle timeframe for price aggregation |
Order Book
statefulOrder book depth data
Shows the current buy and sell orders waiting on the exchange. Use bid/ask spread and order imbalance to gauge short-term supply/demand and improve your entry timing.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| exchange | exchange | Yes | Active exchange connection for order book data |
Outputs
| Name | Type | Description |
|---|---|---|
| best_bid | number | Highest buy order price |
| best_ask | number | Lowest sell order price |
| spread | number | Difference between best ask and best bid |
| depth | any | Full order book depth (bids and asks arrays) |
| imbalance | number | Bid/ask volume imbalance ratio (-1 to +1) |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| symbol | string | BTC/USDT | - | Trading pair symbol (e.g. BTC/USDT) |
| depth_levels | number | 20 | - | Number of price levels to fetch per side |
Trade Tape
statefulRecent trades stream
Tracks buy/sell volume from recent trades and identifies large trades. Use the large_trade_ratio to detect whale activity and the buy/sell split to gauge market pressure.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| exchange | exchange | Yes | Active exchange connection for trade stream |
Outputs
| Name | Type | Description |
|---|---|---|
| buy_volume | number | Total buy volume in the observation window |
| sell_volume | number | Total sell volume in the observation window |
| large_trade_ratio | number | Fraction of volume from large (whale) trades |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| symbol | string | BTC/USDT | - | Trading pair symbol (e.g. BTC/USDT) |
| window_seconds | number | 60 | - | Sliding window duration in seconds |
Funding Rate
statefulPerpetual futures funding rate
Fetches the current funding rate for perpetual futures. Positive funding means longs pay shorts; negative means shorts pay longs. Use this for carry trades or to detect crowded positioning. The is_extreme output flags when the absolute rate exceeds the threshold — a contrarian signal.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| exchange | exchange | Yes | Active exchange connection for funding data |
Outputs
| Name | Type | Description |
|---|---|---|
| funding | number | Current funding rate (positive = longs pay shorts) |
| rate_pct | number | Funding rate as a percentage |
| next_funding_time | number | Unix timestamp (ms) of next settlement |
| predicted_funding | number | Estimated next funding rate |
| is_positive | boolean | True when funding rate is positive (longs pay shorts) |
| is_extreme | boolean | True when abs(rate) exceeds extreme_threshold |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| symbol | string | BTC/USDT | - | Perpetual futures pair symbol |
| extreme_threshold | number | 0.05 | 0.01 – 1 | Threshold (%) to flag as extreme funding |
Open Interest
statefulFutures open interest data
Tracks total open positions in futures markets. Rising OI with price = trend confirmation. Falling OI with price = unwinding. Sudden drops often signal liquidation events.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| exchange | exchange | Yes | Active exchange connection for derivatives data |
Outputs
| Name | Type | Description |
|---|---|---|
| open_interest | number | Total open positions value |
| oi_change | number | Absolute change in open interest |
| oi_change_percent | number | Percentage change in open interest |
| is_rising | boolean | True when OI increased since last tick |
| is_falling | boolean | True when OI decreased since last tick |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| symbol | string | BTC/USDT | - | Perpetual futures pair symbol |
Multi-TF Indicator
statefulRun an indicator on a different timeframe
Fetches candles at a different timeframe than your main flow and runs an indicator on them. For example, use this to check the 4h RSI while your flow runs on 1m candles. The indicator value updates only when a new candle on the target timeframe closes.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| exchange | exchange | Yes | Exchange connection |
Outputs
| Name | Type | Description |
|---|---|---|
| value | number | Current indicator value on the target timeframe |
| prev_value | number | Previous indicator value (one candle ago) |
| is_rising | boolean | True when value > prev_value |
| is_falling | boolean | True when value < prev_value |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| symbol | string | - | Trading pair | |
| timeframe | select | 4h | 5m | 15m | 1h | 4h | 1d | 1w | Timeframe for the indicator |
| indicator | select | rsi | rsi | sma | ema | atr | Which indicator to compute |
| period | number | 14 | 2 – 200 | Indicator period |
Indicators(18)
SMA
statefulSimple Moving Average
Smooths out price data by averaging the last N candles. Use it to identify the overall trend direction — price above SMA suggests an uptrend, below suggests a downtrend.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| value | number | Yes | Numeric series to average (usually close price) |
Outputs
| Name | Type | Description |
|---|---|---|
| sma | number | Computed simple moving average value |
| is_ready | boolean | True once enough data points collected |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| period | number | 20 | 1 – 500 | Number of data points to average |
EMA
statefulExponential Moving Average with slope
Like SMA but reacts faster to recent price changes. Also outputs slope direction so you can detect when a trend is strengthening or weakening. Great for trend-following strategies.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| value | number | Yes | Numeric series to smooth (usually close price) |
Outputs
| Name | Type | Description |
|---|---|---|
| ema | number | Computed exponential moving average value |
| slope | number | Rate of change of the EMA per period |
| slope_percent | number | Slope expressed as a percentage |
| slope_direction | string | Trend direction: 'up', 'down', or 'flat' |
| is_ready | boolean | True once enough data points collected |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| period | number | 20 | 1 – 500 | EMA lookback period |
| slope_lookback | number | 5 | 2 – 50 | Periods for slope calculation |
RSI
statefulRelative Strength Index
Measures if a coin is overbought (above 70) or oversold (below 30) on a 0-100 scale. Use it to find potential reversal points — buy when oversold, sell when overbought.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| value | number | Yes | Numeric series to evaluate (usually close price) |
Outputs
| Name | Type | Description |
|---|---|---|
| rsi | number | RSI value on a 0-100 scale |
| is_overbought | boolean | True when RSI exceeds overbought level |
| is_oversold | boolean | True when RSI falls below oversold level |
| is_neutral | boolean | True when RSI is between oversold and overbought levels |
| is_ready | boolean | True once enough data points collected |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| period | number | 14 | 2 – 100 | RSI lookback period |
| overbought | number | 70 | 50 – 100 | Level above which RSI is overbought |
| oversold | number | 30 | 0 – 50 | Level below which RSI is oversold |
MACD
statefulMoving Average Convergence Divergence
Tracks momentum by comparing fast and slow moving averages. When MACD crosses above the signal line it's a bullish signal; crossing below is bearish. The histogram shows momentum strength.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| value | number | Yes | Numeric series to evaluate (usually close price) |
Outputs
| Name | Type | Description |
|---|---|---|
| macd_line | number | Difference between fast and slow EMAs |
| signal_line | number | EMA of the MACD line |
| histogram | number | MACD minus signal (momentum gauge) |
| is_bullish | boolean | True when MACD is above signal line |
| crossover | string | Crossover state: 'bullish', 'bearish', or 'none' |
| is_ready | boolean | True once enough data points collected |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| fast_period | number | 12 | 2 – 100 | Fast EMA period (shorter = more responsive) |
| slow_period | number | 26 | 5 – 200 | Slow EMA period (longer = smoother) |
| signal_period | number | 9 | 2 – 50 | Signal line EMA period |
Bollinger Bands
statefulVolatility bands around moving average
Creates upper and lower bands based on price volatility. Price touching the upper band suggests overbought; lower band suggests oversold. A squeeze (narrow bands) often precedes a big move.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| value | number | Yes | Numeric series to evaluate (usually close price) |
Outputs
| Name | Type | Description |
|---|---|---|
| upper | number | Upper band (middle + multiplier * std dev) |
| middle | number | Middle band (SMA of the input) |
| lower | number | Lower band (middle - multiplier * std dev) |
| bandwidth | number | Width between upper and lower bands |
| percent_b | number | Price position within bands (0=lower, 1=upper) |
| is_squeeze | boolean | True when bandwidth is historically narrow |
| is_ready | boolean | True once enough data points collected |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| period | number | 20 | 5 – 100 | SMA lookback period for middle band |
| multiplier | number | 2 | 0.5 – 5 | Standard deviation multiplier for band width |
ATR
statefulAverage True Range
Measures how much a price typically moves per candle. Use ATR to set dynamic stop losses that adapt to current volatility — wider stops in volatile markets, tighter in calm ones.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| high | number | Yes | Candle high price |
| low | number | Yes | Candle low price |
| close | number | Yes | Candle close price |
Outputs
| Name | Type | Description |
|---|---|---|
| atr | number | Current Average True Range value |
| atr_avg | number | Longer-term average of ATR |
| atr_ratio | number | ATR / ATR avg (>1 = above-normal volatility) |
| is_expanding | boolean | True when ATR is rising |
| is_ready | boolean | True once enough data points collected |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| period | number | 14 | 1 – 100 | ATR lookback period |
| avg_period | number | 50 | 10 – 200 | Lookback for longer-term ATR average |
WMA
statefulWeighted Moving Average
Gives more weight to recent prices than SMA. The most recent candle has the highest weight. Use it when you want a moving average that's more responsive to recent price action.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| value | number | Yes | Numeric series to average (usually close price) |
Outputs
| Name | Type | Description |
|---|---|---|
| wma | number | Computed weighted moving average value |
| is_ready | boolean | True once enough data points collected |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| period | number | 20 | 1 – 500 | Number of data points in the weighted window |
ROC
statefulRate of Change (Momentum)
Measures price change speed as a percentage over N periods. Positive = upward momentum, negative = downward. Trend exhaustion is detected when momentum decelerates against the price direction.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| price | number | Yes | Price series to measure rate of change |
Outputs
| Name | Type | Description |
|---|---|---|
| roc | number | Rate of change as a percentage |
| delta_momentum | number | Change in momentum vs previous period |
| is_trend_exhaustion | boolean | True when momentum decelerates against price |
| momentum_direction | string | Direction: 'up', 'down', or 'flat' |
| momentum_strength | string | Strength: 'strong', 'moderate', or 'weak' |
| is_ready | boolean | True once enough data points collected |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| period | number | 10 | 1 – 100 | Lookback period for rate of change |
Autocorrelation
statefulTrend continuation detection via autocorrelation
Measures whether returns are correlated with their past values. Positive autocorrelation = trend likely to continue. Negative = mean-reverting. Useful for choosing between trend-following and mean-reversion strategies.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| price | number | Yes | Price series to analyze for autocorrelation |
Outputs
| Name | Type | Description |
|---|---|---|
| autocorr_sum | number | Sum of autocorrelation coefficients across lags |
| is_trend_continuation | boolean | True when positive autocorrelation detected |
| is_mean_reverting | boolean | True when negative autocorrelation detected |
| trend_persistence | string | 'trending', 'mean_reverting', or 'random' |
| is_ready | boolean | True once enough data points collected |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| period | number | 20 | 10 – 100 | Window size for return calculation |
| max_lag | number | 5 | 1 – 20 | Maximum lag to compute autocorrelation for |
Realized Volatility
statefulVolatility from log returns with z-score
Calculates actual market volatility from price changes. The z-score shows if current volatility is abnormally high or low vs history. Use it to adjust position sizes and identify volatility regime changes.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| price | number | Yes | Price series to measure volatility |
Outputs
| Name | Type | Description |
|---|---|---|
| volatility | number | Realized volatility from log returns |
| volatility_percent | number | Volatility expressed as a percentage |
| zscore | number | Z-score of current vol vs historical mean |
| volatility_regime | string | Regime label: 'low', 'normal', or 'high' |
| is_low_volatility | boolean | True when z-score indicates below-normal vol |
| is_high_volatility | boolean | True when z-score indicates above-normal vol |
| is_ready | boolean | True once enough data points collected |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| period | number | 20 | 5 – 100 | Lookback for volatility calculation |
| zscore_period | number | 100 | 20 – 500 | Lookback for z-score normalization |
| annualize | boolean | true | - | Whether to annualize the volatility figure |
| bar_interval_minutes | number | 1 | - | Minutes per bar (for annualization scaling) |
VWAP
statefulVolume Weighted Average Price
The average price weighted by volume — the 'fair price' for the day. Institutional traders use VWAP as a benchmark. Price above VWAP = bullish bias, below = bearish. Resets daily by default.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| price | number | Yes | Price per unit (typically last or close) |
| volume | number | Yes | Volume for the current bar |
Outputs
| Name | Type | Description |
|---|---|---|
| vwap | number | Volume-weighted average price |
| price_distance | number | Absolute distance of price from VWAP |
| price_distance_percent | number | Distance from VWAP as a percentage |
| price_position | string | Position: 'above', 'below', or 'at' |
| upper_band | number | Upper std dev band around VWAP |
| lower_band | number | Lower std dev band around VWAP |
| is_ready | boolean | True once enough data points collected |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| reset_daily | boolean | true | - | Whether to reset VWAP calculation each day |
| reset_hour_utc | number | 0 | - | UTC hour at which to reset VWAP |
OBV
statefulOn-Balance Volume
Cumulative volume that adds on up-candles and subtracts on down-candles. Rising OBV confirms an uptrend; falling OBV confirms a downtrend. Divergence between OBV and price warns of potential reversal.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| price | number | Yes | Price series to determine up/down candles |
| volume | number | Yes | Volume for the current bar |
Outputs
| Name | Type | Description |
|---|---|---|
| obv | number | Cumulative on-balance volume value |
| slope | number | OBV slope over the lookback period |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| slope_periods | number | 10 | - | Periods for OBV slope calculation |
Stochastic
statefulStochastic Oscillator (%K, %D)
Shows where price closed relative to its high-low range over N periods (0-100). Above 80 = overbought, below 20 = oversold. %K crossing %D gives entry signals similar to MACD crossovers.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| high | number | Yes | Candle high price |
| low | number | Yes | Candle low price |
| close | number | Yes | Candle close price |
Outputs
| Name | Type | Description |
|---|---|---|
| k | number | Fast stochastic line (%K, 0-100) |
| d | number | Slow stochastic line (%D, smoothed %K) |
| is_overbought | boolean | True when %K exceeds overbought level |
| is_oversold | boolean | True when %K falls below oversold level |
| is_ready | boolean | True once enough data points collected |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| k_period | number | 14 | 2 – 100 | Lookback period for %K line |
| d_period | number | 3 | 1 – 20 | Smoothing period for %D line |
| overbought | number | 80 | 50 – 100 | Level above which is overbought |
| oversold | number | 20 | 0 – 50 | Level below which is oversold |
ADX
statefulAverage Directional Index
Measures trend strength on a 0-100 scale (not direction). Above 25 = trending, below 20 = ranging. Use it to decide whether to use trend-following or mean-reversion strategies.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| high | number | Yes | Candle high price |
| low | number | Yes | Candle low price |
| close | number | Yes | Candle close price |
Outputs
| Name | Type | Description |
|---|---|---|
| adx | number | Average Directional Index value (0-100) |
| plus_di | number | Positive directional indicator (+DI) |
| minus_di | number | Negative directional indicator (-DI) |
| trend_strength | string | 'strong', 'moderate', 'weak', or 'absent' |
| is_ready | boolean | True once enough data points collected |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| period | number | 14 | 2 – 100 | ADX lookback period |
MA Slope
statefulMoving Average Slope calculator
Measures the slope (rate of change) of any value over N periods. Connect it to a moving average output to determine if the trend is accelerating, decelerating, or flat.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| value | number | Yes | Any numeric series (typically an MA output) |
Outputs
| Name | Type | Description |
|---|---|---|
| slope | number | Absolute slope value per period |
| slope_percent | number | Slope expressed as a percentage |
| direction | string | Direction: 'up', 'down', or 'flat' |
| is_ready | boolean | True once enough data points collected |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| period | number | 10 | 2 – 100 | Lookback period for slope calculation |
Price Buffer
statefulStores N prices, outputs delta/log_return
Stores the last N price values and computes the total delta and log return over that window. Useful as a building block for custom indicators and regime detection inputs.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| price | number | Yes | Price value to store in the rolling buffer |
Outputs
| Name | Type | Description |
|---|---|---|
| prices | any | Array of the last N stored price values |
| delta | number | Price difference over the full buffer window |
| log_return | number | Log return over the full buffer window |
| is_ready | boolean | True once the buffer is full |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| period | number | 20 | 2 – 500 | Number of prices to keep in the buffer |
Momentum
statefulRaw momentum (price - price_N_ago)
Simply subtracts the price N periods ago from the current price. Positive = price is higher, negative = lower. The simplest momentum indicator — useful for quick directional checks.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| price | number | Yes | Price series to measure momentum |
Outputs
| Name | Type | Description |
|---|---|---|
| momentum | number | Raw momentum (current - N periods ago) |
| momentum_percent | number | Momentum as a percentage of earlier price |
| direction | string | Direction: 'up', 'down', or 'flat' |
| is_ready | boolean | True once enough data points collected |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| period | number | 10 | 1 – 200 | Lookback period for momentum |
Ichimoku Cloud
statefulIchimoku Kinko Hyo with all five lines
Computes the five Ichimoku lines: Tenkan-sen (conversion), Kijun-sen (base), Senkou Span A & B (cloud), and Chikou Span (lagging). The cloud area between Span A and B defines support/resistance zones. Price above the cloud is bullish, below is bearish.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| candles | ohlcv | Yes | OHLCV candle data |
Outputs
| Name | Type | Description |
|---|---|---|
| tenkan | number | Tenkan-sen (conversion line) |
| kijun | number | Kijun-sen (base line) |
| senkou_a | number | Senkou Span A (leading span A) |
| senkou_b | number | Senkou Span B (leading span B) |
| chikou | number | Chikou Span (lagging span) |
| above_cloud | boolean | True when price is above the cloud |
| below_cloud | boolean | True when price is below the cloud |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| tenkan_period | number | 9 | 2 – 100 | Tenkan-sen period |
| kijun_period | number | 26 | 2 – 200 | Kijun-sen period |
| senkou_b_period | number | 52 | 2 – 400 | Senkou Span B period |
| displacement | number | 26 | 1 – 200 | Cloud displacement (offset) |
Regime Detection(12)
Regime Detector
statefulUnified regime detection orchestrator
The main regime detection node that identifies which of 55 market regimes are active. Outputs probability distribution across all regimes, the dominant regime, and whether any critical regimes are detected.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| price | number | Yes | Current price for regime analysis |
| volume | number | No | Current volume (improves detection) |
| order_book | any | No | Order book data for liquidity analysis |
| funding | number | No | Funding rate for derivatives detection |
| open_interest | number | No | Open interest for derivatives detection |
Outputs
| Name | Type | Description |
|---|---|---|
| probabilities | probabilities | Probability distribution across all 55 regimes |
| dominant_regime | number | Numeric ID of the most probable regime |
| dominant_regime_name | string | Name of the dominant regime |
| confidence | number | Probability of the dominant regime (0-1) |
| critical_active | boolean | True if any critical regime is active |
| critical_regime_id | number | ID of active critical regime (0 if none) |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| temperature | number | 1 | 0.1 – 5 | Softmax temperature (lower = more decisive) |
| smoothing_alpha | number | 0.4 | 0.1 – 0.9 | EMA alpha for probability smoothing |
| inclusion_threshold | number | 0.2 | 0.01 – 0.5 | Min probability to include in blending |
Critical Regime Alert
Triggers when critical market regime detected
Monitors 11 critical regimes (flash crash, liquidation cascade, black swan, etc.) and fires when any exceeds its threshold. Connect to Kill Switch for automatic protection.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| probabilities | probabilities | Yes | Regime probability distribution to monitor |
Outputs
| Name | Type | Description |
|---|---|---|
| triggered | boolean | True when a critical regime is active |
| regime_id | number | ID of the triggered critical regime |
| regime_name | string | Name of the triggered critical regime |
| severity | string | Severity: 'warning', 'critical', or 'emergency' |
Regime Parameters
Resolves engine parameters based on active regimes
Blends trading parameters (position size, SL/TP multipliers, leverage) from all active regimes using probability-weighted averaging. Critical regimes override blending entirely.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| probabilities | probabilities | Yes | Regime probability distribution for blending |
Outputs
| Name | Type | Description |
|---|---|---|
| entry_enabled | boolean | Whether new entries are allowed |
| direction_allowed | string | 'both', 'long_only', 'short_only', or 'none' |
| position_size_multiplier | number | Blended position size scaling factor |
| sl_multiplier | number | Blended stop loss distance multiplier |
| tp_multiplier | number | Blended take profit distance multiplier |
| max_leverage | number | Max leverage under current regimes |
| urgency | string | Execution urgency: 'low', 'normal', 'high' |
| order_type | string | Recommended order type: 'limit' or 'market' |
| slippage_tolerance | number | Max acceptable slippage as a fraction |
| exit_open_positions | boolean | True if regimes recommend closing all |
| kill_switch | boolean | True if conditions warrant halting trading |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| inclusion_threshold | number | 0.2 | 0.01 – 0.5 | Min probability to include in blending |
Regime Smoother
statefulEMA smoothing with oscillation detection
Smooths regime probabilities to prevent rapid flipping between regimes. Detects oscillation patterns and enforces a 'sticky period' before confirming a regime change.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| raw_probabilities | probabilities | Yes | Unsmoothed regime probability distribution |
Outputs
| Name | Type | Description |
|---|---|---|
| smoothed_probabilities | probabilities | EMA-smoothed probability distribution |
| is_warmed_up | boolean | True once warmup period is complete |
| is_oscillating | boolean | True if rapid regime flipping detected |
| oscillation_rate | number | Frequency of regime changes in window |
| confirmed_regime | number | Regime ID held for min_regime_ticks |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| alpha | number | 0.4 | 0.1 – 0.9 | EMA smoothing factor (higher = faster) |
| warmup_ticks | number | 3 | - | Ticks before outputting smoothed values |
| min_regime_ticks | number | 2 | - | Min ticks a regime must hold to confirm |
| oscillation_window | number | 10 | - | Window size for oscillation rate |
Price Regime
statefulDetects price/trend market regimes (IDs 1-10)
Scores 10 price/trend regimes: trend expansion, initiation, continuation, exhaustion, mean reversion, range compression, stable market making, toxic flow, vol expansion, and vol shock.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| price | number | Yes | Current price |
| ma_slope | number | No | Moving average slope for trend direction |
| atr | number | No | ATR for volatility context |
| delta_price | number | No | Price change from previous period |
| volume_ratio | number | No | Current volume / average volume |
| autocorr_sum | number | No | Autocorrelation sum for trend persistence |
| delta_momentum | number | No | Momentum change for exhaustion detection |
| divergence_score | number | No | Price-volume divergence score |
| price_vwap_distance | number | No | Distance of price from VWAP |
| vol_zscore | number | No | Volatility z-score |
| spread_pct | number | No | Bid-ask spread as a percentage |
| depth_ratio | number | No | Order book depth ratio (bid / ask) |
| order_flow_imbalance | number | No | Net order flow imbalance |
| log_return | number | No | Log return for current period |
| realized_vol | number | No | Realized volatility value |
Outputs
| Name | Type | Description |
|---|---|---|
| regime_id | number | Detected price regime ID (1-10) |
| regime_name | string | Name of the detected price regime |
| probability | number | Probability score for the detected regime |
Derivatives Regime
statefulDetects derivatives-related conditions (9 regimes)
Scores 9 derivatives regimes including funding neutral/imbalance, liquidation cascade, short/long squeeze, basis blowout, and funding harvest. Key input: funding rate and open interest.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| funding_rate | number | Yes | Current perpetual futures funding rate |
| funding_std | number | No | Std dev of funding rate history |
| delta_open_interest | number | No | Change in open interest |
| liquidation_volume | number | No | Volume from liquidation events |
| total_volume | number | No | Total market volume for normalization |
| delta_price | number | No | Price change from previous period |
| perp_price | number | No | Perpetual futures price |
| spot_price | number | No | Spot market price |
| realized_vol | number | No | Realized volatility for context |
Outputs
| Name | Type | Description |
|---|---|---|
| regime_id | number | Detected derivatives regime ID |
| regime_name | string | Name of the detected regime |
| probability | number | Probability score for the regime |
| is_squeeze | boolean | True if a squeeze condition detected |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| funding_threshold | number | 0.01 | - | Funding rate level considered significant |
Participation Regime
statefulDetects market participant behavior (8 regimes)
Scores 8 participation regimes: whale accumulation/distribution, order flow imbalance, retail/institutional dominance, inventory rebalancing, adverse selection, and index rebalance.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| large_trade_ratio | number | No | Fraction of volume from large trades |
| buy_volume | number | No | Total buy-side volume |
| sell_volume | number | No | Total sell-side volume |
| total_volume | number | No | Total market volume |
| small_trade_ratio | number | No | Fraction of volume from small trades |
| block_trade_ratio | number | No | Fraction of volume from block trades |
Outputs
| Name | Type | Description |
|---|---|---|
| regime_id | number | Detected participation regime ID |
| regime_name | string | Name of the detected regime |
| probability | number | Probability score for the regime |
Liquidity Regime
statefulDetects market liquidity conditions (5 regimes)
Scores 5 liquidity regimes: cross-exchange arbitrage, liquidity drought, liquidity migration, liquidity vacuum (critical), and venue fragmentation. Monitors order book depth and spread.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| bid_depth | number | Yes | Total bid-side order book depth |
| ask_depth | number | Yes | Total ask-side order book depth |
| spread | number | Yes | Current bid-ask spread |
| volume | number | No | Current trading volume |
| depth_ratio | number | No | Bid depth / ask depth ratio |
Outputs
| Name | Type | Description |
|---|---|---|
| regime_id | number | Detected liquidity regime ID |
| regime_name | string | Name of the detected regime |
| probability | number | Probability score for the regime |
| is_critical | boolean | True if critical liquidity condition |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| depth_threshold | number | 0.3 | - | Min depth ratio for normal liquidity |
Volatility Regime
statefulDetects volatility and options conditions (3 regimes)
Scores 3 volatility regimes: dealer gamma positioning, volatility suppression, and gamma flip. Useful for understanding whether options market dynamics are suppressing or amplifying price moves.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| realized_vol | number | Yes | Current realized volatility |
| historical_vol | number | No | Longer-term historical volatility |
| dealer_gamma | number | No | Net dealer gamma exposure |
Outputs
| Name | Type | Description |
|---|---|---|
| regime_id | number | Detected volatility regime ID |
| regime_name | string | Name of the detected regime |
| probability | number | Probability score for the regime |
Correlation Regime
statefulDetects cross-asset correlation conditions (6 regimes)
Scores 6 correlation/meta regimes: correlation shift, dominance rotation, narrative regime, macro override, reflexive feedback, and forced de-risking (critical). Monitors cross-asset dynamics.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| delta_correlation | number | No | Change in cross-asset correlation |
| delta_btc_dominance | number | No | Change in BTC market dominance |
| macro_beta | number | No | Sensitivity to macro/traditional markets |
| cross_asset_drawdown | number | No | Drawdown across correlated assets |
| correlation_to_1 | number | No | How close correlation is to 1 (risk-off) |
Outputs
| Name | Type | Description |
|---|---|---|
| regime_id | number | Detected correlation regime ID |
| regime_name | string | Name of the detected regime |
| probability | number | Probability score for the regime |
Temporal Regime
statefulDetects time-based market behavior (3 regimes)
Scores 3 temporal regimes: session regime (volume vs session average), weekend regime (binary), and holiday regime (binary). Weekend and holiday use clip normalization instead of softmax.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| current_volume | number | No | Volume in the current time window |
| avg_session_volume | number | No | Average volume for this session |
| is_weekend | boolean | No | True if current time is a weekend |
| is_holiday | boolean | No | True if current time is a holiday |
Outputs
| Name | Type | Description |
|---|---|---|
| regime_id | number | Detected temporal regime ID |
| regime_name | string | Name of the detected regime |
| probability | number | Probability score for the regime |
Failure Regime
statefulDetects infrastructure/market failure (11 regimes)
Mandatory safety node that monitors 11 failure regimes: exchange stress, flash crash, oracle failure, regulatory shock, black swan, cross-margin contagion, stablecoin stress, chain congestion, settlement risk, capital control, and market halt.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| latency_zscore | number | No | Exchange API latency z-score |
| atr | number | No | ATR for flash crash detection |
| high | number | No | Candle high price |
| low | number | No | Candle low price |
| open | number | No | Candle open price |
| close | number | No | Candle close price |
| oracle_prices | any | No | Oracle price feeds for divergence check |
| stablecoin_prices | any | No | Stablecoin prices (should be near 1.0) |
| withdrawal_blocked | boolean | No | True if withdrawals are disabled |
| trading_halted | boolean | No | True if exchange trading is halted |
Outputs
| Name | Type | Description |
|---|---|---|
| regime_id | number | Detected failure regime ID |
| regime_name | string | Name of the detected regime |
| probability | number | Probability score for the regime |
| is_critical | boolean | True if condition requires immediate action |
| recommended_action | string | 'monitor', 'reduce', 'exit', or 'halt' |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| flash_crash_threshold | number | 3 | - | ATR z-score that qualifies as flash crash |
Logic(10)
Comparator
Compare two values
Compares two numbers using an operator (>, <, ==, etc.) and outputs true or false. Use this to create conditions like 'price > SMA' or 'RSI < 30'.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| a | number | Yes | Left-hand value for comparison |
| b | number | Yes | Right-hand value for comparison |
Outputs
| Name | Type | Description |
|---|---|---|
| result | boolean | True if the comparison holds |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| operator | select | > | > | < | >= | <= | == | != | Comparison operator to apply |
Threshold
statefulCheck if value crosses threshold
Detects when a value crosses above or below a set level. Unlike Comparator, this tracks crossing events — useful for triggering trades only at the moment RSI crosses 30 or price crosses a support level.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| value | number | Yes | Numeric value to check against the threshold |
Outputs
| Name | Type | Description |
|---|---|---|
| above | boolean | True while value is above the threshold |
| below | boolean | True while value is below the threshold |
| crossed_up | boolean | True only on the tick value crosses above |
| crossed_down | boolean | True only on the tick value crosses below |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| threshold | number | 0 | - | The level to compare against |
AND Gate
All inputs must be true
Combines multiple conditions — all must be true for the output to be true. Use it to require multiple confirmations before entering a trade, like 'RSI oversold AND price above SMA AND volume rising'.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| a | boolean | Yes | First boolean condition (required) |
| b | boolean | Yes | Second boolean condition (required) |
| c | boolean | No | Third boolean condition (optional) |
| d | boolean | No | Fourth boolean condition (optional) |
Outputs
| Name | Type | Description |
|---|---|---|
| result | boolean | True only when ALL inputs are true |
OR Gate
Any input must be true
Outputs true if any connected condition is true. Use it when you want to trigger on multiple possible signals — like 'RSI oversold OR MACD bullish crossover'.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| a | boolean | Yes | First boolean condition (required) |
| b | boolean | Yes | Second boolean condition (required) |
| c | boolean | No | Third boolean condition (optional) |
| d | boolean | No | Fourth boolean condition (optional) |
Outputs
| Name | Type | Description |
|---|---|---|
| result | boolean | True when ANY input is true |
NOT Gate
Invert boolean
Flips true to false and false to true. Use it to negate a condition — for example, invert a Kill Switch signal to create an 'all clear' output for normal trading.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| value | boolean | Yes | Boolean value to invert |
Outputs
| Name | Type | Description |
|---|---|---|
| result | boolean | Negated boolean (true becomes false) |
Signal Gate
Pass signal only if conditions met
Acts like a valve — passes the signal through only when the condition is true, otherwise blocks it. Use it to gate trade signals through regime or risk checks.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| signal | any | Yes | The signal/data to pass through or block |
| condition | boolean | Yes | Gate control: true passes, false blocks |
Outputs
| Name | Type | Description |
|---|---|---|
| signal | any | Original signal (only when condition is true) |
| passed | boolean | True if the signal was allowed through |
Softmax
Normalize scores to probabilities
Converts a set of raw scores into probabilities that sum to 1. Higher temperature = more uniform distribution; lower temperature = winner-take-all. Used internally by regime detection.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| scores | any | Yes | Array of raw numeric scores to normalize |
Outputs
| Name | Type | Description |
|---|---|---|
| probabilities | probabilities | Normalized probability distribution (sums to 1) |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| temperature | number | 1 | 0.1 – 10 | Distribution sharpness (lower = more peaked) |
Math
Basic math operation
Performs a math operation on two numbers (+, -, *, /, %, ^, min, max). Use it for custom calculations like computing spreads, ratios, or combining indicator values.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| a | number | Yes | First operand |
| b | number | Yes | Second operand |
Outputs
| Name | Type | Description |
|---|---|---|
| result | number | Result of the math operation |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| operation | select | + | + | - | * | / | % | ^ | min | max | Math operation to perform |
Custom Formula
User-defined math expression
Enter a math formula using variables a, b, c, d which map to the 4 inputs. Supports: +, -, *, /, %, ^, abs(), min(), max(), sqrt(), log(), round(). Example: (a - b) / c creates a z-score from three inputs.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| a | number | Yes | Variable a |
| b | number | No | Variable b |
| c | number | No | Variable c |
| d | number | No | Variable d |
Outputs
| Name | Type | Description |
|---|---|---|
| result | number | Formula result |
| is_positive | boolean | True when result > 0 |
| is_negative | boolean | True when result < 0 |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| formula | string | a | - | Math formula using variables a, b, c, d. Example: (a - b) / c |
Switch
Multi-way branching based on a numeric value
Routes execution based on a numeric input value. Define up to 4 threshold ranges — the input is compared against each threshold and the matching branch output becomes true. Similar to a switch/case statement. Use for routing to different strategies based on regime, volatility level, or any numeric classifier.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| value | number | Yes | Numeric value to evaluate |
Outputs
| Name | Type | Description |
|---|---|---|
| branch_1 | boolean | True when value < threshold_1 |
| branch_2 | boolean | True when threshold_1 <= value < threshold_2 |
| branch_3 | boolean | True when threshold_2 <= value < threshold_3 |
| branch_4 | boolean | True when value >= threshold_3 |
| active_branch | number | Which branch is active (1-4) |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| threshold_1 | number | 30 | - | First threshold boundary |
| threshold_2 | number | 50 | - | Second threshold boundary |
| threshold_3 | number | 70 | - | Third threshold boundary |
Risk Management(15)
Stop Loss (Fixed)
Fixed percentage stop loss
Sets a stop loss at a fixed percentage below (for longs) or above (for shorts) your entry price. Simple and predictable — good for beginners or when you want consistent risk per trade.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| entry_price | number | Yes | Price at which the position was entered |
Outputs
| Name | Type | Description |
|---|---|---|
| stop_price | number | Computed stop loss price |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| side | select | buy | buy | sell | Position side: buy (long) or sell (short) |
| stop_percent | number | 0.02 | 0.001 – 0.5 | Stop distance as a fraction (0.02 = 2%) |
Stop Loss (ATR)
ATR-based stop loss
Sets a stop loss based on current market volatility using ATR. The stop widens in volatile markets and tightens in calm ones, reducing the chance of getting stopped out by normal price noise.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| entry_price | number | Yes | Price at which the position was entered |
| atr | number | Yes | Current ATR value for stop distance |
Outputs
| Name | Type | Description |
|---|---|---|
| stop_price | number | Computed ATR-based stop loss price |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| side | select | buy | buy | sell | Position side: buy (long) or sell (short) |
| atr_multiplier | number | 2 | 0.5 – 10 | How many ATRs away to place the stop |
Take Profit (R:R)
Take profit based on risk:reward ratio
Calculates your take-profit price based on your stop loss distance. A 2:1 ratio means your target profit is twice your risk. Connect it to a Stop Loss node to automatically compute the TP level.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| entry_price | number | Yes | Price at which the position was entered |
| stop_price | number | Yes | Stop loss price (used to calculate risk) |
Outputs
| Name | Type | Description |
|---|---|---|
| take_profit_price | number | Computed take profit price |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| side | select | buy | buy | sell | Position side: buy (long) or sell (short) |
| risk_reward | number | 2 | 0.5 – 10 | Reward-to-risk ratio (2.0 = 2x the risk) |
Kill Switch
statefulEmergency stop trading trigger
Emergency safety net that stops all trading when losses exceed your limits. Set max loss amount, percentage, or consecutive loss count to automatically shut down the strategy and protect your account.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| pnl | number | No | Current session PnL in absolute terms |
| pnl_percent | number | No | Current session PnL as a percentage |
| consecutive_losses | number | No | Number of consecutive losing trades |
| critical_regime | boolean | No | True if a critical market regime is active |
Outputs
| Name | Type | Description |
|---|---|---|
| triggered | boolean | True when any kill switch condition is met |
| reason | string | Which condition triggered the kill switch |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| max_loss_amount | number | 0 | - | Max allowed loss in absolute terms (0 = disabled) |
| max_loss_percent | number | 0.1 | - | Max allowed loss as a fraction (0.1 = 10%) |
| max_consecutive_losses | number | 5 | - | Stop after this many losses in a row |
| stop_on_critical_regime | boolean | true | - | Trigger on critical regime detection |
Trailing Stop
statefulTrailing stop that follows price
A stop loss that moves with profitable price action. It activates after price moves a set % in your favor, then trails behind at a fixed distance. Locks in profits while letting winners run.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| current_price | number | Yes | Latest market price |
| entry_price | number | Yes | Price at which the position was entered |
Outputs
| Name | Type | Description |
|---|---|---|
| trail_price | number | Current trailing stop price level |
| is_active | boolean | True once past the activation threshold |
| is_triggered | boolean | True when price crosses the trail level |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| side | select | buy | buy | sell | Position side: buy (long) or sell (short) |
| trail_percent | number | 0.01 | 0.001 – 0.2 | Trail distance as a fraction (0.01 = 1%) |
| activation_percent | number | 0.01 | 0 – 0.5 | Min profit before trailing begins (0 = immediate) |
PnL Calculator
Calculate profit/loss for position
Computes your current unrealized PnL for an open position. Connect entry price, current price, size, and side to see your profit or loss in both absolute and percentage terms.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| entry_price | number | Yes | Price at which the position was entered |
| current_price | number | Yes | Latest market price |
| size | number | Yes | Position size in base currency |
Outputs
| Name | Type | Description |
|---|---|---|
| pnl | number | Unrealized P&L in quote currency |
| pnl_percent | number | Unrealized P&L as a percentage of entry |
| is_profitable | boolean | True if the position is in profit |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| side | select | buy | buy | sell | Position side: buy (long) or sell (short) |
Max Drawdown
statefulTrack peak equity and drawdown
Tracks your highest equity point and measures the decline from it. Use max_drawdown_percent as a Kill Switch input to stop trading when losses from the peak exceed your tolerance.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| equity | number | Yes | Current equity/portfolio value |
Outputs
| Name | Type | Description |
|---|---|---|
| drawdown | number | Current drawdown from peak in absolute terms |
| drawdown_percent | number | Current drawdown as a percentage |
| max_drawdown | number | Largest drawdown recorded (absolute) |
| max_drawdown_percent | number | Largest drawdown recorded (percentage) |
| peak | number | Highest equity value observed |
Position Limit
statefulCap concurrent open positions
Limits the number of positions you can have open at once. Use this to prevent over-exposure — connect the 'allowed' output to a Signal Gate before your Place Order node.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| want_open | boolean | Yes | True when a new position is requested |
| position_closed | boolean | No | Pulse true when a position closes |
Outputs
| Name | Type | Description |
|---|---|---|
| allowed | boolean | True if another position can be opened |
| current_count | number | Number of currently open positions |
| remaining | number | How many more positions can be opened |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| max_positions | number | 3 | 1 – 50 | Maximum concurrent open positions |
Daily Loss Limit
statefulTrack daily PnL, reset by UTC hour
Tracks cumulative PnL for the day and blocks trading when the daily loss limit is hit. Resets at a configurable UTC hour. Essential for preventing tilt-driven losses.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| pnl | number | Yes | PnL value from a closed or current trade |
Outputs
| Name | Type | Description |
|---|---|---|
| exceeded | boolean | True when daily loss exceeds the limit |
| daily_pnl | number | Cumulative PnL for the current day |
| remaining | number | How much more can be lost before limit |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| max_daily_loss | number | 100 | - | Max daily loss in quote currency |
| reset_hour_utc | number | 0 | - | UTC hour at which the daily counter resets |
Correlation Filter
Prevent correlated positions
Blocks new positions when correlation with existing positions exceeds a threshold. Prevents doubling up on correlated bets that would amplify losses during adverse moves.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| correlation | number | Yes | Correlation coefficient between positions |
Outputs
| Name | Type | Description |
|---|---|---|
| allowed | boolean | True if correlation is below threshold |
| correlation | number | Pass-through of input correlation value |
| is_correlated | boolean | True if positions are too correlated |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| max_correlation | number | 0.7 | 0 – 1 | Maximum allowed correlation (0-1) |
Stop Loss (Multi)
Enhanced stop loss with 3 modes
A flexible stop loss supporting percentage, fixed distance, or ATR-based modes. Choose the mode that fits your strategy — percentage for simplicity, ATR for volatility-adaptive stops.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| entry_price | number | Yes | Price at which the position was entered |
| atr | number | No | Current ATR value (required for 'atr' mode) |
Outputs
| Name | Type | Description |
|---|---|---|
| stop_price | number | Computed stop loss price |
| stop_distance | number | Absolute distance from entry to stop |
| stop_percent | number | Stop distance as a % of entry price |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| side | select | buy | buy | sell | Position side: buy (long) or sell (short) |
| mode | select | percent | percent | fixed | atr | Stop loss calculation method |
| stop_percent | number | 0.02 | 0.001 – 0.5 | Stop distance fraction (for 'percent' mode) |
| fixed_distance | number | 0 | - | Absolute price distance (for 'fixed' mode) |
| atr_multiplier | number | 2 | 0.5 – 10 | ATR multiplier (for 'atr' mode) |
Take Profit (Multi)
Enhanced take profit with partial support
Sets take-profit levels based on risk:reward ratio with optional partial exit. Take partial profits at a closer level and let the rest run for maximum gain.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| entry_price | number | Yes | Price at which the position was entered |
| stop_price | number | No | Stop loss price for R:R calculation |
Outputs
| Name | Type | Description |
|---|---|---|
| tp_price | number | Primary take profit price |
| tp_distance | number | Absolute distance from entry to TP |
| partial_tp_price | number | Price level for partial profit taking |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| side | select | buy | buy | sell | Position side: buy (long) or sell (short) |
| risk_reward | number | 2 | 0.5 – 10 | Target risk:reward ratio for primary TP |
| partial_percent | number | 0.5 | 0 – 1 | Fraction of position to close at partial TP |
| partial_rr | number | 1 | 0.5 – 5 | Risk:reward ratio for partial TP level |
Time Filter
Only allow signals during user-defined time windows
Filters signals based on time-of-day and day-of-week. Pass a signal through the input — it only passes through when the current time is within the allowed window. Use this to avoid low-liquidity hours or restrict to specific trading sessions.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| signal | boolean | Yes | Incoming signal to filter |
Outputs
| Name | Type | Description |
|---|---|---|
| signal | boolean | Signal passed through (true only if within time window) |
| is_active | boolean | True when current time is within the allowed window |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| start_hour | number | 0 | 0 – 23 | Start hour (UTC, 0-23) |
| end_hour | number | 23 | 0 – 23 | End hour (UTC, 0-23) |
| days | string | mon,tue,wed,thu,fri | - | Comma-separated allowed days (mon,tue,wed,thu,fri,sat,sun) |
Cooldown Timer
statefulEnforce a waiting period between trades
Blocks signals for a configurable duration after each trade. Connect the trade trigger to 'trigger_in' — it passes through only if enough time has elapsed since the last trigger. Resets the cooldown timer each time a signal passes.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| trigger_in | boolean | Yes | Incoming trade signal to gate |
Outputs
| Name | Type | Description |
|---|---|---|
| trigger_out | boolean | Signal passed through (true only if cooldown has elapsed) |
| is_cooling | boolean | True when in cooldown period |
| remaining_ms | number | Milliseconds remaining in cooldown (0 if not cooling) |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| cooldown_minutes | number | 15 | 1 – 1440 | Cooldown duration in minutes |
Rate Limiter
statefulThrottle exchange API calls to user-defined rate limits
Controls how many API calls your flow makes per second to an exchange. You set the maximum request rate and order rate to stay within your exchange's documented limits. Requests that exceed the limit are queued and delayed. This is your responsibility to configure — the platform does not enforce limits automatically.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| signal | any | Yes | Pass-through signal (connects before exchange calls) |
Outputs
| Name | Type | Description |
|---|---|---|
| signal | any | Pass-through (delayed if rate limit reached) |
| queue_depth | number | Current number of queued requests |
| throttled | boolean | True if the signal was delayed by rate limiting |
| available_tokens | number | Remaining request tokens in the bucket |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| exchange | select | binance | binance | okx | bybit | coinbase | kraken | mexc | Exchange to rate limit |
| max_requests_per_sec | number | 10 | - | Maximum REST API requests per second |
| max_orders_per_sec | number | 5 | - | Maximum order placements per second |
| queue_timeout_ms | number | 30000 | - | Max time (ms) to wait in queue before failing |
| limiter_type | select | rest | rest | orders | Which limit bucket to use for this node |
Position Sizing(9)
Position Size
Calculate position size: Risk$ / StopDist
Determines how much to buy or sell based on your account balance, risk percentage, and stop loss distance. Ensures you never risk more than your set percentage on any single trade.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| balance | number | Yes | Available account balance in quote currency |
| entry_price | number | Yes | Intended entry price |
| stop_price | number | Yes | Stop loss price (determines risk per unit) |
Outputs
| Name | Type | Description |
|---|---|---|
| size | number | Calculated position size in base currency |
| notional | number | Total position value in quote currency |
| risk_amount | number | Dollar amount at risk on this trade |
| leverage_used | number | Effective leverage (notional / balance) |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| risk_percent | number | 0.01 | 0.001 – 0.1 | Fraction of balance to risk per trade (0.01 = 1%) |
| max_leverage | number | 1 | 1 – 125 | Maximum allowed leverage |
| max_position_percent | number | 1 | 0.1 – 1 | Max fraction of balance for position notional |
| min_notional | number | 5 | - | Minimum order value in quote currency (e.g. 5 USDT). Orders below this output size=0. |
Risk Amount
Calculate risk amount: Risk$ = Balance x Risk%
Calculates the dollar amount you're willing to risk on a trade. Simply multiplies your balance by your risk percentage. Connect this to Position Size for complete sizing.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| balance | number | Yes | Available account balance in quote currency |
Outputs
| Name | Type | Description |
|---|---|---|
| risk_amount | number | Dollar amount to risk (balance x risk_percent) |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| risk_percent | number | 0.01 | 0.001 – 0.1 | Fraction of balance to risk (0.01 = 1%) |
Stop Distance
Calculate stop distance: |Entry - Stop|
Calculates the absolute and percentage distance between entry and stop prices. A building block for position sizing — feed this into Position Size to compute your trade size.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| entry_price | number | Yes | Intended entry price |
| stop_price | number | Yes | Stop loss price |
Outputs
| Name | Type | Description |
|---|---|---|
| distance | number | Absolute price distance between entry and stop |
| distance_percent | number | Distance as a percentage of entry price |
Step Size Round
Round size DOWN to exchange step size
Rounds your position size down to the exchange's minimum step size. Without this, orders may be rejected for invalid quantity precision. Always place this before Place Order.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| size | number | Yes | Raw position size to round |
Outputs
| Name | Type | Description |
|---|---|---|
| rounded_size | number | Size rounded down to nearest step |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| step_size | number | 0.00001 | - | Exchange minimum quantity increment |
Tick Size Round
Round price to exchange tick size
Rounds your limit price to the exchange's tick size. Rounds in the 'safe' direction — stop losses round worse, take profits round better — to avoid premature triggers.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| price | number | Yes | Raw price to round |
Outputs
| Name | Type | Description |
|---|---|---|
| rounded_price | number | Price rounded to nearest valid tick |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| tick_size | number | 0.01 | - | Exchange minimum price increment |
| side | select | long | long | short | Position side (affects rounding direction) |
| order_type | select | stop_loss | stop_loss | take_profit | Order type (stop rounds worse, TP rounds better) |
Margin Calculator
Calculate required margin for futures
Computes how much margin you need to open a futures position. Shows both initial margin (to open) and maintenance margin (to keep open). Helps prevent liquidation by ensuring adequate margin.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| size | number | Yes | Position size in base currency |
| price | number | Yes | Entry price per unit |
Outputs
| Name | Type | Description |
|---|---|---|
| initial_margin | number | Margin required to open the position |
| maintenance_margin | number | Minimum margin to keep position open |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| initial_margin_rate | number | 0.1 | - | Initial margin rate (0.1 = 10x max leverage) |
| maintenance_margin_rate | number | 0.05 | - | Maintenance margin rate as a fraction |
Regime Size Blender
Blend position size based on regime probabilities
Adjusts your position size based on active market regimes. Reduces size in dangerous regimes (liquidation cascade, flash crash) and increases in favorable ones (trend expansion). Connect regime probabilities from Regime Detector.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| base_size | number | Yes | Position size before regime adjustment |
| probabilities | probabilities | Yes | Regime probability distribution |
Outputs
| Name | Type | Description |
|---|---|---|
| adjusted_size | number | Position size after regime-based scaling |
| multiplier | number | Size multiplier applied (e.g. 0.5 = halved) |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| probability_threshold | number | 0.1 | - | Min regime probability to include in blending |
Kelly Criterion
Kelly criterion position sizing
Calculates the mathematically optimal bet size based on your win rate and average win/loss ratio. Half-Kelly (the recommended output) is commonly used to reduce variance while maintaining good growth.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| win_rate | number | Yes | Historical win rate as a fraction (0.55 = 55%) |
| avg_win | number | Yes | Average profit on winning trades |
| avg_loss | number | Yes | Average loss on losing trades (positive number) |
Outputs
| Name | Type | Description |
|---|---|---|
| kelly_fraction | number | Full Kelly optimal bet fraction |
| half_kelly | number | Half Kelly (recommended for lower variance) |
| recommended_risk_percent | number | Suggested risk percent (capped) |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| max_fraction | number | 0.25 | 0.01 – 1 | Upper cap to prevent over-betting |
Volatility Sizing
Scale position size by current volatility (ATR)
Takes ATR and account balance as inputs, outputs a position size that keeps risk constant. When volatility is high, position size decreases. When volatility is low, position size increases. The target_risk_pct param controls how much of your balance to risk per trade.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| atr | number | Yes | Current ATR value from the ATR node |
| price | number | Yes | Current asset price |
| balance | number | Yes | Account balance from Account Info |
Outputs
| Name | Type | Description |
|---|---|---|
| size | number | Calculated position size (in base currency units) |
| risk_amount | number | Dollar amount at risk |
| atr_multiple | number | How many ATRs the stop distance represents |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| target_risk_pct | number | 1 | 0.1 – 10 | Percentage of balance to risk per trade |
| atr_multiplier | number | 2 | 0.5 – 10 | Stop distance as multiple of ATR |
Order Execution(7)
Place Order
statefulSubmit order to exchange
Sends a buy or sell order to the exchange. Choose market orders for immediate execution or limit orders to set your price. Connect size from Position Size and conditions from your logic nodes.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| exchange | exchange | Yes | Active exchange connection for order submission |
| size | number | Yes | Order quantity in base currency |
| price | number | No | Limit price (ignored for market orders) |
Outputs
| Name | Type | Description |
|---|---|---|
| order_id | string | Exchange-assigned order identifier |
| status | string | Order status: filled, open, rejected |
| filled_size | number | Quantity that has been filled |
| avg_price | number | Volume-weighted average fill price |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| symbol | string | BTC/USDT | - | Trading pair symbol (e.g. BTC/USDT) |
| side | select | buy | buy | sell | Order direction: buy or sell |
| order_type | select | market | market | limit | Market (instant) or limit (at price) |
| one_at_a_time | boolean | true | - | Skip if already in a position (prevents stacking orders every tick) |
Close Position
Close entire position
Closes your entire open position for a symbol at market price. Use this for exit signals, stop loss triggers, or as part of a Kill Switch to flatten all exposure immediately.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| exchange | exchange | Yes | Active exchange connection for order submission |
| trigger | boolean | No | When connected, only closes when true. When not connected, closes every tick. |
Outputs
| Name | Type | Description |
|---|---|---|
| closed | boolean | True if position was successfully closed |
| order_id | string | Exchange-assigned order identifier |
| avg_price | number | Average close price |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| symbol | string | BTC/USDT | - | Trading pair to close position for |
Cancel Order
Cancel pending order
Cancels an open limit order by its order ID. Use this to cancel unfilled orders when market conditions change or when your strategy decides to exit a pending position.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| exchange | exchange | Yes | Active exchange connection |
| order_id | string | Yes | ID of the order to cancel |
Outputs
| Name | Type | Description |
|---|---|---|
| cancelled | boolean | True if successfully cancelled |
| status | string | Updated order status after attempt |
Order Status
Check order status
Checks the current status of a placed order — whether it's open, filled, partially filled, or cancelled. Use this to track order execution and trigger follow-up actions.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| exchange | exchange | Yes | Active exchange connection |
| order_id | string | Yes | ID of the order to check |
Outputs
| Name | Type | Description |
|---|---|---|
| status | string | Current status: open, filled, partial, cancelled |
| filled_size | number | Quantity filled so far |
| remaining_size | number | Quantity still unfilled |
| avg_price | number | Volume-weighted average fill price |
TWAP Order
statefulSplit order into time-weighted chunks
Takes a total order size and splits it into equal slices executed at regular intervals over a time window. For example, buying 1 BTC over 10 minutes in 10 slices = 0.1 BTC every minute. Reduces market impact for larger orders.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| exchange | exchange | Yes | Exchange connection |
| size | number | Yes | Total order size to execute |
| trigger | boolean | No | Signal to start TWAP execution |
Outputs
| Name | Type | Description |
|---|---|---|
| is_active | boolean | True while TWAP is executing slices |
| filled_size | number | Total size filled so far |
| avg_price | number | Volume-weighted average fill price |
| slices_done | number | Number of slices completed |
| is_complete | boolean | True when all slices are filled |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| symbol | string | - | Trading pair (e.g., BTC/USDT) | |
| side | select | buy | buy | sell | Order side |
| num_slices | number | 10 | 2 – 100 | Number of slices to split the order into |
| duration_minutes | number | 10 | 1 – 1440 | Total duration over which to execute all slices |
Slippage Estimator
Estimate fill price from order book depth
Simulates walking the order book for a given order size to estimate the actual fill price. Outputs expected slippage as both a dollar amount and a percentage. Use this to skip trades when slippage would be too high.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| exchange | exchange | Yes | Exchange connection |
| size | number | Yes | Order size to estimate slippage for |
Outputs
| Name | Type | Description |
|---|---|---|
| estimated_price | number | Expected volume-weighted average fill price |
| slippage_pct | number | Expected slippage as percentage of mid-price |
| slippage_amount | number | Absolute slippage in quote currency |
| is_acceptable | boolean | True if slippage is within max_slippage_pct |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| symbol | string | - | Trading pair (e.g., BTC/USDT) | |
| side | select | buy | buy | sell | Which side to estimate (buy walks asks, sell walks bids) |
| max_slippage_pct | number | 0.5 | 0.01 – 5 | Maximum acceptable slippage percentage |
Smart Order Router
Route orders to exchange with best price
Fetches the current price from all connected exchanges and selects the one with the best price for your order side (lowest ask for buys, highest bid for sells). Only uses exchanges where the user has connected API keys.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| size | number | Yes | Order size to route |
| trigger | boolean | No | Signal to trigger routing |
Outputs
| Name | Type | Description |
|---|---|---|
| best_exchange | string | Name of the exchange with the best price |
| best_price | number | Best available price found |
| price_diff_pct | number | Price difference between best and worst venue (%) |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| symbol | string | - | Trading pair to compare across exchanges | |
| side | select | buy | buy | sell | Order side (determines best price logic) |
| exchanges | string | binance,okx,bybit | - | Comma-separated exchange IDs to compare |
Flow Control(4)
Delay
Wait before continuing
Pauses the flow for a set duration before passing the signal along. Useful for rate-limiting API calls, waiting between order steps, or adding cooldown periods between trades.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| trigger | any | Yes | Signal to delay before forwarding |
Outputs
| Name | Type | Description |
|---|---|---|
| trigger | any | The same signal, emitted after the delay |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| delay_ms | number | 1000 | 100 – 60000 | Delay duration in milliseconds |
If/Else
Conditional branch
Routes your flow into two paths based on a true/false condition. The value passes to the 'true' branch when the condition is met, or the 'false' branch otherwise — like an if/else in code.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| condition | boolean | Yes | Boolean that determines which branch |
| value | any | Yes | Data to route to one of the branches |
Outputs
| Name | Type | Description |
|---|---|---|
| true_branch | any | Receives value when condition is true |
| false_branch | any | Receives value when condition is false |
Split
Split flow into multiple branches
Duplicates the input signal to three output branches. Use this to run the same data through multiple independent processing paths — like sending price data to different indicator chains simultaneously.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| input | any | Yes | Signal or data to duplicate to all branches |
Outputs
| Name | Type | Description |
|---|---|---|
| branch_1 | any | First copy of the input |
| branch_2 | any | Second copy of the input |
| branch_3 | any | Third copy of the input |
Merge
Merge multiple branches
Combines multiple flow branches back into one. In 'any' mode, the first available value passes through. In 'all' mode, all branches must have values. Use after a Split to recombine paths.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| branch_1 | any | No | First branch input |
| branch_2 | any | No | Second branch input |
| branch_3 | any | No | Third branch input |
Outputs
| Name | Type | Description |
|---|---|---|
| output | any | Merged result from the branches |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| mode | select | any | any | all | 'any' passes first available, 'all' waits for all |
Alerts & Logging(8)
Logger
Log data for debugging
Writes values to the log so you can inspect what's happening inside your flow. Add it anywhere to debug — check indicator values, see what conditions are firing, or trace signal flow.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| data | any | Yes | Any value to log for inspection |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| level | select | info | debug | info | warn | error | Log severity level |
| label | string | - | Optional label prefix for the log entry |
Alert
Send alert notification
Sends you a notification when a condition triggers. Choose from app notifications, email, Telegram, Slack, or webhooks. Use it to stay informed about trade entries, exits, or risk events.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| trigger | boolean | Yes | Boolean that triggers the alert when true |
| message | string | No | Custom message (overrides default) |
Outputs
| Name | Type | Description |
|---|---|---|
| sent | boolean | True if the alert was dispatched |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| channel | select | app | app | email | telegram | slack | webhook | Notification delivery channel |
| default_message | string | Alert triggered | - | Message when no custom message connected |
Metrics
Emit metrics for monitoring
Records a numeric metric with optional tags for monitoring dashboards. Use it to track custom KPIs like win rate, average PnL, or regime transitions over time.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| value | number | Yes | Numeric metric value to record |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| metric_name | string | custom_metric | - | Name/key for the metric in dashboards |
| tags | string | - | Comma-separated key:value tags for grouping |
Telegram Alert
Send notifications to user's Telegram bot
Sends a message to the user's own Telegram bot. First, create a bot via @BotFather, get the bot token, and find your chat ID by messaging @userinfobot. The message template supports variables: {symbol}, {side}, {price}, {size}, {pnl}.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| trigger | boolean | Yes | Send when true |
| price | number | No | Price to include in message |
| size | number | No | Size to include in message |
| pnl | number | No | P&L to include in message |
Outputs
| Name | Type | Description |
|---|---|---|
| sent | boolean | True if message was sent successfully |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| bot_token | string | - | Telegram bot token from @BotFather | |
| chat_id | string | - | Telegram chat ID to send to | |
| message_template | string | Trade Alert: {side} {symbol} @ {price} | - | Message template with {symbol}, {side}, {price}, {size}, {pnl} variables |
Discord Webhook
Post to user's Discord channel via webhook
Sends an embed message to a Discord channel via webhook URL. To get a webhook URL: Server Settings → Integrations → Webhooks → New Webhook. The embed includes trade details with color-coded P&L.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| trigger | boolean | Yes | Send when true |
| price | number | No | Price for embed |
| size | number | No | Size for embed |
| pnl | number | No | P&L for embed |
Outputs
| Name | Type | Description |
|---|---|---|
| sent | boolean | True if webhook post succeeded |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| webhook_url | string | - | Discord webhook URL | |
| title | string | Trade Alert | - | Embed title |
| symbol | string | - | Symbol to display in embed |
Email Alert
Send email via user's SMTP/API
Sends email notifications using the user's own email service. Supports SendGrid API keys. Useful for trade alerts, daily summaries, or error notifications.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| trigger | boolean | Yes | Send when true |
| price | number | No | Price for email body |
| size | number | No | Size for email body |
| pnl | number | No | P&L for email body |
Outputs
| Name | Type | Description |
|---|---|---|
| sent | boolean | True if email was sent |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| api_key | string | - | SendGrid API key | |
| from_email | string | - | Sender email address | |
| to_email | string | - | Recipient email address | |
| subject | string | Trade Alert | - | Email subject line |
Trade Journal
statefulAuto-log trades with full details
Automatically records every trade entry and exit with full details: timestamp, symbol, side, entry price, exit price, P&L, and duration. All entries are saved and can be exported as CSV.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| trigger | boolean | Yes | Log when true (connect to order fill events) |
| entry_price | number | No | Trade entry price |
| exit_price | number | No | Trade exit price (for closing trades) |
| size | number | No | Trade size |
| pnl | number | No | Realized P&L |
Outputs
| Name | Type | Description |
|---|---|---|
| logged | boolean | True if entry was logged successfully |
| trade_count | number | Total number of trades logged in this session |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| symbol | string | - | Trading pair | |
| side | select | buy | buy | sell | Trade side |
| note | string | - | Optional note/tag for this trade (e.g., 'RSI reversal') |
Performance Tracker
statefulTrack win rate, Sharpe ratio, and P&L in real time
Aggregates trade results to compute real-time performance metrics: total P&L, win rate, average win/loss, Sharpe ratio, and profit factor. Connect trade P&L values as they close to keep a running scorecard of your strategy.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| trade_pnl | number | Yes | P&L of the latest closed trade |
| trigger | boolean | Yes | True when a trade has just closed |
Outputs
| Name | Type | Description |
|---|---|---|
| total_pnl | number | Cumulative P&L across all trades |
| win_rate | number | Percentage of winning trades (0-100) |
| sharpe | number | Annualised Sharpe ratio of trade returns |
| profit_factor | number | Gross profit / gross loss |
| avg_win | number | Average winning trade amount |
| avg_loss | number | Average losing trade amount |
| trade_count | number | Total number of trades tracked |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| risk_free_rate | number | 0 | 0 – 20 | Annual risk-free rate (%) for Sharpe calculation |
Time & Sessions(3)
Trading Session
Check current trading session
Identifies which major trading session is active (Asia, Europe, US) based on UTC time. Different sessions have different volatility and volume profiles — use this to adjust your strategy accordingly.
Outputs
| Name | Type | Description |
|---|---|---|
| session | string | Name of the active trading session |
| is_asia | boolean | True during Asia hours (00:00-08:00 UTC) |
| is_europe | boolean | True during Europe hours (07:00-16:00 UTC) |
| is_us | boolean | True during US hours (13:00-21:00 UTC) |
Time Window
Check if within time window
Outputs true only during specified hours and days. Use this to restrict trading to specific times — for example, only trade during the US session on weekdays when liquidity is highest.
Outputs
| Name | Type | Description |
|---|---|---|
| in_window | boolean | True if current time is within the window |
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
| start_hour_utc | number | 9 | 0 – 23 | Window start hour in UTC |
| end_hour_utc | number | 17 | 0 – 23 | Window end hour in UTC |
| days | string | mon,tue,wed,thu,fri | - | Active days (e.g. mon,tue,wed,thu,fri) |
Is Weekend
Check if current time is weekend
Outputs true on Saturday and Sunday (UTC). Crypto markets trade 24/7 but weekends typically have lower liquidity and higher manipulation risk. Use this to reduce size or skip trades on weekends.
Outputs
| Name | Type | Description |
|---|---|---|
| is_weekend | boolean | True on Saturday and Sunday (UTC) |