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.
릴리즈 노트: 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 `_`
오픈 소스 스크립트

진정한 TradingView의 정신에 따라, 이 스크립트의 작성자는 스크립트를 오픈소스로 게시했기에 거래자들이 이해하고 확인할 수 있습니다. 작가님께 건배! 스크립트를 무료로 사용할 수 있지만, 게시물에서 이 코드를 재사용하는 것은 하우스룰을 따릅니다. 당신은 스크립트를 차트에 사용하기 위해 그것을 즐겨찾기 할 수 있습니다.

차트에 이 스크립트를 사용하시겠습니까?
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 응답
@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 응답
@rasmak, :D
This script is just awesome. I'm learning a lot from you... thanks!
+1 응답
JayRogers MikeJuliano
@MikeJuliano, You're very welcome. :)
Wonderful mate. Where you get all these ideas.
+1 응답
JayRogers pricechart1336
@pricechart1336, I see similar questions asked, I have a look for simple examples - can't find anything? I code it. :)
+1 응답
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 응답
JayRogers Greedandfear
@Greedandfear, Glad you like it!