AGAIG As Good As It Gets Opening Range Breakout Indicator
As pointed out there are many adaptations to the ORB. I slightly revamped the one from halcyonguy where I've labeled the ORB HI and ORB LO on the chart using yellow lines (no clouds) also with the label above which states whether price is Above/Within/Below ORB. It's also included on my regular chart setup (AGAIG-BestTradingChartSetup). I use broken lines for the first 15 min while the range is being established and then solid lines for rest of the day. Some traders like the first 30 min instead and that change can be made on the code (change aggregation period to thirty_min). I've included a picture of Fridays QQQ where ORB established an opening range low point and never reached that point again. Here is the code and a picture of the indicator by itself. You can see where the day before the QQQs traded below the ORB for most of the day. On my BestTradingChart setup are other complimentary indicators which I use along with the ORB. In day trading once a level is established my assumption is that level will not be achieved again and so I close a position and wait for another established re-entry.
Picture:
Code:
As pointed out there are many adaptations to the ORB. I slightly revamped the one from halcyonguy where I've labeled the ORB HI and ORB LO on the chart using yellow lines (no clouds) also with the label above which states whether price is Above/Within/Below ORB. It's also included on my regular chart setup (AGAIG-BestTradingChartSetup). I use broken lines for the first 15 min while the range is being established and then solid lines for rest of the day. Some traders like the first 30 min instead and that change can be made on the code (change aggregation period to thirty_min). I've included a picture of Fridays QQQ where ORB established an opening range low point and never reached that point again. Here is the code and a picture of the indicator by itself. You can see where the day before the QQQs traded below the ORB for most of the day. On my BestTradingChart setup are other complimentary indicators which I use along with the ORB. In day trading once a level is established my assumption is that level will not be achieved again and so I close a position and wait for another established re-entry.
Picture:
Code:
Ruby:
#orb_colors_03
#Mobius original
#csricksdds 2/20
#I like your ORB indicator with the labels that show when above/below...so that the labels don't show only when above/below can you add one showing Yellow "Trading within ORB" when it's trading within?
#Thanks to halcyonguy I have made a few changes to suit myself.
#https://usethinkscript.com/threads/shaded-opening-range-no-breakout.17922/
#Shaded Opening Range (No Breakout)
# 2020-01
# halcyonguy
#Revamped by C. Ricks 2/12/24
def na = Double.NaN;
# pick an agg time
input orb_time = AggregationPeriod.fifteen_min;
def orb_min = orb_time/60000;
def per = orb_min;
input show_ORB_label = yes;
input show_arrows = yes;
# open/close times (ET)
input start = 0930;
input end = 1600;
def daytime = if secondsfromTime(start) >= 0 and secondstillTime(end) > 0 then 1 else 0;
def getgg = getaggregationPeriod();
def getaggmin = round(getgg/60,0);
addlabel(0,getaggmin);
# test if agg time is > than chart time
def aggok = if getaggmin <= orb_min then 1 else 0;
def durationsec = per * 60;
def secondspassed = secondsfromTime(start);
# simulated firstbar , based on orb time
def firstbar = if secondspassed >= 0 and secondspassed < durationsec then 1 else 0;
#addchartbubble(yes,low,per + "" + firstbar + "" + agg);
def afterfirst = if ( daytime and !firstbar ) then 1 else 0;
# is this the first bar after open ?
def openbar = if secondspassed >= 0 and secondspassed <= getgg then 1 else 0;
def ehi = high(period = orb_time);
def elo = low(period = orb_time);
# looks at firstbar , which is orbtime , NOT bar[1]
def perhigh = if !daytime then na else if firstbar then ehi else perhigh[1];
def perlow = if !daytime then na else if firstbar then elo else perlow[1];
# .....................................................
addlabel(1, " ", color.Yellow);
addlabel((close > perhigh),"Price Above ORB", color.green);
addlabel((close < perlow),"Price Below ORB", color.red);
addlabel((close <= perhigh and close >= perlow),"Price Inside ORB", color.yellow);
addlabel(1, " ", color.Yellow);
# .....................................................
# plot dots for first bar timeframe
plot hidots = if firstbar then perhigh else na;
plot lodots = if firstbar then perlow else na;
hidots.setpaintingStrategy(paintingStrategy.Dashes);
lodots.setpaintingStrategy(paintingStrategy.Dashes);
hidots.setDefaultColor(color.yellow);
lodots.setDefaultColor(color.yellow);
# plot line after first bar
plot hiline = if !firstbar then perhigh else na;
plot loline = if !firstbar then perlow else na;
hiline.setpaintingStrategy(paintingStrategy.LINE);
loline.setpaintingStrategy(paintingStrategy.LINE);
hiline.setDefaultColor(color.yellow);
loline.setDefaultColor(color.yellow);
#DefineGlobalColor("orb",color.magenta);
#DefineGlobalColor("orb_after",color.gray);
DefineGlobalColor("orb",color.red);
DefineGlobalColor("orb_after",color.green);
plot static = hiline;
static.AssignValueColor(Color.Yellow);
def limit = !IsNaN(close) and IsNaN(close [-1] ) && LowestAll(BarNumber());
AddChartBubble(limit, static, "ORB HI", Color.Yellow);
plot static2 = loline;
static2.AssignValueColor(Color.Yellow);
def limit2 = !IsNaN(close) and IsNaN(close [-1] ) && LowestAll(BarNumber());
AddChartBubble(limit2, static2, "ORB LO", Color.YELLOW);
##End Code
Last edited by a moderator: