Systemicalpha

(Bullish) CrossOver

systemic:core-coIndicatorsfunction1 cr

Inputs

NameTypeDescription
First Datasetfloatarray- **Description**; The first dataset typically represents a time series of values that could be a moving average (e.g., a short-term moving average like a 5-day SMA) or any other indicator used in trading.
Second Datasetfloatarray- **Description**; The second dataset represents another time series of values, often a longer-term moving average (e.g., a 20-day SMA) or a different trading indicator.

Outputs

NameTypeDescription
CrossOverbooleanarray- **(Bullish Crossover)**;

The Crossover module detects the precise moment when one data series crosses above another—a classic bullish signal in technical analysis. This simple but powerful concept underpins some of the most widely-used trading strategies in the world.


What Is a Crossover?

A crossover occurs when two lines (typically moving averages, indicators, or price vs. a reference) switch positions:

graph LR
    subgraph Before["Before Crossover"]
        A1["Fast Line: BELOW"]
        A2["Slow Line: ABOVE"]
    end
    
    subgraph Cross["⚡ Crossover Moment"]
        B["Lines Intersect"]
    end
    
    subgraph After["After Crossover"]
        C1["Fast Line: ABOVE"]
        C2["Slow Line: BELOW"]
    end
    
    Before --> Cross --> After

The module outputs True at the exact moment the first dataset crosses above the second (a bullish cross), False at every other bar where the comparison is possible, and null where it is not (see Missing Data below). For the bearish direction, use the Crossunder module.


The Mathematics

The crossover compares each bar against the last observed bar before it — call it pp:

CrossOvert={True,if (Ap−Bp)≤0 and (At−Bt)>0False,otherwise\text{CrossOver}_t = \begin{cases} \text{True}, & \text{if } (A_{p} - B_{p}) \le 0 \text{ and } (A_t - B_t) > 0 \\ \text{False}, & \text{otherwise} \end{cases}

Where:

  • AtA_t is the first dataset at time tt
  • BtB_t is the second dataset at time tt
  • pp is the most recent bar before tt where both datasets have data

Note: This is a bullish-only signal — True only when the first dataset moves from at-or-below to above the second (standard ta.crossover semantics). A downward cross returns False; use the Crossunder module to detect it. On an uninterrupted daily series pp is simply t−1t-1; across a weekend or data gap it is the last bar that actually traded (see Missing Data).


Missing Data

A missing (null) datapoint — a data gap or a closed-market slot — produces a null at the same position in the output. The signal is never faked with substitute values.

  • Gaps are bridged, not broken: the cross is evaluated between the last two bars that actually have data. A Friday-close-to-Monday-open cross fires True on Monday — the weekend nulls stay null, and no signal is lost.
  • The first bar is always null: a crossover needs a previous bar to compare against, and the window's oldest bar has none. The same applies to the first bar with data when the series starts with a gap.
  • Sporadic outage gaps: if data drops out mid-session, the cross is computed against the last bar before the gap, so a cross that happened during the gap surfaces on the first bar after it — delayed, never destroyed.
  • Live execution returns exactly one datapoint — the newest — which is null when the current bar's data is missing.

Classic Trading Strategies

The Golden Cross

Perhaps the most famous crossover strategy in equities trading:

Fast LineSlow LineSignal
50-day SMA200-day SMAGolden Cross (Bullish)
flowchart TD
    SMA50["50-Day SMA"]
    SMA200["200-Day SMA"]
    CO["Crossover Module"]
    Signal{"Golden Cross?"}
    Buy["📈 Bullish Signal"]
    Wait["Wait..."]
    
    SMA50 --> CO
    SMA200 --> CO
    CO --> Signal
    Signal -->|True| Buy
    Signal -->|False| Wait

The Golden Cross has historically preceded major bull runs in indices like the S&P 500 and Bitcoin. However, it's a lagging signal—by the time it triggers, significant price movement has already occurred.

MACD Signal Line Crossover

The MACD crossing above its signal line is a momentum-based bullish signal:

Fast LineSlow LineInterpretation
MACD LineSignal Line (9-EMA of MACD)Momentum turning bullish

RSI Centerline Cross

RSI crossing above 50 indicates momentum shifting from bearish to bullish territory.


Building a Crossover System

Here's how crossovers fit into a complete trading system:

flowchart TD
    subgraph Data["Price Data"]
        Price["Close Prices"]
    end
    
    subgraph Indicators["Moving Averages"]
        EMA12["EMA(12)"]
        EMA26["EMA(26)"]
    end
    
    subgraph Detection["Signal Detection"]
        CO["Crossover Module"]
        CU["Crossunder Module"]
    end
    
    subgraph Actions["Trading Actions"]
        Buy["🟢 Buy Signal"]
        Sell["🔴 Sell Signal"]
    end
    
    Price --> EMA12 & EMA26
    EMA12 & EMA26 --> CO & CU
    CO --> Buy
    CU --> Sell

Practical Considerations

Combining with Volume

A crossover backed by high volume is more reliable:

ScenarioVolumeReliability
Golden CrossHighStrong confirmation
Golden CrossLowPotential false signal

Avoiding Whipsaws

In sideways markets, crossovers can trigger repeatedly without meaningful price movement. Consider:

  • Adding ADX filter: Only take crossover signals when ADX > 25 (trending market)
  • Waiting for confirmation: Require the crossover to hold for N periods
  • Using longer timeframes: Weekly crossovers are more reliable than hourly

Cryptocurrency Considerations

Crypto markets operate 24/7 with high volatility. Crossovers on 4-hour or daily timeframes tend to be more reliable than those on shorter intervals where noise dominates.


Advantages

  • Simple and intuitive — Easy to understand and implement
  • Time-tested — Decades of use across all asset classes
  • Objective — No ambiguity about when a signal occurs
  • Combinable — Works well with filters and confirmation indicators

Disadvantages

  • Lagging indicator — Signals come after the move has started
  • Whipsaws — Frequent false signals in range-bound markets
  • No magnitude information — A tiny cross and a massive cross look the same
  • Requires context — Works best with trend filters and volume confirmation

Further Reading


Indicator Assessment

---
config:
  xyChart:
    width: 600
    height: 400
  themeVariables:
    xyChart:
      plotColorPalette: "#1abc9c, #e74c3c"
---
xychart-beta horizontal
    title "Bullish Crossover Assessment (Scale: 1-10)"
    x-axis ["Popularity", "Reliability", "Complexity", "Versatility", "Recent Interest"]
    y-axis "Score" 0 --> 10
    bar [10, 6, 2, 10, 7]
    bar [9, 5, 2, 10, 8]

Legend: First bar (teal) = Equities/Forex | Second bar (red) = Cryptocurrency

Dimension Explanations

DimensionEquities/ForexCryptoRationale
Popularity109The Golden Cross is one of the most famous signals in trading. Universal recognition across all platforms and trader education.
Reliability65Lagging signal that works well in trending markets but produces whipsaws in sideways conditions. Crypto volatility increases false signals.
Complexity22Extremely simple concept—does line A cross above line B? No advanced math required.
Versatility1010Applicable to any two comparable series: moving averages, indicators, price vs. threshold. Works on any timeframe or asset.
Recent Interest78Remains a staple of trading education. Very popular in crypto trading communities discussing Golden/Death Cross events.
Rendering diagrams...
© 2026 WanoLabs. All rights reservedAlpha build v0.1.5