// Downloaded From https://www.WiseStockTrader.com
// Klinger oscillator indicator 
signal_period = Param("Signal Period",13,0,300,1); 
hlc      = High + Low + Close; 
dm       = High - Low; 
cm       = 0; 
trend    = 0; 
for( i = 1; i < BarCount; i++ ) 
{ 
   newtrend = trend; 
   if (hlc[i] > hlc[i-1]) 
      newtrend = 1; 
   if (hlc[i] < hlc[i-1]) 
      newtrend = -1; 
   if (trend == newtrend) 
   { 
      cm       = cm + dm[i]; 
   } 
   else 
   { 
      cm       = dm[i-1] + dm[i]; 
      trend    = newtrend; 
   } 
   if (cm == 0) 
   { 
      vf[i] = 0; 
   } 
   else 
   { 
      vf[i] = Volume[i] * abs(2*((dm[i]/cm)-1)) * trend * 100; 
   } 
} 
kvo    = EMA(vf, 34) - EMA(vf, 55); 
kvosig = EMA(kvo, signal_period); 
Plot(kvo,"Klinger Osc.",colorRed, styleLine); 
Plot(kvosig,"Klinger Osc. Signal",colorBlue, styleLine);