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
- Open the Signals panel in the right sidebar
- Click New Signal
- 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:
| Operator | Meaning | Example |
|---|---|---|
> | Greater than | RSI value > 70 (overbought) |
< | Less than | RSI value < 30 (oversold) |
== | Equal to | MACD histogram == 0 (crossover point) |
+/- | Within range | Price 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:
| Operator | Meaning | Triggers when |
|---|---|---|
is_bullish | Bullish pattern detected | Indicator value > 0 (typically 100) |
is_bearish | Bearish pattern detected | Indicator value < 0 (typically -100) |
is_detected | Any pattern detected | Indicator 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
- Go through the normal signal creation flow -- pick your first source, property, operator, and value
- On the review panel (Step 3), instead of clicking Create, click AND or OR
- The first condition is saved and you're taken back to pick the source and property for the next condition
- Walk through the operator and value steps again for the second condition
- 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 provide live data for running strategies. If you need historical data for backtesting, use External Indicators instead (found in the Indicators panel).