Aggregators and Operators
When building conditions inside an Indicator node, you have two tools. Aggregators transform a data feed into a derived value. Operators define how two values are compared. Together they let you express conditions like EMA(12) > EMA(24) or RSI(14) < 30. The statistical aggregators (Z-Score, StdDev, Variance, ATR, True Range) let you build mean-reversion and volatility conditions visually inside one node, no code required.
If you are new to building conditions, start with the Set Entry Conditions guide for a step-by-step walkthrough. This page is the quick reference for every available aggregator and operator once you are comfortable with the basics.
Aggregators
Aggregators take a raw feed and compute a value over a window of time or candles. Set the period or window when you add the aggregator to your condition.
| Aggregator | What it computes |
|---|---|
| SMA | Simple Moving Average. The arithmetic mean of prices over the period. Smoother but slower to react. |
| EMA | Exponential Moving Average. Weights recent prices more heavily than older ones. Responds faster to price changes than SMA. |
| RSI | Relative Strength Index. Measures momentum on a 0-100 scale. Values above 70 are conventionally overbought, and below 30 is oversold. |
| % Change | Percentage price change over a defined time window. Useful for detecting breakouts or relative moves. Returns a decimal, so a 5% move reads as 0.05, not 5. Write the threshold accordingly: % Change > 0.05 catches a 5% move. |
| Lag | The value of the feed from a set number of periods ago. Useful for comparing the current value against an earlier one. |
| RollingSum | The running total of the feed over a rolling window of periods. |
| True Range | The per-candle true range: the largest of the current high-to-low, high-to-previous-close, and low-to-previous-close. A building block for volatility measures. |
| ATR | Average True Range. A moving average of True Range over the period. A standard measure of volatility. |
| ADX | Average Directional Index. Measures how strong a trend is without saying which way it runs. Set the period in candles. |
| Supertrend | An ATR-based trend line that sits below price in an uptrend and above it in a downtrend. Takes a period and a multiplier. |
| MFI | Money Flow Index. Momentum weighted by volume, computed from the HLC3 price and base volume, on a 0-100 scale. |
| Accumulation/Distribution | Buying and selling pressure derived from price and volume across the UTC day. Has no smoothing window. |
| TPO | Daily UTC market profile. Choose which value it returns, the point of control (POC), the value-area high (VAH), or the value-area low (VAL), then set the price row size and the value-area percent. Has no smoothing window. |
| Max | The highest value the feed reached over the period. |
| Min | The lowest value the feed reached over the period. |
| StdDev | Standard deviation of the feed over the period. Measures how much prices are dispersing from the average. |
| Variance | The square of standard deviation. Less commonly used directly, but available for custom formula construction. |
| Z-Score | How many standard deviations the current value sits above or below the period mean. A Z-Score of 2 means the current value is 2 standard deviations above average. |
| MACD | Moving Average Convergence Divergence. Returns the histogram, which is the MACD line minus its signal line. Set the fast and slow periods, 12 and 26 by default. |
| Bollinger Band | A volatility band a set number of standard deviations above or below a moving average. Choose the upper or lower band and set the multiplier, 2 by default. |
MACD and Bollinger Band are single blocks you drop into a condition. You do not have to assemble them out of EMAs and standard deviations by hand, though the parts are all still there if you want a variant the block does not offer.
Operators
Operators define the relationship between two values. Each condition uses one operator.
Comparison operators
Compare two values. The condition is true whenever the relationship holds.
| Operator | True when |
|---|---|
| Greater than ( > ) | The left value is above the right value |
| Less than ( < ) | The left value is below the right value |
| Greater than or equal to ( ≥ ) | The left value is at or above the right value |
| Less than or equal to ( ≤ ) | The left value is at or below the right value |
Arithmetic and functions
Combine or transform values before you compare them. These let one condition do math across feeds and aggregators.
| Operator | What it does |
|---|---|
| + | Adds two values |
| − | Subtracts the right value from the left |
| × | Multiplies two values |
| ÷ | Divides the left value by the right |
| MaxOf | The larger of the values you give it |
| MinOf | The smaller of the values you give it |
| ABS | The absolute value, distance from zero regardless of sign |
For example, Mark Price (BTC) − Mark Price (ETH) builds a spread, and ABS(% Change) > 2 reads true on a 2% move in either direction.
Numbers
Two tiles supply the fixed values you compare against.
| Tile | What it holds |
|---|---|
| Const | A fixed number you type in |
| % | A fixed percentage. Typing 5 stores it as 0.05, which is the form % Change returns, so the two line up without you converting anything |
Crossovers
There is no standalone “crosses above” or “crosses below” operator. A > comparison is true for the whole time the relationship holds, not only at the instant of the cross. To catch the moment of the cross, use the pre-built EMA Crossover or SMA Crossover template in the Indicator node. For a custom crossover, compare two aggregators with > or <.
Combining conditions
When your Indicator has more than one condition, you choose how they combine.
| Combinator | Behavior |
|---|---|
| AND | All conditions must be true at the same time |
| OR | Any one condition being true is enough |
| NOT | Inverts a condition: true when the condition is false |
| M of N | True when at least M of its child conditions are true. Takes 3 to 8 conditions |
You can nest groups. For example: (Condition A AND Condition B) OR Condition C. When one of those groups earns its keep and you want it in more than one strategy, you can save a formula as a reusable custom metric and drop it into any condition as a single block.
M of N: confluence without hand-nesting
AND requires every condition to be true, and OR requires only one. M of N sits in between: give it 3 to 8 conditions and it fires when at least M of them agree. Set it to “2 of 3” and any two of your three signals lining up is enough, no matter which two. This is how you express confluence, the idea that a setup is stronger when several independent signals point the same way, without nesting AND and OR by hand.
M of N sits next to AND, OR, and NOT in the operations toolbox. It works as an entry condition inside an Indicator, and inside an Order node’s close or cancel trigger, so the same voting logic can decide when to get out as well as when to get in.
Examples
EMA crossover
EMA(12) > EMA(24): the short-term average is above the long-term average, a common bullish signal. To detect the moment of the cross rather than the ongoing state, use the EMA Crossover template in the Indicator node.
RSI oversold with price filter
RSI(14) < 30 AND Mark Price > SMA(200): momentum is oversold but the trend is still up.
Volatility expansion
StdDev(20) > 500: recent price dispersion has expanded beyond a threshold, signaling a volatile regime.
Z-Score mean reversion
Z-Score(20) < -2: the price is more than 2 standard deviations below its 20-period mean, a potential reversion setup.
The periods and thresholds above only illustrate the syntax, they are not recommendations. Choose and test your own windows and levels.
The syntax is only half the story. Once a strategy is deployed, how a condition is evaluated against live data is handled by Synchronicity’s oracle system, including what happens when a feed goes stale.