QuantScript multi-asset indicator: BTC 1h chart with ETH 4h SMA and XAU daily RSI signal, each computed on native bars using multiple data.loadCandles() calls.
// Multi-Asset Dashboard — BTC 1h with ETH 4h + XAU Daily Signals
//
// Uses multiple data.loadCandles() calls with callbacks to evaluate
// indicators on different secondary timeframes and symbols simultaneously.
mode("indicator", "Multi-Asset Dashboard");
candles("BTCUSD", timeframe: "1h", bars: 300, provider: "demotrader");
// ── Inputs ───────────────────────────────────────────────────────────────────
const ethSmaLen = input.int(50, "ETH 4h SMA", minval: 10, maxval: 200, group: "ETH");
const xauRsiLen = input.int(14, "XAU Daily RSI", minval: 5, maxval: 50, group: "XAU");
const xauOB = input.float(70.0, "RSI Overbought", group: "XAU");
const xauOS = input.float(30.0, "RSI Oversold", group: "XAU");
// ── Secondary feeds: each evaluated on its own native bars ───────────────────
// ETH 4h: SMA on native 4h bars
var ethSma = data.loadCandles("demotrader", "ETHUSD", "4h", (c) => ta.sma(c.close, ethSmaLen));
// XAU Daily: RSI-based signal (-1 / 0 / +1)
var xauSignal = data.loadCandles("demotrader", "XAUUSD", "1D", (c) => {
const rsi = ta.rsi(c.close, xauRsiLen);
if (rsi === null) return 0;
return rsi > xauOB ? -1 : (rsi < xauOS ? 1 : 0);
});
// ── Plot ─────────────────────────────────────────────────────────────────────
event.onCandle((candle) => {
// Primary: BTC price
chart.plot(candle.close, "BTC Close");
// ETH 4h SMA (forward-filled to 1h)
chart.plot(ethSma, "ETH 4h SMA", "#FF9800");
// XAU daily signal in oscillator pane
chart.pane("signals");
chart.plot(xauSignal, "XAU Signal", "#9C27B0");
chart.hline(1, "Bullish", "#3fb950");
chart.hline(-1, "Bearish", "#f85149");
chart.hline(0, "Neutral", "#555");
// Historical lookback on ETH SMA
const prevEthSma = ethSma[1];
if (prevEthSma !== null && ethSma !== null) {
const rising = ethSma > prevEthSma;
console.log("ETH 4h SMA: " + ethSma.toFixed(2) + (rising ? " ▲" : " ▼"));
}
});