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.
Notas de Lançamento: 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 de código aberto

No verdadeiro espírito TradingView, o autor deste script o publicou com código aberto, para que os traders possam compreendê-lo e verificá-lo. Um brinde ao autor! Você pode usá-lo gratuitamente, mas a reutilização deste código em uma publicação é regida pelas Regras da Casa. Você pode favoritá-lo para utilizá-lo em um gráfico.

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