The Kase Peak Oscillator technical indicator was developed by Cynthia Kase.
The Kase Peak Oscillator indicator algorithm combines an Average True Range indicator and a Standard Deviation volatility indicator.
The logarithmic models used better reflect the true nature of the market and allow the indicator to automatically adapt to cycle time and volatility.
Second version of this indicator already in the library, but this time converted from a more advanced code translated from MT4 code, by a request in forums.
//PRC_Kase Peak Oscillator V2 | indicator
//19.07.2017
//Nicolas @ www.prorealcode.com
//Sharing ProRealTime knowledge
//translated from MT4 code
// --- settings
//kpoDeviations = 2.0 // Kase peak oscillator deviations
//kpoShortCycle = 8 // Kase peak oscillator short cycle
//kpoLongCycle = 65 // Kase peak oscillator long cycle
//kpoSensitivity = 40
//allPeaksMode = 0 //1=true ; 0=false
// --- end of settings
if barindex>kpoLongCycle*2 then
ccLog = Log(Close[0]/Close[1])
ccDev = std[9](ccLog)
avg = average[30](ccDev)
if (avg>0) then
max1 = 0
maxs = 0
for k = kpoShortCycle to kpoLongCycle-1 do
max1 = Max(Log(High[0]/Low[0+k])/Sqrt(k),max1)
maxs = Max(Log(High[0+k]/Low[0])/Sqrt(k),maxs)
next
x1 = max1/avg
xs = maxs/avg
endif
xp = kpoSensitivity*(average[3](x1)-average[3](xs))
xpAbs = Abs(xp)
kpoBuffer = xp
kphBuffer = xp
tmpVal = average[50](xpAbs)+kpoDeviations*std[50](xpAbs)
maxVal = Max(90.0,tmpVal)
minVal = Min(90.0,tmpVal)
if (kpoBuffer > 0) then
kpdBuffer = maxVal
kpmBuffer = minVal
else
kpdBuffer = -maxVal
kpmBuffer = -minVal
endif
kppbuffer=0
if (not allPeaksMode) then
if (kpoBuffer[1]>0 and kpoBuffer[1]>kpoBuffer[0] and kpoBuffer[1]>=kpoBuffer[2] and kpoBuffer[1]>= maxVal) then
kppBuffer = kpoBuffer[1]
endif
if (kpoBuffer[1]<0 and kpoBuffer[1]<kpoBuffer[0] and kpoBuffer[1]<=kpoBuffer[2] and kpoBuffer[1]<=-maxVal) then
kppBuffer = kpoBuffer[1]
endif
else
if (kpoBuffer[1]>0 and kpoBuffer[1]>kpoBuffer[0] and kpoBuffer[1]>=kpoBuffer[2]) then
kppBuffer = kpoBuffer[1]
endif
if (kpoBuffer[1]<0 and kpoBuffer[1]<kpoBuffer[0] and kpoBuffer[1]<=kpoBuffer[2]) then
kppBuffer = kpoBuffer[1]
endif
endif
endif
return kphBuffer coloured(105,105,105) style(histogram), kpoBuffer coloured(105,105,105) style(line,2), kpdBuffer coloured(255,0,255), kpmBuffer coloured(0,191,255), kppBuffer coloured(255,0,255) style(histogram,2)