Ehlers Adaptive Cyber Cycle Indicator [LazyBear]

Another famous Ehlers indicator.

This is the adaptive version of Ehlers' Cyber Cycle ( CC             ) (already published, check "More info" below). Idea behind making something "adaptive" is to calculate it using dynamic cycle period inputs instead of static setting. In adaptive cyber cycle, Ehlers uses the dominant cycle period as the length in computation of alpha.

According to Ehlers this should be more responsive than the non-adaptive version. Buy and sell signals should often occur one bar earlier than for the non-adaptive version.

I have the usual options in place. Check out plain CC             for comparison.

More info:
- Cyber Cycle Indicator:
Ehlers Cyber Cycle Indicator [LazyBear]

- Cybernetic Analysis for Stocks and Futures ( Ehlers )

List of my public indicators:
List of my app-store indicators:
Remove from Favorite Scripts Add to Favorite Scripts
// @author LazyBear 
// List of my public indicators: 
// List of my app-store indicators: 
study("Ehlers Adaptive Cyber Cycle Indicator [LazyBear]", shorttitle="EACCI_LB", overlay=false, precision=3)
src=input(hl2, title="Source") 
a=input(.07, title="Alpha")
s = (src + 2*src[1] + 2*src[2] + src[3])/6.0
c = n<7?(src - 2*src[1] + src[2])/4.0:((1 - 0.5*a)*(1 - 0.5*a)*(s - 2*s[1] + s[2]) + 2*(1-a)*c[1] - (1 - a)*(1-a)*c[2])
q1 = (.0962*c + 0.5769*c[2] - 0.5769*c[4] - .0962*c[6])*(0.5+.08*nz(ip[1]))
I1 = c[3]
dp_ = iff(q1 != 0 and q1[1] != 0, (I1/q1 - I1[1]/q1[1]) / (1 + I1*I1[1]/(q1*q1[1])),0)
dp = iff(dp_ < 0.1, 0.1, iff(dp_ > 1.1, 1.1, dp_))
med(x,y,z) => (x+y+z) - min(x,min(y,z)) - max(x,max(y,z))
md = med(dp,dp[1], med(dp[2], dp[3], dp[4]))
dc = iff(md == 0, 15, 6.28318 / md + 0.5)
ip = .33*dc + .67*nz(ip[1])
p = .15*ip + .85*nz(p[1])
a1 = 2.0/(p + 1)
ac=nz(((1-0.5*a1)*(1-0.5*a)*(s-2*s[1]+s[2])+2*(1-a1)*ac[1]-(1-a1)*(1-a1)*ac[2]), (src-2*src[1]+src[2])/4.0)
fr=input(true, title="Fill Osc/Trigger region")
plot(0, color=gray, title="ZeroLine")
duml=plot(fr?(ac>t?ac:t):na, style=circles, linewidth=0, color=gray, title="Dummy")
cmil=plot(ac, title="AdaptiveCyberCycle",color=blue)
tl=plot(t, title="Trigger",color=green)
fill(cmil, duml, color=red, transp=50, title="NegativeFill")
fill(tl, duml, color=lime, transp=50, title="PositiveFill")
ebc=input(false, title="Color bars?")
bc=ebc?(ac>0? (ac>t?lime:(ac==t?gray:green)): (ac<t?red:orange)):na
Some more charts:

BTC 4hrs:


+1 Reply
Another interesting early indication from ACC.

+1 Reply
Thanks for sharing!!!!! You have taken TV at much higher level!!! Appreciate your effort. Again a Great Indicator!!!!!!
+1 Reply
LazyBear PRO sudhir.mehta
Thank you for your kind words.
Since you already coded so many Ehlers indicators this week I was afraid to ask for even more Ehlers :) I'm happy you decided yourself to complete the collection with the adaptive versions. In my test it surprised me that the Adaptive Cyber Cycle seems to be faster than the Adaptive Center Of Gravity (CG) indicator. I expected the Center Of Gravity to be faster, because it behaves similar to the classic stochastic indicator (which is very fast).

+2 Reply
Ideas Scripts Chart
United States
United Kingdom
Home Stock Screener Forex Signal Finder Economic Calendar How It Works Chart Features House Rules Moderators For the WEB Widgets Stock Charting Library Priority Support Feature Request Blog & News FAQ Help & Wiki Twitter
Private Messages Chat Ideas Published Followers Following Priority Support Public Profile Profile Settings Account and Billing Sign Out