Skip to content
← Indicator library
tradingviewoverlayindicatorpinescript-v6

Maclce.AlgoNexta

EMA-trend and MACD-cross overlay with ATR-based risk projections, sizing reference, and confirmed-bar alerts.

Vision Grade

NOT GRADED — VALIDATION INCOMPLETE

Published by AlgoNexta. AlgoNexta builds and documents evidence-first trading tools so you can inspect the logic before using it.About AlgoNextaIndicator libraryAlgoNexta Research
Published Oct 9, 2026#ema#macd#atr#risk-reward#indicator#tradingview#pinescript-v6

Overview

What this indicator does

MAC/ICE V1 is a TradingView overlay indicator that combines an EMA trend filter with MACD signal-line crosses. When a confirmed-bar signal is accepted, it draws a reference entry, ATR-based stop, and 1R, 2R, and 3R projection levels; it does not place orders.

Type
indicator
Category
overlay
Available in
Pine Script
Source
Open — copy or download

How it works

Read the logic before you use it.

Diagram: When it signals
1

When it signals

After EMA and MACD values have warmed up, the default `Signal mode` accepts a buy only when EMA 60 is above EMA 240 and MACD(12,26,9) crosses above its signal line; sell logic is the inverse. The signal must occur on a confirmed bar, ATR(14) must be available and positive, and the script blocks repeat same-direction signals until the opposite direction is accepted.

Diagram: What the overlay shows
2

What the overlay shows

Each accepted signal draws a LONG or SHORT entry at that bar's close and projects the levels `35` bars by default. The white line is the reference entry; the red line is the stop; TP1, TP2, and TP3 mark one, two, and three times the initial risk distance. The label's unit size is a calculation reference, not an order quantity submitted to a broker.

Diagram: How setup status is framed
3

How setup status is framed

The indicator tracks the active drawing as a visual setup rather than a trade. It marks a stop hit, records TP1 and TP2 milestones, closes at TP3, or closes a prior setup when an opposite accepted signal occurs. If a historical OHLC bar reaches both stop and target, the stop is processed first; partial exits and realized P/L are not modeled.

Walkthrough

Watch how it reads the chart.

Live market chart

The logic on real candles.

Backtest evidence

What the numbers actually show.

E0 · Reconstructed reference

algonexta-reference · Yahoo Finance · EURUSD · 1h

Net profit

0.0302

Max drawdown

$0.0103

Trades

69

Symbol · TF

EURUSD · 1h

Equity curve

Reference trades (138)▾
TimeSidePrice
Aug 14, 03:00 AMlong1.15407
Aug 14, 11:00 AMexit1.15716
Aug 14, 08:00 PMshort1.15727
Aug 17, 12:00 AMexit1.15833
Aug 17, 01:00 AMlong1.15861
Aug 17, 11:00 AMexit1.15955
Aug 17, 11:00 AMshort1.15955
Aug 18, 02:00 PMexit1.15848
Aug 18, 02:00 PMlong1.15848
Aug 18, 07:00 PMexit1.15781
Aug 18, 07:00 PMshort1.15781
Aug 19, 02:00 AMexit1.15880
Aug 19, 02:00 AMlong1.15861
Aug 19, 12:00 PMexit1.16275
Aug 20, 02:00 AMshort1.16781
Aug 20, 07:00 AMexit1.16927
Aug 20, 09:00 AMlong1.17110
Aug 20, 10:00 AMexit1.17000
Aug 20, 10:00 AMshort1.17000
Aug 21, 05:00 AMexit1.17014
Aug 21, 05:00 AMlong1.17014
Aug 21, 07:00 AMexit1.16945
Aug 21, 07:00 AMshort1.16945
Aug 21, 08:00 AMexit1.17086
Aug 21, 12:00 PMshort1.16945
Aug 24, 05:00 PMexit1.16601
Aug 24, 09:00 PMlong1.16673
Aug 25, 04:00 AMexit1.16591
Aug 25, 04:00 AMshort1.16591
Aug 25, 08:00 AMexit1.16687
Aug 25, 08:00 AMlong1.16713
Aug 26, 02:00 AMexit1.16713
Aug 26, 02:00 AMshort1.16713
Aug 26, 08:00 AMexit1.16804
Aug 26, 11:00 PMlong1.16591
Aug 27, 09:00 AMexit1.16511
Aug 27, 09:00 AMshort1.16455
Aug 27, 01:00 PMexit1.16552
Aug 27, 03:00 PMlong1.16564
Aug 28, 04:00 AMexit1.16496
Aug 28, 04:00 AMshort1.16496
Aug 28, 12:00 PMexit1.16537
Aug 28, 12:00 PMlong1.16537
Aug 28, 02:00 PMexit1.16399
Aug 28, 02:00 PMshort1.16252
Aug 31, 04:00 AMexit1.15942
Aug 31, 04:00 AMlong1.15942
Sep 1, 12:00 AMexit1.16248
Sep 1, 04:00 AMshort1.16090
Sep 1, 10:00 PMexit1.15969

Showing the most recent 50 of 138 reference trades.

⚠Executed from the versioned AlgoNexta IR on the same OHLC dataset used by the chart.

⚠This is an independent reference backtest; TradingView Strategy Tester remains the official comparison.

⚠This is an AI-reconstructed approximation of the script’s logic, not an execution of the exact source — verify the real script in TradingView Strategy Tester.

Vision Grade

What was measured, and how confident we are in it.

Vision Grade Standard v1.0

NOT GRADED — VALIDATION INCOMPLETE

Vision Grade measures the strength of validation evidence, not the probability of future profit. A score of 82 is not an 82% chance of profit.

No grade is published until every mandatory gate has been verified. The measurements below are preliminary evidence, not a grade.

G1 No look-ahead bias — not yet verified

G2 No undisclosed repainting — not yet verified

G3 Realistic costs included — passed

G4 Genuine out-of-sample evidence — not yet verified

G5 Reproducible evaluation — not yet verified

Probabilistic Sharpe (PSR vs 0): 0.01 · Deflated Sharpe (DSR): not computed — no registered trial count

Audit: standard v1.0 · engine 1.0.0 · strategy v1+sha256:c86235ab080981c6 · data sha256:b74238f0ba755ac16681a152db9ccfd9 · evaluated 2026-10-09

Legacy VG-Signal · E2 · LOW confidence · 33.5/100

The measured component from the earlier VG engine, kept for transparency. It is not the VG score.

Legacy VG-Signal components (not part of the VG score)

Predictive power

22

Trading performance

9.4

Robustness

40

Risk

94.1

Signal-Based Performance

Signals

69

Win rate

36.2%

Profit factor

0.47

Max drawdown

0.0324

Robustness — chronological out-of-sample split

In-sample IC

—

Out-of-sample IC

—

OOS retention

—

OOS_SAMPLE_TOO_SMALL

ic here is a pooled event-conditional Spearman rank correlation (signal_strength vs forward return), not a cross-sectional factor IC — see methodology.

⚠Vision Grade measures the strength of statistical and trading-quality evidence. It does not predict future returns.

⚠A high Information Coefficient does not guarantee profitability.

⚠Trading Performance here is Signal-Based Performance, not an execution backtest against the original source.

⚠Historical results do not guarantee future performance.

⚠Only 69 valid signals (config minimum is 100) — results below are directional, not reliable.

⚠Horizon 10: 1 signals dropped (not enough forward OHLC bars).

⚠Horizon 20: 1 signals dropped (not enough forward OHLC bars).

⚠Horizon 50: 4 signals dropped (not enough forward OHLC bars).

Full breakdown

How the script behaves.

About AlgoNexta

Published by AlgoNexta, an evidence-first platform for building, reviewing, and documenting algorithmic trading tools. This page explains the script's actual logic and intended use; it does not promise profitability or replace verification in TradingView.

MAC/ICE V1 is a TradingView overlay indicator that combines an EMA trend filter with MACD signal-line crosses. When a confirmed-bar signal is accepted, it draws a reference entry, ATR-based stop, and 1R, 2R, and 3R projection levels; it does not place orders.

What it watches

  • Source defaults to close.
  • The trend filter compares Short EMA 60 with Long EMA 240.
  • Bullish: EMA 60 is above EMA 240.
  • Bearish: EMA 60 is below EMA 240.
  • MACD uses MACD Fast 12, MACD Slow 26, and MACD Signal 9.
  • The default Signal mode is EMA trend MACD crosses:
  • Buy: bullish EMA alignment plus a MACD-line crossover above its signal line.
  • Sell: bearish EMA alignment plus a MACD-line crossunder below its signal line.
  • In Exact cTrader mode, buys additionally require the MACD line below zero and sells require it above zero.

Signals are accepted only after the candle is confirmed, an ATR value is available and greater than zero, and the direction differs from the last accepted signal. For example, a bullish EMA alignment without a MACD crossover produces no buy marker. A second buy is ignored until a valid sell has been accepted.

Reading the chart

  • The fast EMA is colored with Buy Color by default teal when EMA 60 is above EMA 240, otherwise Sell Color by default red. The slow EMA is silver.
  • Show EMAs and Shade EMA Trend control the EMA plots and the fill between them.
  • A teal upward triangle below a bar is an accepted buy; a red downward triangle above a bar is an accepted sell.
  • Each accepted setup draws:
  • a white entry line;
  • a red stop-loss line;
  • teal TP1, TP2, and TP3 levels at 1R, 2R, and 3R;
  • red and teal shaded risk/reward areas.
  • The status label shows the configured Account Risk % and a suggested unit size. With defaults, it uses 1.0% of an 10000.0 account, but the calculation also depends on Value of 1.0 Price Move per Unit (1.0 by default). Verify this value against the instrument and broker contract specification.

Risk distance is ATR(14) multiplied by SL ATR Multiplier 1.5. Levels extend for Level Projection Bars 35, while active setups continue extending as new bars arrive. Historical Setups 50 controls how many prior setup drawings are retained, subject to TradingView drawing limits.

Timing, exits, and alerts

This is an indicator, not a strategy(): its entry, stop, target, and size drawings are references rather than broker orders or filled trades. An active setup is marked closed if its stop or TP3 is touched, or if an accepted opposite signal arrives. On an OHLC historical bar where both the stop and a target are touched, the code gives the stop priority. TP1 and TP2 are visual milestones only; the script does not model partial exits or realized P/L.

Create TradingView alerts from AlgoNexta MAC/ICE Buy, AlgoNexta MAC/ICE Sell, or AlgoNexta MAC/ICE Setup Closed. Buy and sell alerts use accepted, confirmed-bar signals rather than intrabar crosses.

The source does not prescribe a market or timeframe. Because it uses 60/240 EMAs, MACD, and ATR, test the settings on the specific symbol and chart interval you use. Signals can lag because they depend on moving averages and a completed MACD cross; no signal should be read as a forecast or a guarantee. This script is not financial advice; use TradingView Strategy Tester or separate testing as the source of truth for historical and live results.

Source

Full source code, in every platform.

maclce-algonexta.pine · 198 lines · 11.1 KB

Not yet verified on the native platform — test it before relying on it.

The original uploaded source.

Download .pine
// ============================================================================
// © algonexta
// This script is for education and research; it does not guarantee results.
// Verify this source in TradingView before use.
// ============================================================================

//@version=6
indicator("AlgoNexta MAC/ICE V1", "MAC/ICE V1", overlay = true, max_labels_count = 500, max_lines_count = 500)

// Signals
string GROUP_SIGNAL = "Signal Inputs"
float source = input.source(close, "Source", group = GROUP_SIGNAL)
int shortEmaPeriod = input.int(60, "Short EMA", minval = 1, group = GROUP_SIGNAL)
int longEmaPeriod = input.int(240, "Long EMA", minval = 1, group = GROUP_SIGNAL)
int macdFastPeriod = input.int(12, "MACD Fast", minval = 1, group = GROUP_SIGNAL)
int macdSlowPeriod = input.int(26, "MACD Slow", minval = 1, group = GROUP_SIGNAL)
int macdSignalPeriod = input.int(9, "MACD Signal", minval = 1, group = GROUP_SIGNAL)
string signalMode = input.string("EMA trend MACD crosses", "Signal mode", options = ["Exact cTrader", "EMA trend MACD crosses"], group = GROUP_SIGNAL)

// Risk management
string GROUP_RISK = "Risk Management"
int atrPeriod = input.int(14, "ATR Period", minval = 1, group = GROUP_RISK)
float atrMultiplier = input.float(1.5, "SL ATR Multiplier", minval = 0.1, step = 0.1, group = GROUP_RISK)
float riskPercent = input.float(1.0, "Account Risk %", minval = 0.1, maxval = 100, step = 0.1, group = GROUP_RISK)
float accountBalance = input.float(10000.0, "Account Balance", minval = 0.0, step = 100.0, group = GROUP_RISK)
float unitPointValue = input.float(1.0, "Value of 1.0 Price Move per Unit", minval = 0.000001, step = 0.01, group = GROUP_RISK, tooltip = "Set this to the cash P/L of one trading unit when price moves by 1.0. For XAUUSD, one ounce is commonly 1; verify with your broker.")
int projectionBars = input.int(35, "Level Projection Bars", minval = 5, maxval = 500, group = GROUP_RISK)
int historicalSetups = input.int(50, "Historical Setups", minval = 1, maxval = 65, group = GROUP_RISK, tooltip = "Number of previous signal risk boxes to keep on the chart.")

// Appearance
string GROUP_DISPLAY = "Appearance"
bool showEma = input.bool(true, "Show EMAs", group = GROUP_DISPLAY)
bool shadeTrend = input.bool(true, "Shade EMA Trend", group = GROUP_DISPLAY)
bool showPriceLabels = input.bool(true, "Show Level Prices", group = GROUP_DISPLAY)
color buyColor = input.color(color.rgb(0, 210, 150), "Buy Color", group = GROUP_DISPLAY)
color sellColor = input.color(color.rgb(255, 72, 88), "Sell Color", group = GROUP_DISPLAY)

float emaShort = ta.ema(source, shortEmaPeriod)
float emaLong = ta.ema(source, longEmaPeriod)
[macdLine, macdSignalLine, _] = ta.macd(source, macdFastPeriod, macdSlowPeriod, macdSignalPeriod)
float atrValue = ta.atr(atrPeriod)

bool bullish = emaShort > emaLong
bool bearish = emaShort < emaLong
bool macdCrossUp = ta.crossover(macdLine, macdSignalLine)
bool macdCrossDown = ta.crossunder(macdLine, macdSignalLine)
bool exactBuy = bullish and macdLine < 0 and macdCrossUp
bool exactSell = bearish and macdLine > 0 and macdCrossDown
bool rawBuy = signalMode == "Exact cTrader" ? exactBuy : bullish and macdCrossUp
bool rawSell = signalMode == "Exact cTrader" ? exactSell : bearish and macdCrossDown

color transparent = color.new(color.white, 100)
shortPlot = plot(showEma ? emaShort : na, "Fast EMA", color = color.new(bullish ? buyColor : sellColor, 5), linewidth = 2)
longPlot = plot(showEma ? emaLong : na, "Slow EMA", color = color.new(color.silver, 25), linewidth = 2)
fill(shortPlot, longPlot, color = shadeTrend and showEma ? color.new(bullish ? buyColor : sellColor, 90) : transparent, title = "Trend Shade")

// Signals must alternate: after BUY, another BUY is ignored until a valid SELL,
// and vice versa. Risk levels themselves remain active until SL, TP3, or reversal.
var bool tradeActive = false
var int tradeDirection = 0
var int lastSignalDirection = 0
var int entryBar = na
var float entryPrice = na
var float stopPrice = na
var float tp1Price = na
var float tp2Price = na
var float tp3Price = na
var int reachedR = 0

var line entryLine = na
var line stopLine = na
var line tp1Line = na
var line tp2Line = na
var line tp3Line = na
var linefill riskFill = na
var linefill rewardFill = na
var label entryLabel = na
var label stopLabel = na
var label tp1Label = na
var label tp2Label = na
var label tp3Label = na
var label statusLabel = na

// Keep completed setups visible. The arrays let us remove only the oldest
// setup when the user-selected history limit is exceeded.
var array<line> setupLines = array.new<line>()
var array<linefill> setupFills = array.new<linefill>()
var array<label> setupLabels = array.new<label>()

trimSetupHistory() =>
    while array.size(setupLines) > historicalSetups * 5
        for i = 0 to 4
            line.delete(array.shift(setupLines))
        for i = 0 to 1
            linefill.delete(array.shift(setupFills))
        for i = 0 to 5
            label.delete(array.shift(setupLabels))

bool acceptedBuy = barstate.isconfirmed and rawBuy and not rawSell and lastSignalDirection != 1 and not na(atrValue) and atrValue > 0
bool acceptedSell = barstate.isconfirmed and rawSell and not rawBuy and lastSignalDirection != -1 and not na(atrValue) and atrValue > 0

// Resolve an existing setup on the completed candle BEFORE accepting a reversal.
// On OHLC bars, if SL and TP are both touched, SL takes precedence.
if barstate.isconfirmed and tradeActive and bar_index > entryBar
    bool stopHit = tradeDirection == 1 ? low <= stopPrice : high >= stopPrice
    bool tp1Hit = tradeDirection == 1 ? high >= tp1Price : low <= tp1Price
    bool tp2Hit = tradeDirection == 1 ? high >= tp2Price : low <= tp2Price
    bool tp3Hit = tradeDirection == 1 ? high >= tp3Price : low <= tp3Price
    if stopHit
        tradeActive := false
        label.set_text(statusLabel, "SL HIT\n-1R (full-position reference)")
        label.set_color(statusLabel, sellColor)
        line.set_color(stopLine, color.white)
    else
        if tp1Hit and reachedR < 1
            reachedR := 1
            line.set_style(tp1Line, line.style_solid)
            line.set_width(tp1Line, 2)
        if tp2Hit and reachedR < 2
            reachedR := 2
            line.set_style(tp2Line, line.style_solid)
            line.set_width(tp2Line, 2)
        if tp3Hit
            reachedR := 3
            tradeActive := false
            label.set_text(statusLabel, "TP3 HIT\n+3R (full-position reference)")
            label.set_color(statusLabel, buyColor)
            line.set_color(tp3Line, color.white)

if acceptedBuy or acceptedSell
    if tradeActive
        tradeActive := false
        label.set_text(statusLabel, "REVERSED\nMax TP touched: " + str.tostring(reachedR) + "R (not realized P/L)")
        label.set_color(statusLabel, color.gray)
    tradeActive := true
    tradeDirection := acceptedBuy ? 1 : -1
    lastSignalDirection := tradeDirection
    entryBar := bar_index
    entryPrice := close
    float riskDistance = atrValue * atrMultiplier
    float riskCash = accountBalance * riskPercent / 100.0
    float suggestedUnits = riskCash / (riskDistance * unitPointValue)
    stopPrice := entryPrice - tradeDirection * riskDistance
    tp1Price := entryPrice + tradeDirection * riskDistance
    tp2Price := entryPrice + tradeDirection * riskDistance * 2.0
    tp3Price := entryPrice + tradeDirection * riskDistance * 3.0
    reachedR := 0
    int x2 = bar_index + projectionBars
    color directionColor = tradeDirection == 1 ? buyColor : sellColor
    entryLine := line.new(bar_index, entryPrice, x2, entryPrice, color = color.white, width = 2)
    stopLine := line.new(bar_index, stopPrice, x2, stopPrice, color = sellColor, width = 2)
    tp1Line := line.new(bar_index, tp1Price, x2, tp1Price, color = color.new(buyColor, 35), style = line.style_dashed)
    tp2Line := line.new(bar_index, tp2Price, x2, tp2Price, color = color.new(buyColor, 15), style = line.style_dashed)
    tp3Line := line.new(bar_index, tp3Price, x2, tp3Price, color = buyColor, width = 2)
    riskFill := linefill.new(entryLine, stopLine, color.new(sellColor, 88))
    rewardFill := linefill.new(entryLine, tp3Line, color.new(buyColor, 91))
    string priceSuffix = showPriceLabels ? "  " + str.tostring(entryPrice, format.mintick) : ""
    entryLabel := label.new(x2, entryPrice, (tradeDirection == 1 ? "LONG" : "SHORT") + " ENTRY" + priceSuffix, xloc = xloc.bar_index, style = label.style_label_left, color = directionColor, textcolor = color.white, size = size.small)
    stopLabel := label.new(x2, stopPrice, "SL" + (showPriceLabels ? "  " + str.tostring(stopPrice, format.mintick) : ""), xloc = xloc.bar_index, style = label.style_label_left, color = sellColor, textcolor = color.white, size = size.small)
    tp1Label := label.new(x2, tp1Price, "TP1  |  1R (reference)", xloc = xloc.bar_index, style = label.style_label_left, color = color.new(buyColor, 25), textcolor = color.white, size = size.tiny)
    tp2Label := label.new(x2, tp2Price, "TP2  |  2R (reference)", xloc = xloc.bar_index, style = label.style_label_left, color = color.new(buyColor, 12), textcolor = color.white, size = size.tiny)
    tp3Label := label.new(x2, tp3Price, "TP3  |  3R" + (showPriceLabels ? "  " + str.tostring(tp3Price, format.mintick) : ""), xloc = xloc.bar_index, style = label.style_label_left, color = buyColor, textcolor = color.white, size = size.small)
    statusLabel := label.new(bar_index, tradeDirection == 1 ? low : high, (tradeDirection == 1 ? "BUY" : "SELL") + "\nRisk " + str.tostring(riskPercent, "#.##") + "% | Size " + str.tostring(suggestedUnits, "#.##"), style = tradeDirection == 1 ? label.style_label_up : label.style_label_down, color = directionColor, textcolor = color.white)
    array.push(setupLines, entryLine)
    array.push(setupLines, stopLine)
    array.push(setupLines, tp1Line)
    array.push(setupLines, tp2Line)
    array.push(setupLines, tp3Line)
    array.push(setupFills, riskFill)
    array.push(setupFills, rewardFill)
    array.push(setupLabels, entryLabel)
    array.push(setupLabels, stopLabel)
    array.push(setupLabels, tp1Label)
    array.push(setupLabels, tp2Label)
    array.push(setupLabels, tp3Label)
    array.push(setupLabels, statusLabel)
    trimSetupHistory()

// Keep the active setup projected to the right as new bars arrive.
if tradeActive
    int liveX2 = bar_index + projectionBars
    line.set_x2(entryLine, liveX2)
    line.set_x2(stopLine, liveX2)
    line.set_x2(tp1Line, liveX2)
    line.set_x2(tp2Line, liveX2)
    line.set_x2(tp3Line, liveX2)
    label.set_x(entryLabel, liveX2)
    label.set_x(stopLabel, liveX2)
    label.set_x(tp1Label, liveX2)
    label.set_x(tp2Label, liveX2)
    label.set_x(tp3Label, liveX2)

plotshape(acceptedBuy, "Buy Signal", shape.triangleup, location.belowbar, buyColor, size = size.small)
plotshape(acceptedSell, "Sell Signal", shape.triangledown, location.abovebar, sellColor, size = size.small)

alertcondition(acceptedBuy, "AlgoNexta MAC/ICE Buy", "MAC/ICE BUY on {{ticker}} {{interval}}")
alertcondition(acceptedSell, "AlgoNexta MAC/ICE Sell", "MAC/ICE SELL on {{ticker}} {{interval}}")
alertcondition(barstate.isconfirmed and not tradeActive and tradeActive[1], "AlgoNexta MAC/ICE Setup Closed", "MAC/ICE setup closed on {{ticker}} {{interval}}")

FAQ

Common questions.

What creates a MAC/ICE buy or sell signal?▾

With the default `EMA trend MACD crosses` mode, a buy requires EMA 60 above EMA 240 plus a MACD(12,26,9) bullish signal-line crossover. A sell requires EMA 60 below EMA 240 plus a bearish signal-line crossunder, evaluated on a confirmed bar.

What does Exact cTrader mode change?▾

`Exact cTrader` keeps the EMA trend and MACD-cross requirements, then adds a MACD zero-line filter. Buys require the MACD line below zero at the bullish cross, while sells require it above zero at the bearish cross.

Does this indicator place trades or manage broker positions?▾

No. It is an `indicator()` script that draws reference entry, stop, target, and sizing information; it does not call `strategy.entry`, `strategy.exit`, or submit broker orders.

How are the stop, targets, and suggested size calculated?▾

The stop distance is ATR(14) times `SL ATR Multiplier`, defaulting to 1.5 ATR. TP1, TP2, and TP3 are placed at 1R, 2R, and 3R, while suggested units use `Account Balance`, `Account Risk %`, and `Value of 1.0 Price Move per Unit`.

Do the signals repaint, and what happens if stop and target are both touched?▾

Accepted buy and sell signals require `barstate.isconfirmed`, so they are accepted at completed-bar evaluation rather than from an intrabar cross. For historical OHLC bars that touch both stop and target, the code explicitly records the stop first; intrabar order cannot be known from OHLC alone.

Which markets and timeframes should I use, and is this financial advice?▾

The source names no preferred market or timeframe, so validate the EMA, MACD, ATR, and point-value settings on your own instrument and interval. This is not financial advice; TradingView Strategy Tester, or equivalent testing and live execution records, are the source of truth for results.

Want a version tuned to your market?

Describe the change in plain English and AlgoNexta rebuilds it as a fresh Pine v6 script — with its own explanation, evidence, and walkthrough.

Build your own version

Educational content only — not financial advice. TradingView is the source of truth for live data, compilation, and Strategy Tester results.

We use cookies to understand how the site is used and improve it. We only load analytics after you accept. Privacy Policy