SutraLipi docs grammar v1

Examples

EMA crossover

EquitySymbol nifty = NSE:IDX:"NIFTY BANK";
float[] emaFast;
float[] emaSlow;

onTick {
    INDICATOR_EMA(emaFast, nifty, M15, 9, 1);
    INDICATOR_EMA(emaSlow, nifty, M15, 21, 1);

    // fast crosses above slow -> buy
    if (emaFast[1] <= emaSlow[1] && emaFast[0] > emaSlow[0]) {
        OrderSend(nifty, BUY, 1, 0, 0, 0, INTRADAY, DAY, "ema cross up");
    }
    // fast crosses below slow -> close
    if (emaFast[1] >= emaSlow[1] && emaFast[0] < emaSlow[0]) {
        OrderCloseBySymbol(nifty, INTRADAY, DAY, "ema cross down");
    }
}

ATM short straddle (relative expiry)

OptionChain  chain = NFO:OPTIDX:"NIFTY";
EquitySymbol nifty = NSE:IDX:"NIFTY";
OptionSymbol ce;
OptionSymbol pe;

onStart {
    ce = chain.ATM(CE, Expiry.Weekly(0), nifty);
    pe = chain.ATM(PE, Expiry.Weekly(0), nifty);
    OrderSend(ce, SELL, 1, 0, 0, 0, NORMAL, DAY, "straddle ce");
    OrderSend(pe, SELL, 1, 0, 0, 0, NORMAL, DAY, "straddle pe");
}

Time-based square-off

EquitySymbol nifty = NSE:IDX:"NIFTY BANK";

onTick {
    int hour = HOUR(CandleTime(nifty, M1, 0));
    if (hour >= 15) {
        OrderCloseAll(INTRADAY, DAY, "eod square off");
    }
}

Ready to run this? Build and backtest strategies in the SutraLipi algo trading platform — no-code builder, tick-level backtesting and one-click live execution. Browse all documentation topics.

Code copied — paste it into the editor with Ctrl+V.