/* Disclaimer: Trading in financial instruments is risky. This code is provided for educational purposes only. No responsibility shall we accepted for any loss. See the full disclaimer at jbmarwood.com/disclaimer. All rights reserved. JBMARWOOD.COM. */ SetFormulaName("Reverse Splits"); SetOption("InitialEquity",100*1000); SetOption("CommissionMode",3); SetOption("CommissionAmount",0); SetOption("AllowSameBarExit",1); SetOption("MaxOpenPositions",2500); SetOption("AccountMargin",100); SetOption("UsePrevBarEquityForPosSizing",False); SetOption("AllowPositionShrinking", True); SetTradeDelays(1,0,1,0); SetOption("ActivateStopsImmediately",True); SetPositionSize(1,spsShares); RoundLotSize = 1; Buy = Sell = Short = Cover = 0; BuyPrice = ShortPrice = O; SellPrice = CoverPrice = C; // Rules For Delisted Shares NonTradedPeriod = 30; //in calendar days SecurityIsInactive = LastValue(DateTimeDiff(Now(5),DateTimeAdd(DateTime(), NonTradedPeriod, inDaily))) >= 0; OnSecondLastBarOfInactiveSecurity = BarIndex() == (LastValue(BarIndex()) -1) AND SecurityIsInactive; OnLastTwoBarsOfInactiveSecurity = BarIndex() >= (LastValue(BarIndex()) -1) AND SecurityIsInactive; // Liquidity & Reverse Split Rules Liquid= Ref(OpenInt,-1) < 50 AND IsIndexConstituent("$RUmic") AND NOT OnLastTwoBarsOfInactiveSecurity; RealChange = C/Ref(C,-1); UnadjustedChange = OpenInt/Ref(OpenInt,-1); ReverseSplit = RealChange < 1.999 AND UnadjustedChange > 1.999; // Entry and exit rules Buy = Short = Liquid AND ReverseSplit; Sell = Cover = OnLastTwoBarsOfInactiveSecurity; Sellperiod = Optimize("prd",9,1,50,1); ApplyStop( stopTypeNBar, stopModeBars, sellperiod);