Fair Value Gap FVG For ThinkOrSwim

BillW

Member
VIP
I had AI put this together this morning. I'm not sure if it's measuring correctly or working. It is supposed to measure 15, 3 and 60-minute FVG. I have no math skills but ask AI and keep working on a script so it doesn't throw any error codes.

https://trendspider.com/learning-center/fair-value-gap-trading-strategy/

Code:
# ================================
#   MTF Fair Value Gap (FVG)
#   15-min + 30-min + 1-hour
# ================================

declare upper;

input show15   = yes;
input show30   = yes;
input show60   = yes;
input minTicks = 1;

def ts = TickSize();

# ================================
#   15-MIN DATA + FVG
# ================================
def H15 = high(period = AggregationPeriod.FIFTEEN_MIN);
def L15 = low(period  = AggregationPeriod.FIFTEEN_MIN);

def bullFVG15 = L15 > H15[2] and (L15 - H15[2]) / ts >= minTicks;
def bearFVG15 = H15 < L15[2] and (L15[2] - H15) / ts >= minTicks;

def bullLow15  = if bullFVG15 then L15 else bullLow15[1];
def bullHigh15 = if bullFVG15 then H15[2] else bullHigh15[1];

def bullFilled15 =
    if bullFVG15 then 0
    else if L15 <= bullHigh15 and H15 >= bullLow15 then 1
    else bullFilled15[1];

def bullActive15 = bullFilled15 == 0;

def bearHigh15 = if bearFVG15 then H15 else bearHigh15[1];
def bearLow15  = if bearFVG15 then L15[2] else bearLow15[1];

def bearFilled15 =
    if bearFVG15 then 0
    else if H15 >= bearLow15 and L15 <= bearHigh15 then 1
    else bearFilled15[1];

def bearActive15 = bearFilled15 == 0;

plot B15L = if show15 and bullActive15 then bullLow15 else Double.NaN;
plot B15H = if show15 and bullActive15 then bullHigh15 else Double.NaN;
plot S15L = if show15 and bearActive15 then bearLow15 else Double.NaN;
plot S15H = if show15 and bearActive15 then bearHigh15 else Double.NaN;

B15L.Hide(); B15H.Hide(); S15L.Hide(); S15H.Hide();

AddCloud(B15L, B15H, Color.LIGHT_GREEN, Color.LIGHT_GREEN);
AddCloud(S15L, S15H, Color.LIGHT_RED, Color.LIGHT_RED);

# ================================
#   30-MIN DATA + FVG
# ================================
def H30 = high(period = AggregationPeriod.THIRTY_MIN);
def L30 = low(period  = AggregationPeriod.THIRTY_MIN);

def bullFVG30 = L30 > H30[2] and (L30 - H30[2]) / ts >= minTicks;
def bearFVG30 = H30 < L30[2] and (L30[2] - H30) / ts >= minTicks;

def bullLow30  = if bullFVG30 then L30 else bullLow30[1];
def bullHigh30 = if bullFVG30 then H30[2] else bullHigh30[1];

def bullFilled30 =
    if bullFVG30 then 0
    else if L30 <= bullHigh30 and H30 >= bullLow30 then 1
    else bullFilled30[1];

def bullActive30 = bullFilled30 == 0;

def bearHigh30 = if bearFVG30 then H30 else bearHigh30[1];
def bearLow30  = if bearFVG30 then L30[2] else bearLow30[1];

def bearFilled30 =
    if bearFVG30 then 0
    else if H30 >= bearLow30 and L30 <= bearHigh30 then 1
    else bearFilled30[1];

def bearActive30 = bearFilled30 == 0;

plot B30L = if show30 and bullActive30 then bullLow30 else Double.NaN;
plot B30H = if show30 and bullActive30 then bullHigh30 else Double.NaN;
plot S30L = if show30 and bearActive30 then bearLow30 else Double.NaN;
plot S30H = if show30 and bearActive30 then bearHigh30 else Double.NaN;

B30L.Hide(); B30H.Hide(); S30L.Hide(); S30H.Hide();

AddCloud(B30L, B30H, Color.DARK_GREEN, Color.DARK_GREEN);
AddCloud(S30L, S30H, Color.DARK_RED, Color.DARK_RED);

# ================================
#   1-HOUR DATA + FVG
# ================================
def H60 = high(period = AggregationPeriod.HOUR);
def L60 = low(period  = AggregationPeriod.HOUR);

def bullFVG60 = L60 > H60[2] and (L60 - H60[2]) / ts >= minTicks;
def bearFVG60 = H60 < L60[2] and (L60[2] - H60) / ts >= minTicks;

def bullLow60  = if bullFVG60 then L60 else bullLow60[1];
def bullHigh60 = if bullFVG60 then H60[2] else bullHigh60[1];

def bullFilled60 =
    if bullFVG60 then 0
    else if L60 <= bullHigh60 and H60 >= bullLow60 then 1
    else bullFilled60[1];

def bullActive60 = bullFilled60 == 0;

def bearHigh60 = if bearFVG60 then H60 else bearHigh60[1];
def bearLow60  = if bearFVG60 then L60[2] else bearLow60[1];

def bearFilled60 =
    if bearFVG60 then 0
    else if H60 >= bearLow60 and L60 <= bearHigh60 then 1
    else bearFilled60[1];

def bearActive60 = bearFilled60 == 0;

plot B60L = if show60 and bullActive60 then bullLow60 else Double.NaN;
plot B60H = if show60 and bullActive60 then bullHigh60 else Double.NaN;
plot S60L = if show60 and bearActive60 then bearLow60 else Double.NaN;
plot S60H = if show60 and bearActive60 then bearHigh60 else Double.NaN;

B60L.Hide(); B60H.Hide(); S60L.Hide(); S60H.Hide();

AddCloud(B60L, B60H, Color.GREEN, Color.GREEN);
AddCloud(S60L, S60H, Color.RED, Color.RED);
Screen Shot 08-18-26 at 03.56 PM.PNG
 

Join useThinkScript to post your question to a community of 21,000+ developers and traders.

Similar threads

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
943 Online
Create Post

Similar threads

Similar threads

The Market Trading Game Changer

Join 2,500+ subscribers inside the useThinkScript VIP Membership Club
  • Exclusive indicators
  • Proven strategies & setups
  • Private Discord community
  • ‘Buy The Dip’ signal alerts
  • Exclusive members-only content
  • Add-ons and resources
  • 1 full year of unlimited support

Frequently Asked Questions

What is useThinkScript?

useThinkScript is the #1 community of stock market investors using indicators and other tools to power their trading strategies. Traders of all skill levels use our forums to learn about scripting and indicators, help each other, and discover new ways to gain an edge in the markets.

How do I get started?

We get it. Our forum can be intimidating, if not overwhelming. With thousands of topics, tens of thousands of posts, our community has created an incredibly deep knowledge base for stock traders. No one can ever exhaust every resource provided on our site.

If you are new, or just looking for guidance, here are some helpful links to get you started.

What are the benefits of VIP Membership?
VIP members get exclusive access to these proven and tested premium indicators: Buy the Dip, Advanced Market Moves 2.0, Take Profit, and Volatility Trading Range. In addition, VIP members get access to over 50 VIP-only custom indicators, add-ons, and strategies, private VIP-only forums, private Discord channel to discuss trades and strategies in real-time, customer support, trade alerts, and much more. Learn all about VIP membership here.
How can I access the premium indicators?
To access the premium indicators, which are plug and play ready, sign up for VIP membership here.
Back
Top