Here is a nice template to use when testing a volatility break out system to daytade. Note I haven’t yet finished the filter coding.
{OPEN RANGE BREAK OUT with Trade Management} {:data1 = 5 minbars :data2 = daily bars} inputs: atrLookBack(10),brkOutAmt(.20),initProtStop$(500),profitThresh$(300),percentTrail(0.3),waitNumBars(3),endTradeEntryTime(1430); inputs: tradeFilterNum(1); {tradeFilterNum indicates how you want to filter the trades: filter #1 : prior day was a narrow range filter #2 : prior day was a NR4 filter #3 : buy/sell day only base on today's open filter #4 : combo of filter #1 and filter #3 filter #5 : combo of filter #2 and filter #3 } vars: buysToday(0),sellsToday(0),atrVal(0),todaysOpen(0),canBuy(false),canSell(false); vars: trailLong(false),trailShort(false),trailLongStop(0),trailShortStop(999999); vars: myBuysToday(0),mySellsToday(0); if tradeFilterNum = 1 then begin canBuy = false; canSell = false; if range of data2 < avgTrueRange(atrLookBack) of data2 and time < endTradeEntryTime then begin canBuy = true; canSell = true; end; end; if date <> date[1] then begin todaysOpen = open; {Capture Today's Open} trailLongStop = 0; trailShortStop = 9999999; myBuysToday = 0; mySellsToday = 0; end; if marketPosition = 1 then myBuysToday = 1; if marketPosition = -1 then mySellsToday = -1; atrVal = avgTrueRange(atrLookBack) of data2; if canBuy and myBuysToday = 0 and marketPosition <> 1 then buy("BBO") next bar at todaysOpen + atrVal * brkOutAmt stop; if canSell and mySellsToday = 0 and marketPosition <>-1 then sellshort("SBO") next bar at todaysOpen - atrVal *brkOutAmt stop; if marketPosition <> 1 then trailLong = false; if marketPosition <> -1 then trailShort = false; if marketPosition = 1 then begin sell("LongExit") next bar at entryPrice - initProtStop$/bigPointValue stop; if h > entryPrice + profitThresh$/bigPointValue then trailLong = true; if trailLong then begin trailLongStop = maxList(trailLongStop,h - (h - entryPrice)*percentTrail); sell("LongTrail") next bar at trailLongStop stop; end; end; if marketPosition = -1 then begin buyToCover("ShrtExit") next bar at entryPrice + initProtStop$/bigPointValue stop; if l < entryPrice - profitThresh$/bigPointValue then trailShort = true; if trailShort then begin trailShortStop = minList(trailShortStop,l + (entryPrice - l)*percentTrail); buyToCover("ShortTrail") next bar at trailShortStop stop; end; end; setExitOnClose;
{finished}