Learn
Composite 2 min read

Buy / Sell Signals

EMA crossover + RSI + volume confluence — the default "something is happening" alarm.

A multi-factor confluence script that fires when momentum, trend and volume agree on a direction.

The idea

Every indicator on its own is noisy. A single RSI dip to 30 means little. An EMA crossover alone gets chopped in sideways markets. But when three independent lenses agree — momentum, trend and volume — the probability of a real move goes up.

Buy / Sell Signals is a minimal implementation of that idea. It scores five inputs on every new candle, keeps only the setups that clear a confluence threshold, and suppresses follow-up triggers for 5 bars.

How it scores

InputBuy pointsSell points
EMA 7 crosses above/below EMA 25+3+3
RSI exits oversold (crosses back above 30) or overbought (back below 70)+2+2
RSI currently extreme (below 30 or above 70)+2+2
Candle reversal (red → green or green → red)+1+1
Current volume above 1.5× 20-bar average (aligned with direction)+1+1

Minimum score to print: 3. Strong signal (✓✓): 5+.

How to use it

  1. Enable the Buy / Sell Signals script in the DataLayerPanel under Scripts.
  2. Green ▲ markers appear under candles that triggered a buy, red ▼ for sells. Double-checked variants have the ✓✓ suffix.
  3. Combine with structural context: a strong buy near a clean support level is very different from a strong buy in mid-range.
  4. Do not trade every signal blindly. A 5-bar gap means you will still get plenty of entries — be selective.

Limits

  • EMA-based core means this script lags. In fast markets it prints after the best entry.
  • RSI-based extremes tilt it toward mean-reversion bias, which misfires in strong trends.
  • Volume confirmation assumes reliable exchange volume. Low-liquidity perps can produce noisy triggers.

Pair it with Trend Following when the market is trending and with Mean Reversion in ranges.

Frequently asked

What does the confluence score actually look like?
EMA crossover = 3 points, RSI zone exit = 2, RSI extreme = 1–2, candle reversal = 1, confirming volume spike = 1. Threshold is 3 for a normal signal, 5 for a strong one.
Why do I sometimes see only one side printing?
The script enforces a 5-bar minimum gap between signals to avoid spam. If a big move prints multiple triggers, only the first clears the cooldown.
Can I use this as a standalone strategy?
No — it is a *confluence detector*, not a complete system. Use it to shortlist candidates, then confirm on the structural layer (trend, support/resistance, higher-timeframe context).