Skip to main content

Signals

Signals are reusable conditions built on top of indicators. They're the bridge between your technical analysis and your trading strategies -- a signal defines when something interesting is happening on the chart.

How signals work

A signal watches a property of an indicator (e.g. the upper band of your Bollinger Bands, or the RSI value) and evaluates a condition. When the condition is met, the signal fires. Strategies can then use these signals as triggers for buy/sell actions.

Each signal has two sides:

  • Source 1 -- An indicator property (e.g. RSI value, MACD histogram)
  • Source 2 -- Either another indicator property or a fixed numeric value

The signal compares these two values using an operator and produces a boolean result: true (triggered) or false (not triggered).

Creating a signal

  1. Open the Signals panel in the right sidebar
  2. Click New Signal
  3. A multi-step wizard guides you through the setup:

Step 1 -- Source and property. Pick which indicator to base this signal on. Only indicators you've already created are available, so add your indicators first. Then choose which output property to watch -- different indicator types expose different properties. For example, Bollinger Bands let you pick upper band, middle band, lower band, or %B value.

Step 2 -- Condition type and operator. Choose between a value comparison (compare against another indicator or a fixed number) or a pattern detection (for candlestick pattern indicators). Then select your operator and, if comparing two indicators, pick the second source and property.

Step 3 -- Review and save. See a summary of your signal with current values and evaluation result. Give it a descriptive name and save.

Operators

Standard comparison operators

These work with any numeric indicator values:

OperatorMeaningExample
>Greater thanRSI value > 70 (overbought)
<Less thanRSI value < 30 (oversold)
==Equal toMACD histogram == 0 (crossover point)
+/-Within rangePrice is within 50 units of the upper Bollinger Band

The +/- operator checks whether the absolute difference between the two values is less than the range you specify. This is useful for "near" or "approaching" conditions where an exact match is unlikely.

Pattern detection operators

These are available when your source indicator is a candlestick pattern indicator (indicators starting with CDL_, such as CDL_DOJI or CDL_ENGULFING). Pattern indicators return special values:

OperatorMeaningTriggers when
is_bullishBullish pattern detectedIndicator value > 0 (typically 100)
is_bearishBearish pattern detectedIndicator value < 0 (typically -100)
is_detectedAny pattern detectedIndicator value is not 0 (bullish or bearish)

Pattern operators only use Source 1 -- you don't need a second source since they check against fixed thresholds.

Using signals in strategies

Once you've created signals, they appear as blocks in the Signals category of the strategy builder. Drag them into your strategy to use them as conditions for entering or exiting trades.

Each signal block has a dropdown with two output modes:

  • is triggered -- Returns true/false. Use this in if-conditions to check whether the signal's condition is currently met.
  • value -- Returns the numeric value of Source 1. Use this when you need the actual number (e.g. the RSI value) rather than just whether a threshold was crossed.

Example: You might create a signal "RSI Overbought" that triggers when RSI > 70. In your strategy, you could use if RSI Overbought is triggered then SELL, or you could use RSI Overbought value to get the actual RSI reading and make more nuanced decisions.

Signals in backtesting

Signals work in backtesting, but with some differences:

  • Standard indicator signals are precomputed for the entire backtest date range before the backtest runs. This means they evaluate correctly at each historical candle.
  • External Sources (live API data) are not available during backtesting since they only provide real-time data. If your strategy uses an external source signal, it won't fire during backtests.
  • External Indicators (historical API data) do work in backtesting. They fetch historical data for the backtest date range and cache it for reuse across multiple backtests.

If a signal can't be evaluated during a backtest (missing data, unavailable source), it defaults to "not triggered" and the value returns null.

Signal design patterns

Here are some effective ways to use signals:

Overbought/Oversold detection -- Create signals for RSI > 70 (overbought) and RSI < 30 (oversold). Use them as entry conditions for mean-reversion strategies.

Trend confirmation -- Create a signal for MACD histogram > 0 (bullish momentum) and use it as a filter alongside your entry logic. Only take long trades when the trend signal confirms.

Volatility conditions -- Create a signal comparing Bollinger Band width or ATR against a threshold. Use it to filter out low-volatility periods where your strategy doesn't perform well.

Multi-indicator confirmation -- Create a compound signal with AND logic that requires multiple indicators to agree. For example: a single "Strong Buy" signal that triggers when RSI < 30 AND MACD histogram > 0 AND Bollinger %B < 0.2. See Compound signals above.

Compound signals (AND/OR)

A single signal checks one condition. Compound signals let you combine multiple conditions with AND or OR logic, so the signal only fires when all conditions are met (AND) or when any one is met (OR).

Example: Instead of creating two separate signals and combining them in your strategy, you can create one compound signal "RSI Oversold AND Bollinger Low" that only triggers when RSI < 30 and Bollinger %B < 0.2.

Creating a compound signal

  1. Go through the normal signal creation flow -- pick your first source, property, operator, and value
  2. On the review panel (Step 3), instead of clicking Create, click AND or OR
  3. The first condition is saved and you're taken back to pick the source and property for the next condition
  4. Walk through the operator and value steps again for the second condition
  5. On the review panel, you'll see all accumulated conditions listed. Click Create to save, or add another condition with AND/OR

You can chain as many conditions as you need. The banner at the top of the form shows your accumulated conditions as you build.

AND vs OR

  • AND -- All conditions must be true for the signal to fire. Use this for confirmation setups where you want multiple indicators agreeing before acting.
  • OR -- Any one condition being true is enough. Use this for catch-all signals where any of several situations should trigger action.

Once you pick AND or OR for the first additional condition, the combinator is locked for that signal -- you can't mix AND and OR in the same signal. This avoids ambiguity about evaluation order.

Compound signal output

When a strategy block reads the value of a compound signal, it returns 1.0 when triggered and 0.0 when not triggered. Individual per-condition values aren't exposed -- compound signals are designed for triggered/not-triggered logic.

The is triggered output works the same as single-condition signals: true when the combined condition is met, false otherwise.

Editing compound signals

When you click a compound signal card to edit it, you'll see a read-only summary of all conditions. Click Start Over to clear everything and rebuild the conditions from scratch. Per-condition editing isn't supported yet -- it's replace-all for now.

When to use compound signals vs strategy logic

Use compound signals when:

  • You want a single named concept that represents a multi-condition situation (e.g. "Strong Buy Setup")
  • You want to see the combined result in the Signals panel without running a strategy
  • You want to share the compound logic as one unit on the marketplace

Use strategy-level logic when:

  • You need different actions for different condition combinations
  • You want to mix AND and OR logic (e.g. "A AND B OR C")
  • The conditions span different timeframes or require sequencing

Signals vs inline comparisons

You can compare indicator values directly in strategy blocks without creating signals. So when should you use signals?

Use signals when:

  • You want to reuse the same condition across multiple strategies
  • You want to monitor the condition visually in the Signals panel
  • The condition is a meaningful concept worth naming (e.g. "Market Overbought")

Use inline comparisons when:

  • The comparison is specific to one strategy
  • It's a simple one-off check that doesn't warrant a named concept

Dependencies

Signals create a dependency chain: Indicators -> Signals -> Strategies.

  • A signal depends on its source indicator(s) existing. If you delete an indicator that a signal uses, the signal can't evaluate.
  • A strategy depends on its signal blocks existing. If you try to delete a signal that strategies reference, you'll see a warning listing the affected strategies.
  • When editing strategies, make sure the signals they use still exist and are configured correctly.

Sharing signals on the marketplace

You can publish signals to the Signal Marketplace where other users can subscribe to them. Click the gear icon on any signal card in your panel to open the publish dialog, where you set a headline, description, category, and price (free or up to $1.00/month).

Subscribers see the signal's name and live state (TRUE/FALSE) in their panel but can't see the internal configuration -- which indicators, operators, and thresholds you use stay private.

Subscribing to signals

Browse available signals at /marketplace/signals. When you subscribe (free or paid), the signal appears in your Signals panel. You can use it in your strategies the same way you'd use your own signals. To remove a subscribed signal, click the X on its card in the panel.

If you subscribed to a free signal and the creator later changes the price, your subscription stays free -- the terms are locked in at the time you subscribe.

For the full guide on publishing, pricing, and earnings, see the Signal Marketplace documentation.

External sources

Click + External Source to create signals based on external API data rather than chart indicators. External sources poll a live API at a configurable interval (default: every 5 minutes) and make the current value available as a signal source for running strategies.

This is useful for incorporating off-chart data like the Fear & Greed Index, funding rates, or on-chain metrics into your live trading logic. You configure the API endpoint, authentication, JSONPath to the value, and refresh interval.

For the full configuration guide, see External Sources.

External Sources vs External Indicators

External Sources provide live data for running strategies. If you need historical data for backtesting, use External Indicators instead (found in the Indicators panel).