// Downloaded From https://www.WiseStockTrader.com /* Detecting double tops and bottoms*/ percdiff = 5; /* peak detection threshold */ fwdcheck = 5; /* forward validity check */ mindistance = 10; validdiff = percdiff/10; PK= Peak( H, percdiff, 1 ) == High; TR= Trough( L, percdiff, 1 ) == Low; x = Cum( 1 ); XPK1 = ValueWhen( PK, x, 1 ); XPK2 = ValueWhen( PK, x, 2 ); xTR1 = ValueWhen( Tr, x, 1 ); xTr2 = ValueWhen( Tr, x, 2 ); peakdiff = ValueWhen( PK, H, 1 )/ValueWhen( PK, H, 2 ); Troughdiff=ValueWhen( tr, L, 1 )/ValueWhen( tr, L, 2 ); doubletop = PK AND abs( peakdiff - 1 ) < validdiff AND (Xpk1 -Xpk2)>mindistance AND High > HHV( Ref( H, fwdcheck ), fwdcheck - 1 ); doubleBot=tr AND abs( troughdiff - 1 ) < validdiff AND (Xtr1 -Xtr2)>mindistance AND Low < LLV( Ref( L, fwdcheck ), fwdcheck - 1 ); Sell = doubletop; Buy = doublebot; WriteIf( Highest( doubletop ) == 1, "AmiBroker has detected some possible double top patterns for " + Name() + "\nLook for green arrows on the price chart.", "There are no double top patterns for " + Name() ); WriteIf(Highest( doublebot)==1,"AmiBroker has detected some possible double bottom patterns for " + Name() + "\nLook for red arrows on the price chart.", "There are no double bottom patterns for " + Name() ); Filter=Sell OR Buy ; AddColumn( IIf( doubletop , 88, 01), "Double TOP", formatChar ); AddColumn( IIf( doublebot , 88, 01), "Double BOT", formatChar );