// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © AI_PIPS //@version=6 indicator("AIPIPS Liquidity Engine", overlay=true, max_lines_count=500) asian = input.session("0000-0500", "Asian session") london = input.session("0700-1100", "London session") newyork = input.session("1230-1630", "New York session") sessionActive(sess) => time(timeframe.period, sess) var float asiaHigh = na var float asiaLow = na var float londonHigh = na var float londonLow = na var float nyHigh = na var float nyLow = na var float asiaHighPrev = na var float asiaLowPrev = na var float londonHighPrev = na var float londonLowPrev = na var float nyHighPrev = na var float nyLowPrev = na fSessionUpdate(active, highRef, lowRef, prevHighRef, prevLowRef) => if active highRef := na(highRef) ? high : math.max(highRef, high) lowRef := na(lowRef) ? low : math.min(lowRef, low) else if not active and not na(highRef) prevHighRef := highRef prevLowRef := lowRef highRef := na lowRef := na [highRef, lowRef, prevHighRef, prevLowRef] [asiaHigh, asiaLow, asiaHighPrev, asiaLowPrev] := fSessionUpdate(sessionActive(asian), asiaHigh, asiaLow, asiaHighPrev, asiaLowPrev) [londonHigh, londonLow, londonHighPrev, londonLowPrev] := fSessionUpdate(sessionActive(london), londonHigh, londonLow, londonHighPrev, londonLowPrev) [nyHigh, nyLow, nyHighPrev, nyLowPrev] := fSessionUpdate(sessionActive(newyork), nyHigh, nyLow, nyHighPrev, nyLowPrev) plot(asiaHighPrev, title="Asia High", color=color.new(color.blue, 0), linewidth=1, style=plot.style_linebr) plot(asiaLowPrev, title="Asia Low", color=color.new(color.blue, 0), linewidth=1, style=plot.style_linebr) plot(londonHighPrev, title="London High", color=color.new(color.green, 0), linewidth=1, style=plot.style_linebr) plot(londonLowPrev, title="London Low", color=color.new(color.green, 0), linewidth=1, style=plot.style_linebr) plot(nyHighPrev, title="NY High", color=color.new(color.red, 0), linewidth=1, style=plot.style_linebr) plot(nyLowPrev, title="NY Low", color=color.new(color.red, 0), linewidth=1, style=plot.style_linebr) liquidityTap = (not na(asiaHighPrev) and high >= asiaHighPrev) or (not na(asiaLowPrev) and low <= asiaLowPrev) or (not na(londonHighPrev) and high >= londonHighPrev) or (not na(londonLowPrev) and low <= londonLowPrev) or (not na(nyHighPrev) and high >= nyHighPrev) or (not na(nyLowPrev) and low <= nyLowPrev) plotshape(liquidityTap, title="Liquidity tap", char="LQ", location=location.top, color=color.purple, size=size.tiny)