Example - Custom Defined Dual-State Session

This script example aims to cover the following:

  • defining custom timeframe / session windows
  • gather a price range from the custom period ( high/low values )
  • create a secondary "holding" period through which to display the data collected from the initial session
  • simple method to shift times to re-align to preferred timezone

Articles and further reading:

Reason for Study:

  • Educational purposes only.

Before considering writing this example I had seen multiple similar questions
asking how to go about creating custom timeframes or sessions, so it seemed
this might be a good topic to attempt to create a relatively generic example.
Note di rilascio: Minor quick-fix update.
  • Adjusted license info in header, it's a freely usable example.
  • Updated variable naming conventions inside `f_captureSessionHL()` - now all prefixed with `_`
Script open-source

Nello spirito di condivisione promosso da TradingView, l'autore (al quale vanno i nostri ringraziamenti) ha deciso di pubblicare questo script in modalità open-source, così che chiunque possa comprenderlo e testarlo. Puoi utilizzarlo gratuitamente, ma il riutilizzo del codice è subordinato al rispetto del Regolamento. Per aggiungerlo al grafico, mettilo tra i preferiti.

Vuoi usare questo script sui tuoi grafici?
If you like what I do, consider buying me a nice fresh cup of tea :)



Hi JayRogers, This is cool. I was thinking to built some custom period but was not getting logic for this (I am new to pine script). Thanks for this. I hope I can use your logic to create custom period days.
+2 Rispondi
@rasmak, if you find it useful, that's great :)

In the event you wanted for example to get the open of the session, you could add an extra variable for it at the start of the main function, and then capture it in this block:

    //  if we are in session...
    if _session
        //  if it just started, set the initial values
        if not _session[1]
            sessionHigh := high
            sessionLow  := low
            sessionOpen := open // capture the open

For the close you would grab it at the end of the session as it moves into the holding period.

    //  else if we're in holding state...
    else if _holding
        if not _holding[1] // just entered holding..
            sessionClose := close[1] // ..so grab the final close of the session
        //  just reference self to maintain the same levels
        sessionHigh := sessionHigh
        sessionLow  := sessionLow
rasmak JayRogers
@JayRogers, Thanks a lot bro. Looks like you read my mind. Yes I was planning to add open and close of the session to work out a strategy. Will keep you updated.
+1 Rispondi
@rasmak, :D
This script is just awesome. I'm learning a lot from you... thanks!
+1 Rispondi
JayRogers MikeJuliano
@MikeJuliano, You're very welcome. :)
Wonderful mate. Where you get all these ideas.
+1 Rispondi
JayRogers pricechart1336
@pricechart1336, I see similar questions asked, I have a look for simple examples - can't find anything? I code it. :)
This is just great! Very helpful script. I'm just adding SMA 1 2/HL as a trigger and it works like a cool strategy.
+1 Rispondi
JayRogers Greedandfear
@Greedandfear, Glad you like it!