I asked ChatGPT to re-create the new Big 3 Squeeze from simpler trading. It's close but not displaying properly for me. Everything is really compressed and hard to see. If anyone wants to play around with it, I think this is a good start:
# Big 3 Squeeze Indicator by Taylor Horton
# This script combines elements of the TTM Squeeze with custom buy/sell signals
declare lower;
input length = 20;
input mult = 2.0;
input momentumLength = 12;
input momentumMultiplier = 1.5;
input smoothingLength = 3;
def price = close;
def avg = SimpleMovingAvg(price, length);
def stdev = stdev(price, length);
def upperBand = avg + (mult * stdev);
def lowerBand = avg - (mult * stdev);
def K = (price - lowerBand) / (upperBand - lowerBand);
def D = ExpAverage(K, smoothingLength);
def J = 3 * K - 2 * D;
def MomentumHistogram = (price - ExpAverage(price, momentumLength)) / (momentumMultiplier * stdev);
plot Histogram = MomentumHistogram;
Histogram.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
Histogram.AssignValueColor(if MomentumHistogram >= 0 then Color.GREEN else Color.RED);
# Big 3 Buy and Sell Signals
def buySignal = K crosses above D and K < 0.2 and ExpAverage(close, 21) > SimpleMovingAvg(close, 50);
def sellSignal = K crosses below D and K > 0.8 and ExpAverage(close, 21) < SimpleMovingAvg(close, 50);
plot BuyArrow = if buySignal then low else Double.NaN;
BuyArrow.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
BuyArrow.SetDefaultColor(Color.GREEN);
BuyArrow.SetLineWeight(5);
plot SellArrow = if sellSignal then high else Double.NaN;
SellArrow.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
SellArrow.SetDefaultColor(Color.RED);
SellArrow.SetLineWeight(5);
# Squeeze Signal
def squeeze = K > 0 and K < 1 and D > 0 and D < 1;
plot SqueezeDots = if squeeze then 0 else Double.NaN;
SqueezeDots.SetPaintingStrategy(PaintingStrategy.POINTS);
SqueezeDots.SetDefaultColor(Color.BLUE);
SqueezeDots.SetLineWeight(5);
# Labels for A+ Setups
AddLabel(buySignal, "A+ Buy Setup", Color.GREEN);
AddLabel(sellSignal, "A+ Sell Setup", Color.RED);
# Multi-Time Frame Labels
def weeklySqueeze = Highest(squeeze, 5) > 0;
def dailySqueeze = Highest(squeeze, 1) > 0;
def intraDaySqueeze = squeeze;
AddLabel(weeklySqueeze, "Weekly Squeeze", Color.BLUE);
AddLabel(dailySqueeze, "Daily Squeeze", Color.YELLOW);
AddLabel(intraDaySqueeze, "Intra-Day Squeeze", Color.MAGENTA);
# Additional Structure Criteria
def structureBuy = ExpAverage(close, 21) > SimpleMovingAvg(close, 50);
def structureSell = ExpAverage(close, 21) < SimpleMovingAvg(close, 50);
plot BullStructure = if structureBuy then low else Double.NaN;
BullStructure.SetPaintingStrategy(PaintingStrategy.BOOLEAN_POINTS);
BullStructure.SetDefaultColor(Color.GREEN);
BullStructure.SetLineWeight(5);
plot BearStructure = if structureSell then high else Double.NaN;
BearStructure.SetPaintingStrategy(PaintingStrategy.BOOLEAN_POINTS);
BearStructure.SetDefaultColor(Color.RED);
BearStructure.SetLineWeight(5);
# Trailing Stop Labels
def trailingStopValue = ExpAverage(close, 10);
AddLabel(close > trailingStopValue, "Above Trailing Stop", Color.GREEN);
AddLabel(close < trailingStopValue, "Below Trailing Stop", Color.RED);
plot TrailingStopLine = trailingStopValue;
TrailingStopLine.SetDefaultColor(Color.ORANGE);
TrailingStopLine.SetStyle(Curve.MEDIUM_DASH);
TrailingStopLine.SetLineWeight(3);
# Bull and Bear Target Labels
def bullTarget = close + 3 * stdev;
def bearTarget = close - 3 * stdev;
AddLabel(close >= bullTarget, "Bull Target Hit", Color.GREEN);
AddLabel(close <= bearTarget, "Bear Target Hit", Color.RED);