Updated Indicator now works on all Symbols with Many Different Session Options.
***Known PineScript Issue…While the Opening Range is being Formed the lines only adjust for that individual bar. Just reset Indicator after Opening Range Completes.
***All Times are Based on New Time
Session Options Forex U.S. Banks Open (8:00), Gold U.S. Open (8:20), Oil U.S. Open (9:00), U.S. Cash Session - Stocks (9:30), NY Forex Open (17:00) , Europe Open (02:00), or if you choose Setting 0 the Session Runs from 00:00 to 00:00 (Midnight to Midnight).
***Ability to use 60 minute Opening Range, 30 minute, 15 minute, and many other options.
***However you can manually change the times in the Inputs Tab to adjust for any session you prefer. This is useful for Day Light Savings Adjustments. Also the default times work if your charts are set to EST Time. If you use A different time zone in your settings you need to Adjust the times in the inputs tab.
Initially Opening Range High and Low plot as Yellow Lines. If Price Goes Above Opening Range then Line Turns Green. If Price Goes Below Opening Range Line Turns Red.
By default the First Profit Target is 1/2 the Width of the Opening Range and the 2nd Profit Target is 1 Times the Opening Range. However these are Adjustable in the Inputs Tab.
By Default the Opening Range Length is 1 Hour. However, you can Change the Opening Range Length to 15 min, 30 min, 2 hours etc. in the Inputs Tab.
Plots a 1 Above or Below Candle when 1st Profit Target is Achieved, and a 2 when 2nd Profit Target is Achieved.
//Created by ChrisMoody on 7-07-2014, Special Thanks To "The Coding Genius Behind The Curtain" study(title="_CM_Opening-Range-Final", shorttitle="_CM_OpenRange_PlusTargets", overlay=true) sessNum = input(4, title="Session to use (0 = 24 Hours, Other Numbers Listed Below)", minval=0, maxval=6) desc = input(false, title="Below---Line Plot Start Times and End Times---Change Input Above To Select") forex_US_BankingOpen = input('0800-1700', type=session, title="1 - Forex U.S. Banks Open -- ALL START TIMES = START OF OPENING RANGE!!!") gold_US_Open = input('0820-1700', type=session, title="2 - Gold U.S. Open -- All End Times are when Lines Stop Plotting") oil_US_Open = input('0900-1700', type=session, title="3 - Oil U.S. Open") usStocksOpen = input('0930-1600', type=session, title="4 - U.S. Cash Cash Session - Stocks Session") nyForexOpen = input('1700-1600', type=session, title="5 - NY Forex Open") europeOpen = input('0200-1700', type=session, title="6 - Europe") pt1 = input(5, minval=1, maxval=15, title="Profit Target 1 - Multiple of Opening Range *.1, 5 = .5, 7 = .7, 10 = 1, 15 = 1.5 etc.") pt2 = input(10, minval=1, maxval=30, title="Profit Target 2 - Multiple of Opening Range *.1, 10 = 1, 15 = 1.5, 18 = 1.8, etc.") res = input('60', type=resolution, title="Length Of Opening Range?") snp = input(true, title="Plot 1 and 2 When 1st and 2nd Profit Target are Achieved?") //Session Selection Rules sessToUse = sessNum == 1 ? forex_US_BankingOpen : sessNum == 2 ? gold_US_Open : sessNum == 3 ? oil_US_Open : sessNum == 4 ? usStocksOpen : sessNum == 5 ? nyForexOpen : sessNum == 6 ? europeOpen :'0000-0000' //Session Rules bartimeSess = (sessNum == 0 ? time('D') : time('D', sessToUse)) fr2to17 = (sessNum == 0 ? time(period) : time(period, sessToUse)) newbarSess = bartimeSess != bartimeSess high_range = valuewhen(newbarSess,high,0) low_range = valuewhen(newbarSess,low,0) adopt(r, s) => security(tickerid, r, s) //Formula For Opening Range highRes = adopt(res, high_range) lowRes = adopt(res, low_range) range = highRes - lowRes //Highlighting Line Rules For Opening Range highColor = high > highRes ? lime : yellow lowColor = low < lowRes ? red : yellow //Plot Statements For Opening Range Lines openRangeHigh = plot(fr2to17 > 0 ? highRes : na, color=highColor, style=circles, linewidth=4) openRangeLow = plot(fr2to17 > 0 ? lowRes : na, color=lowColor, style=circles, linewidth=4) bgcolor(fr2to17 > 0 ? silver : na, transp=85) fill(openRangeHigh, openRangeLow, color=silver, transp=70, title="Opening Range Fill") //Formula For Profit Target 1 pft1 = pt1*.1 highRes2 = highRes+range*pft1 lowRes2 = lowRes-range*pft1 //Highlighting Line rules for Profit Target 1 highColor2 = high > highRes2 ? lime : fuchsia lowColor2 = low < lowRes2 ? lime : fuchsia //Plots For Profit Target 1 p1=plot(fr2to17 > 0 ? highRes2 : na, color=highColor2, style=circles, linewidth=4) p2=plot(fr2to17 > 0 ? lowRes2 : na, color=lowColor2, style=circles, linewidth=4) //Formula For Profit Target 2 pft2 = pt2*.1 highRes3 = highRes+range*pft2 lowRes3 = lowRes-range*pft2 //Highlighting Line rules for Profit Target 2 highColor3 = high > highRes3 ? lime : aqua lowColor3 = low < lowRes3 ? lime : aqua //Plots For Profit Targe 2 plot(fr2to17 > 0 ? highRes3 : na, color=highColor3, style=circles, linewidth=4) plot(fr2to17 > 0 ? lowRes3 : na, color=lowColor3, style=circles, linewidth=4) //Rules for when to plot Numbers 1 or 2 When Profit Target 1 or 2 is Reached pt1UHit = (high >= highRes2 and high < highRes2 and high < highRes2 and high < highRes2 and high < highRes2 and high < highRes2) and fr2to17 > 0 pt1LHit = (low <= lowRes2 and low > lowRes2 and low > lowRes2 and low > lowRes2 and low > lowRes2 and low > lowRes2) and low > lowRes3 and fr2to17 > 0 pt2UHit = (high >= highRes3 and high < highRes3 and high < highRes3 and high < highRes3 and high < highRes3 and high < highRes3) and fr2to17 > 0 pt2LHit = (low <= lowRes3 and low > lowRes3 and low > lowRes3 and low > lowRes3 and low > lowRes3 and low > lowRes3) and fr2to17 > 0 //Rules for plotting 1 or 2 When Profit Target 1 or 2 is Reached plotchar(snp and pt1UHit ? pt1UHit : na, title='UpSide Profit Target 1 Achieved', char='1', location=location.abovebar, color=white, transp=0, offset=0) plotchar(snp and pt1LHit ? pt1LHit : na, title='DownSide Profit Target 1 Achieved', char='1', location=location.belowbar, color=white, transp=0, offset=0) plotchar(snp and pt2UHit ? pt2UHit : na, title='UpSide Profit Target 2 Achieved', char='2', location=location.abovebar, color=white, transp=0, offset=0) plotchar(snp and pt2LHit ? pt2LHit : na, title='DownSide Profit Target 2 Achieved', char='2', location=location.belowbar, color=white, transp=0, offset=0)
Do you have a strategy version which places orders at the high and low of the range and enters a trade based on say the range being greater than 15 pips, there is no existing open position for the strategy ( to stop eg the long order being triggered if the short is already in play ) and the market time in Europe is before 13:00 hours ? Any open positions should also be closed at 17:00 hours if profit targets / stops haven't been hit.
Any help on this would be enormously appreciated !
Let me know if that one will work for you...hopefully it does...if not it's just taking the features from 2 separate codes an combining them isn't that hard...
just let me know...just found the link...
//Created By ChrisMoody on 6-14-2014 -- Modified by DanLaffas 11-23-2016
//Updated for Forex and Intraday traders. No plots Current and Previous Sessions Data based on Weekly, Daily, 4 hour, 2 hour, 1 hour OHLC
//Daily Session To be used on IntraDay Charts
study(title="_CM_Candle_Open", shorttitle="_CM_Candle_Open", overlay=true)
st = input(true, title="Show Todays OHLC?")
sy = input(false, title="Show Yesterdays OHLC?")
tdo = security(tickerid, 'D', open)
pdo = security(tickerid, 'D', open)
offs_daily = 0
plot(st and tdo ? tdo : na, title="Daily Open", style=circles, linewidth=2, color=silver)
plot(sy and pdo ? pdo : na, title="Previous Days Open", style=cross, linewidth=2, color=silver)