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.
Catatan Rilis: 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 `_`
Skrip open-source

Sejalan dengan semangat TradingView, penulis skrip ini telah mempublikasikannya secara open-source, sehingga para trader dapat memahami dan memverifikasinya. Salut untuk sang penulis! Anda dapat menggunakannya secara gratis, tetapi penggunaan kembali kode ini dalam publikasi diatur oleh Tata Tertib. Anda dapat memfavoritkannya untuk dapat menggunakannya didalam sebuah chart.

Inggin menggunakan skrip ini pada chart?
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 Jawab
@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 Jawab
@rasmak, :D
This script is just awesome. I'm learning a lot from you... thanks!
+1 Jawab
JayRogers MikeJuliano
@MikeJuliano, You're very welcome. :)
Wonderful mate. Where you get all these ideas.
+1 Jawab
JayRogers pricechart1336
@pricechart1336, I see similar questions asked, I have a look for simple examples - can't find anything? I code it. :)
+1 Jawab
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 Jawab
JayRogers Greedandfear
@Greedandfear, Glad you like it!