Double Top/Bottom

Here is an attempt to identify double top /bottom based on pivot high/lows.

Logic is simple.

Double Bottom:
  • Last two pivot High Lows make W shape
  • Last Pivot Low is higher than previous Last Pivot Low.
  • Last Pivot High is lower than previous last Pivot High.
  • Price has not gone below Last Pivot Low
  • Price breaks out of last Pivot High to complete W shape

Double Top:
  • Last two pivot High Lows make M shape
  • Last Pivot Low is higher than previous Last Pivot Low.
  • Last Pivot High is lower than previous last Pivot High.
  • Price has not gone above Last Pivot High
  • Price breaks out of last Pivot Low to complete M shape


  • Parameters PvtLenL, PvtLenR and waitforclose determines pivot points .
  • FilterPivots clears repetitive pivots formed in same direction before calculating the possible double top /bottom.

    For example:

  • CheckForAbsolutePeaks and AbsolutePeakLoopback works together. When CheckForAbsolutePeaks is enabled, script only generates double bottom or top signal if previous last pivot is absolute high or low for AbsolutePeakLoopback periods.

  • ConsiderMovingAverage does two things. First, it makes sure that fast moving average and slow moving averages are aligned with the direction we are going to forecast. Second, it makes sure that the crossover happend recently and with last BarCrossoverLimit bars. For example, to call it double bottom , Fast MA should be higher than Slow MA and crossover of FastMA above SlowMA should have happened in last 10 bars (BarCrossoverLimit)

  • PivotDisplayMode can be Actual, Filtered or None. Actual will display all pivot high low generated. Filtered will only display last 5 pivot high and pivot lows which are filtered. That means, it will remove the repetitive pivots formed without making pivots on the other side.

    Welcome and suggestions and feedbacks.
Release Notes:
  • Simplied array related code
  • Added horizontal dashed line for double top/bottom confirmation candle
  • Added alert condition for double top/bottom
Release Notes: Add filterPivots logic back
Release Notes:
  • Improved filtering pivots
  • Improved absolute peak detection
Release Notes:
  • Using HMA 20/100 as default for moving average check
  • Removed barCrossLimit. Instead check if moving average crossover happened after last high/last low peaks.
  • Added condition to check distance between High and Low pivots of double top/bottom before considering them. For example,
    Without pivot distance check, chart would look like this:
    With pivot distance check,
Open-source script

In true TradingView spirit, the author of this script has published it open-source, so traders can understand and verify it. Cheers to the author! You may use it for free, but reuse of this code in a publication is governed by House Rules. You can favorite it to use it on a chart.

Want to use this script on a chart?
Please PM me if you need access to any invite only scripts.

Join tradingview: https://www.tradingview.com/gopro/?share_your_love=sudh


Thank you! Q - Is there an alert function to let me know when double tops/bottoms are formed?
+2 Reply
HeWhoMustNotBeNamed zeynebozkan0901
@zeynebozkan0901, I will add that in the next release.
Thanks for all wonderful efforts
+1 Reply
as always great done,,,thanks
+1 Reply
Nice work . thanks
+1 Reply
What is the reason for the forward pivot setting? Can you eleborate?
@idsme, you mean filter pivots?

Sometimes multiple pivot highs or lows formed without forming other direction pivots. This happens if pivot length R is lesser than pivot length L. The setting will ignore intermediate ones of same direction.

Also explained in one of the attached pic in description.