functioninit(ctx){// Moving averages — result is number[] ctx.indicator('sma20','SMA',{period:20,source:'close'}); ctx.indicator('dema','DEMA',{period:21,source:'close'});// Oscillators — result is number[] ctx.indicator('rsi14','RSI',{period:14}); ctx.indicator('cci','CCI',{period:20}); ctx.indicator('willr','WILLIAMSR',{period:14});// Volatility — result is number[] ctx.indicator('atr14','ATR',{period:14});// Trend — compound result ctx.indicator('macd','MACD',{fastPeriod:12,slowPeriod:26,signalPeriod:9,}); ctx.indicator('adx','ADX',{period:14}); ctx.indicator('psar','PSAR',{step:0.02,max:0.2}); ctx.indicator('ichimoku','ICHIMOKU',{tenkanPeriod:9,kijunPeriod:26,senkouBPeriod:52,});// Bands — compound result ctx.indicator('bb','BBANDS',{period:20,stdDev:2,source:'close'}); ctx.indicator('dc','DONCHIAN',{period:20}); ctx.indicator('kc','KELTNER',{period:20,multiplier:2});// Stochastic family — compound result ctx.indicator('stoch','STOCH',{kPeriod:14,dPeriod:3}); ctx.indicator('stochRsi','STOCHRSI',{rsiPeriod:14,stochPeriod:14,kPeriod:3,dPeriod:3,});// Volume — result is number[] ctx.indicator('obv','OBV',{}); ctx.indicator('mfi','MFI',{period:14}); ctx.indicator('adl','ADL',{});}
Using Parameterised Periods
The most common pattern — use ctx.p so the optimizer can tune indicator periods: