Anti-Climax Indicator For ThinkOrSwim

HushPuppy

New member
VIP
"The Anti" (Anti-Climax) - Its a Linda Raschke indicator for exhaustion
mod note:
For the ThinkOrSwim code, you must scroll down to the next post

Bullish Rules:
Bullish Pattern
: Set of 3 candles where the distance between the lows of the candles red or green (body or wick) are accelerating/increasing is distance from each other. (Ex. Below)

1724300543413.png


Bearish rules are optionable, can usually just reverse the bullish rules.
Reverse the bullish rules

What defines a setup candle?
Bullish
= 1st green candle with a higher low after the Anti-Climax push you buy 1tick above that 1st green candle (Ex. below) and place the stop 1tick below that green candle.

1724299791798.png


Why is the bullish candle called a bullish candle?
The candle must be green and have a higher low (body or wick) than the previous candle. The candle can have a higher high than the previous candle.

Within how many candles does the bullish candle have to appear after the 3 or more candles?
Good question, as long as there’s "acceleration" lower and the candles meet the criteria (Set of 3 candles where the distance on the lows of the candles are increasing red or green (body or wick) the pattern remains in play. There might be 3,4,5 + consecutive bars and then the trigger bar “Green higher low” appears. (Ex. See below of a powerful move that triggered multiple 3 candle Anti-Climax patterns)

1724300805878.png



Within how many bars does a buy candle have to happen?
After the trigger candle (1st green higher low candle) the trade entry should be triggered within 2 days. If it does not, the trade is invalidated.

post a link that talk about this strategy: This is a 4min video detailing the strategy:
 

Attachments

  • 1724300159784.png
    1724300159784.png
    17.2 KB · Views: 148
Last edited by a moderator:
Signal triggers on open of bar after trigger bar.
Assume Day time frame due to 2 day rule.
Haven't had time to error check.

Cfh42W6.png


Ruby:
#BUY
Def BAnti1 = if (low[5]-low[4])>0 then (low[5]-low[4]) else Double.NaN;
Def BAnti2 = if (low[4]-low[3])>0 then (low[4]-low[3]) else Double.NaN;
Def BAnti3 = if (low[3]-low[2])>0 then (low[3]-low[2]) else Double.NaN;
Def BAnti4 = low[5] > low[4] and low[4] > low[3] and low[3] > low[2] and low[1] > low[2] and open[1] < close[1];
Def BAntiHigh = if BAnti1 < BAnti2 and BAnti2 < BAnti3 and BAnti4 then high[1]+ticksize() else Double.NaN;
Def BAntiLow = if BAnti1 < BAnti2 and BAnti2 < BAnti3 and BAnti4 then low[1]-ticksize() else Double.NaN;

Def BAntiHighLine = if !IsNaN(BAntiHigh[2]) then double.nan else if !IsNan(BAntiHigh) then BAntiHigh else BAntiHighLine[1];
Def BAntiLowLine = if !IsNaN(BAntiLow[2]) then double.nan else if !IsNan(BAntiLow) then BAntiLow else BAntiLowLine[1];

plot BAntiHighPlot = if BAntiHighLine <> 0 then BAntiHighLine else Double.NaN;
BAntiHighPlot.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
BAntiHighPlot.SetDefaultColor(color.LIGHT_GREEN);
BAntiHighPlot.SetLineWeight(1);

plot BAntiLowPlot = if BAntiLowLine <> 0 then BAntiLowLine else Double.NaN;
BAntiLowPlot.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
BAntiLowPlot.SetDefaultColor(color.LIGHT_RED);
BAntiLowPlot.SetLineWeight(1);

Plot AntiHighSetup = if !IsNaN(BAntiHigh[-2]) then low - ((high - low)*.25) else Double.NaN;
AntiHighSetup.SetPaintingStrategy(PaintingStrategy.POINTS);
AntiHighSetup.SetDefaultColor(color.DARK_GREEN);
AntiHighSetup.SetLineWeight(5);

Plot BuySetup = If !IsNaN(AntiHighSetup[2]) and IsNaN(AntiHighSetup[1]) then 1 else 0;
BuySetup.Hide();

#SELL
Def SAnti1 = if (high[5]-high[4])<0 then (high[5]-high[4]) else Double.NaN;
Def SAnti2 = if (high[4]-high[3])<0 then (high[4]-high[3]) else Double.NaN;
Def SAnti3 = if (high[3]-high[2])<0 then (high[3]-high[2]) else Double.NaN;
Def SAnti4 = high[5] < high[4] and high[4] < high[3] and high[3] < high[2] and high[1] < high[2] and open[1] > close[1];
Def SAntiHigh = if SAnti1 > SAnti2 and SAnti2 > SAnti3 and SAnti4 then high[1]+ticksize() else Double.NaN;
Def SAntiLow = if SAnti1 > SAnti2 and SAnti2 > SAnti3 and SAnti4 then low[1]-ticksize() else Double.NaN;

def SAntiHighLine = if !IsNaN(SAntiHigh[2]) then double.nan else if !IsNan(SAntiHigh) then SAntiHigh else SAntiHighLine[1];
def SAntiLowLine = if !IsNaN(SAntiLow[2]) then double.nan else if !IsNan(SAntiLow) then SAntiLow else SAntiLowLine[1];

plot SAntiHighPlot = if SAntiHighLine <> 0 then SAntiHighLine else Double.NaN;
SAntiHighPlot.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
SAntiHighPlot.SetDefaultColor(color.LIGHT_RED);
SAntiHighPlot.SetLineWeight(1);

plot SAntiLowPlot = if SAntiLowLine <> 0 then SAntiLowLine else Double.NaN;
SAntiLowPlot.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
SAntiLowPlot.SetDefaultColor(color.LIGHT_GREEN);
SAntiLowPlot.SetLineWeight(1);

Plot SAntiHighSetup = if !IsNaN(SAntiHigh[-2]) then high + ((high - low)*.25) else Double.NaN;
SAntiHighSetup.SetPaintingStrategy(PaintingStrategy.POINTS);
SAntiHighSetup.SetDefaultColor(color.DARK_RED);
SAntiHighSetup.SetLineWeight(5);

Plot SellSetup = If !IsNaN(SAntiHighSetup[2]) and IsNaN(SAntiHighSetup[1]) then 1 else 0;
SellSetup.Hide();
 
Last edited:
Signal triggers on open of bar after trigger bar.
Assume Day time frame due to 2 day rule.
Haven't had time to error check.

Cfh42W6.png


Ruby:
#BUY
Def BAnti1 = if (low[5]-low[4])>0 then (low[5]-low[4]) else 0;
Def BAnti2 = if (low[4]-low[3])>0 then (low[4]-low[3]) else 0;
Def BAnti3 = if (low[3]-low[2])>0 then (low[3]-low[2]) else 0;
Def BAnti4 = low[5] > low[4] and low[4] > low[3] and low[3] > low[2] and low[1] > low[2] and open[1] < close[1];
Def BAntiHigh = if BAnti1 < BAnti2 and BAnti2 < BAnti3 and BAnti4 then high[1]+ticksize() else double.nan;
Def BAntiLow = if BAnti1 < BAnti2 and BAnti2 < BAnti3 and BAnti4 then low[1]-ticksize() else double.nan;

def BAntiHighLine = if !IsNaN(BAntiHigh[2]) then double.nan else if !IsNan(BAntiHigh) then BAntiHigh else BAntiHighLine[1];
def BAntiLowLine = if !IsNaN(BAntiLow[2]) then double.nan else if !IsNan(BAntiLow) then BAntiLow else BAntiLowLine[1];

plot BAntiHighPlot = BAntiHighLine;
BAntiHighPlot.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
BAntiHighPlot.SetDefaultColor(color.LIGHT_GREEN);
BAntiHighPlot.SetLineWeight(1);

plot BAntiLowPlot = BAntiLowLine;
BAntiLowPlot.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
BAntiLowPlot.SetDefaultColor(color.LIGHT_RED);
BAntiLowPlot.SetLineWeight(1);

Plot AntiHighSetup = if !IsNaN(BAntiHigh[-2]) then low - ((high - low)*.25) else double.nan;
AntiHighSetup.SetPaintingStrategy(PaintingStrategy.POINTS);
AntiHighSetup.SetDefaultColor(color.DARK_GREEN);
AntiHighSetup.SetLineWeight(5);


#SELL
Def SAnti1 = if (high[5]-high[4])<0 then (high[5]-high[4]) else 0;
Def SAnti2 = if (high[4]-high[3])<0 then (high[4]-high[3]) else 0;
Def SAnti3 = if (high[3]-high[2])<0 then (high[3]-high[2]) else 0;
Def SAnti4 = high[5] < high[4] and high[4] < high[3] and high[3] < high[2] and high[1] < high[2] and open[1] > close[1];
Def SAntiHigh = if SAnti1 > SAnti2 and SAnti2 > SAnti3 and SAnti4 then high[1]+ticksize() else double.nan;
Def SAntiLow = if SAnti1 > SAnti2 and SAnti2 > SAnti3 and SAnti4 then low[1]-ticksize() else double.nan;

def SAntiHighLine = if !IsNaN(SAntiHigh[2]) then double.nan else if !IsNan(SAntiHigh) then SAntiHigh else SAntiHighLine[1];
def SAntiLowLine = if !IsNaN(SAntiLow[2]) then double.nan else if !IsNan(SAntiLow) then SAntiLow else SAntiLowLine[1];

plot SAntiHighPlot = SAntiHighLine;
SAntiHighPlot.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
SAntiHighPlot.SetDefaultColor(color.LIGHT_RED);
SAntiHighPlot.SetLineWeight(1);

plot SAntiLowPlot = SAntiLowLine;
SAntiLowPlot.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
SAntiLowPlot.SetDefaultColor(color.LIGHT_GREEN);
SAntiLowPlot.SetLineWeight(1);

Plot SAntiHighSetup = if !IsNaN(SAntiHigh[-2]) then high + ((high - low)*.25) else double.nan;
SAntiHighSetup.SetPaintingStrategy(PaintingStrategy.POINTS);
SAntiHighSetup.SetDefaultColor(color.DARK_RED);
SAntiHighSetup.SetLineWeight(5);
@Svanoy

Greatly appreciate your work and time. Will give it a test and confirm findings.

Cheers
Hush

Tested the the script and it is working perfectly with different volatile instruments. Thank you very much for taking the time and creating this indictor for me and the community.

Cheers,
Hush
 
Signal triggers on open of bar after trigger bar.
Assume Day time frame due to 2 day rule.
Haven't had time to error check.

Cfh42W6.png


Ruby:
#BUY
Def BAnti1 = if (low[5]-low[4])>0 then (low[5]-low[4]) else 0;
Def BAnti2 = if (low[4]-low[3])>0 then (low[4]-low[3]) else 0;
Def BAnti3 = if (low[3]-low[2])>0 then (low[3]-low[2]) else 0;
Def BAnti4 = low[5] > low[4] and low[4] > low[3] and low[3] > low[2] and low[1] > low[2] and open[1] < close[1];
Def BAntiHigh = if BAnti1 < BAnti2 and BAnti2 < BAnti3 and BAnti4 then high[1]+ticksize() else double.nan;
Def BAntiLow = if BAnti1 < BAnti2 and BAnti2 < BAnti3 and BAnti4 then low[1]-ticksize() else double.nan;

def BAntiHighLine = if !IsNaN(BAntiHigh[2]) then double.nan else if !IsNan(BAntiHigh) then BAntiHigh else BAntiHighLine[1];
def BAntiLowLine = if !IsNaN(BAntiLow[2]) then double.nan else if !IsNan(BAntiLow) then BAntiLow else BAntiLowLine[1];

plot BAntiHighPlot = BAntiHighLine;
BAntiHighPlot.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
BAntiHighPlot.SetDefaultColor(color.LIGHT_GREEN);
BAntiHighPlot.SetLineWeight(1);

plot BAntiLowPlot = BAntiLowLine;
BAntiLowPlot.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
BAntiLowPlot.SetDefaultColor(color.LIGHT_RED);
BAntiLowPlot.SetLineWeight(1);

Plot AntiHighSetup = if !IsNaN(BAntiHigh[-2]) then low - ((high - low)*.25) else double.nan;
AntiHighSetup.SetPaintingStrategy(PaintingStrategy.POINTS);
AntiHighSetup.SetDefaultColor(color.DARK_GREEN);
AntiHighSetup.SetLineWeight(5);


#SELL
Def SAnti1 = if (high[5]-high[4])<0 then (high[5]-high[4]) else 0;
Def SAnti2 = if (high[4]-high[3])<0 then (high[4]-high[3]) else 0;
Def SAnti3 = if (high[3]-high[2])<0 then (high[3]-high[2]) else 0;
Def SAnti4 = high[5] < high[4] and high[4] < high[3] and high[3] < high[2] and high[1] < high[2] and open[1] > close[1];
Def SAntiHigh = if SAnti1 > SAnti2 and SAnti2 > SAnti3 and SAnti4 then high[1]+ticksize() else double.nan;
Def SAntiLow = if SAnti1 > SAnti2 and SAnti2 > SAnti3 and SAnti4 then low[1]-ticksize() else double.nan;

def SAntiHighLine = if !IsNaN(SAntiHigh[2]) then double.nan else if !IsNan(SAntiHigh) then SAntiHigh else SAntiHighLine[1];
def SAntiLowLine = if !IsNaN(SAntiLow[2]) then double.nan else if !IsNan(SAntiLow) then SAntiLow else SAntiLowLine[1];

plot SAntiHighPlot = SAntiHighLine;
SAntiHighPlot.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
SAntiHighPlot.SetDefaultColor(color.LIGHT_RED);
SAntiHighPlot.SetLineWeight(1);

plot SAntiLowPlot = SAntiLowLine;
SAntiLowPlot.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
SAntiLowPlot.SetDefaultColor(color.LIGHT_GREEN);
SAntiLowPlot.SetLineWeight(1);

Plot SAntiHighSetup = if !IsNaN(SAntiHigh[-2]) then high + ((high - low)*.25) else double.nan;
SAntiHighSetup.SetPaintingStrategy(PaintingStrategy.POINTS);
SAntiHighSetup.SetDefaultColor(color.DARK_RED);
SAntiHighSetup.SetLineWeight(5);
@Svanoy @MerryDay
How can I set up a this indicator to scan a particular Watchlist and alert me via text or on the computer if one of the stocks/etfs on that watchlist meet the criteria?

I currently have 2 setups that I swing/day trade and am looking to be more efficient as its a constant battle to find all equities and ETF's that meet my critiria "efficiently" meaning not manually one by one.

Any suggestions on this would be greatly appriciated.

Thank you all in advance and all the best to everyone in the comminuty this coming 2025 !!

Hush
 
@Svanoy @MerryDay
How can I set up a this indicator to scan a particular Watchlist and alert me via text or on the computer if one of the stocks/etfs on that watchlist meet the criteria?

I currently have 2 setups that I swing/day trade and am looking to be more efficient as its a constant battle to find all equities and ETF's that meet my critiria "efficiently" meaning not manually one by one.

Any suggestions on this would be greatly appriciated.

Thank you all in advance and all the best to everyone in the comminuty this coming 2025 !!

Hush

mMc0cCK.png


Assuming you have a scan already created:
1. change the Scan in field to the name of your watchlist
2. save the scan
3. click the lower menu
4. click Alert when scan results change
 
mMc0cCK.png


Assuming you have a scan already created:
1. change the Scan in field to the name of your watchlist
2. save the scan
3. click the lower menu
4. click Alert when scan results change
@useThinkScript
Thank you for the guidance on setting up a scan to look through a watchlist.

** I don't have the scan for this Indictor - @Svanoy helped creating this indictor at my request and it works splendidly, but I need community help in how to create a scan for this indictor.

Any help would be greatly appreciated: @MerryDay @Svanoy

Kind Thanks to all
Hush
 
I updated the code to include a check value for scanning.

Add the indicator to your scan by clicking on "Add Filter" and selecting a custom study.
Setup 2 conditions as follows:
Woowzxm.png


ax8GYDP.png


Make sure to change drop down box in upper left to "Any".
pQcM9ED.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
247 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