// This Pine Script® code is licensed under Apache-2.0
// SPDX-License-Identifier: Apache-2.0
// © PineForge contributors 2026
//
// PF probe 18 — EMA-ribbon stack + var-int transition tracker
// Purpose: parity test for 3-EMA stacking (fast > mid > slow / fast < mid < slow)
// with `var int prevDir` to suppress duplicate same-direction entries.
//
//@version=6
strategy("EMA Ribbon", overlay=true, initial_capital=1000000, process_orders_on_close=false, pyramiding=1, commission_type=strategy.commission.percent, commission_value=0, slippage=0, default_qty_type=strategy.fixed, default_qty_value=1)
// === Inputs ===
fastLen = input.int(8, "Fast EMA", minval=2)
midLen = input.int(21, "Mid EMA", minval=5)
slowLen = input.int(55, "Slow EMA", minval=10)
// === Three EMAs ===
emaFast = ta.ema(close, fastLen)
emaMid = ta.ema(close, midLen)
emaSlow = ta.ema(close, slowLen)
// === Check stack order ===
bullStack = emaFast > emaMid and emaMid > emaSlow
bearStack = emaFast < emaMid and emaMid < emaSlow
// === Track transitions ===
var int prevDir = 0
if bullStack and prevDir != 1
strategy.entry("Long", strategy.long)
prevDir := 1
if bearStack and prevDir != -1
strategy.entry("Short", strategy.short)
prevDir := -1
if not bullStack and not bearStack
prevDir := 0
plot(emaFast, "Fast", color=color.blue)
plot(emaMid, "Mid", color=color.orange)
plot(emaSlow, "Slow", color=color.red)