Order-Flow Simulator
Saved coding config auto-loads in Trading Terminal.
return to output a value.if, for, while.
return sma10 - sma20;return close - vwap;
buy(), sell(), hold(), or advanced order helpers.
Use inside the Indicator Code editor.
Full variable list and advanced auto-trade syntax are documented at the bottom.
open, high, low, close, volprevOpen, prevHigh, prevLow, prevClose, prevVolprev2Open, prev2High, prev2Low, prev2Close, prev2Voli (index), t (0-1)range, body, bodyPct, bodyDirupperWick, lowerWick, gap, gapPcthl2, hlc3, ohlc4, hlRangePctchange, changePct, logReturn, trueRangesma5, sma10, sma20, ema5, ema10, ema20smaDiff, emaDiff, rsi14, rsiSlope, atr14obv, vwap, roc12, stochK, stochDvolSma20, volChange, volChangePct, closeAboveVwap, trendUporderQty, setOrderQty(qty)buyOrderQty(), sellOrderQty()buyMarket(qty), sellMarket(qty)buyLimit(price, qty), sellLimit(price, qty)buyStop(stop, qty, limitPrice?), sellStop(stop, qty, limitPrice?)data, opens, highs, lows, closes, volssma(closes, period, i), ema(closes, period, i)// Example: plot a custom momentum blend
return (rsi14 - 50) + (ema10 - ema20);
// Example: simple oversold buy, overbought sell
if (Number.isFinite(rsi14) && rsi14 < 30 && balance > close * 3) {
buy(3);
}
if (Number.isFinite(rsi14) && rsi14 > 70 && holdings > 0) {
sell(Math.min(3, holdings));
}
Runs every tick. Use buy(qty), sell(qty), hold().
Advanced syntax and full variable list are at the bottom.
balance, holdings, avgPrice, priceequity, pnl, returnRate, positionValueif (orderQty >= 5 && rsi14 < 30) { buyOrderQty(); }
if (orderQty >= 5 && rsi14 > 70) { sellOrderQty(); }
All indicator and auto-trade variables are listed below. The Custom Indicator overlay expects price-scale outputs.
t: normalized bar position (0-1)i: bar indextime: bar timestamp bucketopen, high, low, close, volprevOpen, prevHigh, prevLow, prevClose, prevVolprev2Open, prev2High, prev2Low, prev2Close, prev2Volrange, rangePct, body, bodyPct, bodyDirisBull, isBear, isDojigap, gapPct, gapDirupperWick, lowerWick, upperWickPct, lowerWickPcthlRangePct, closePos, hl2, hlc3, ohlc4, typicalchange, changePct, logReturn, trueRangeatr7, atr14, atr21, atrPctsma5, sma10, sma20, sma50, sma100ema5, ema10, ema20, ema50, ema100smaDiff, emaDiff, ema10Slope, sma20SlopepriceAboveSma20, priceAboveEma20, trendUprsi7, rsi14, rsi21, rsiSloperoc12, stochK, stochDmacdLine, macdSignal, macdHistvwap, obv, closeAboveVwapvolSma5, volSma20, volSma50, volChange, volChangePct, volRelbbUpper, bbMiddle, bbLower, bbWidth, bbPctBdata, opens, highs, lows, closes, volssma, ema, highest, lowest, sum, avg, stdbalance, holdings, avgPrice, priceequity, pnl, returnRate, positionValuelastTrade: { type, price, qty, time }orderQty, setOrderQty(qty)buyOrderQty(), sellOrderQty()buy(qty), sell(qty), hold()buyMarket(qty), sellMarket(qty)buyLimit(price, qty), sellLimit(price, qty)buyStop(stop, qty, limitPrice?), sellStop(stop, qty, limitPrice?)buyPct(pct), sellPct(pct)buyValue(amount), sellValue(amount)riskQty({ riskPct, stopPct, price, equityValue })cooldown(key, ms): throttle by keyoncePerBar(key): one action per barmem: persistent memory storectx: runtime context (tick, bar index, time)