// Downloaded From https://www.WiseStockTrader.com _SECTION_BEGIN("Dominant Period"); ///SetBarsRequired( 1000, 1000); prc = ( High + Low ) / 2; Cyclepart = 0.7 ; Smooth[0] = Detrender[0] = I1[0] = Q1[0] = jI[0] = jQ[0] = I2[0] = Q2[0] = Re[0] = Im[0] = Period[0] = SmoothPeriod[0] = 0; for ( i = 6; i < BarCount; i++ ) { Smooth[i] = ( 4 * prc[i] + 3 * prc[i-1] + 2 * prc[i-2] + prc[i-3] ) / 10; AmpCorr[i] = 0.075 * Period[i-1] + 0.54; Detrender[i] = ( 0.0962 * Smooth[i] + 0.5769 * Smooth[i-2] - 0.5769 * Smooth[i-4] - 0.0962 * Smooth[i-6] ) * AmpCorr[i]; Q1[i] = ( 0.0962 * Detrender[i] + 0.5769 * Detrender[i-2] - 0.5769 * Detrender[i-4] - 0.0962 * Detrender[i-6] ) * AmpCorr[i]; I1[i] = Detrender[i-3]; jI[i] = ( 0.0962 * I1[i] + 0.5769 * I1[i-2] - 0.5769 * I1[i-4] - 0.0962 * I1[i-6] ) * AmpCorr[i]; jQ[i] = ( 0.0962 * Q1[i] + 0.5769 * Q1[i-2] - 0.5769 * Q1[i-4] - 0.0962 * Q1[i-6] ) * AmpCorr[i]; I2[i] = I1[i] - jQ[i]; Q2[i] = Q1[i] + jI[i]; I2[i] = 0.2 * I2[i] + 0.8 * I2[i-1]; Q2[i] = 0.2 * Q2[i] + 0.8 * Q2[i-1]; Re[i] = I2[i] * I2[i-1] + Q2[i] * Q2[i-1]; Im[i] = I2[i] * Q2[i-1] - Q2[i] * I2[i-1]; Re[i] = 0.2 * Re[i] + 0.8 * Re[i-1]; Im[i] = 0.2 * Im[i] + 0.8 * Im[i-1]; if ( Im[i] != 0 AND Re[i] != 0 ) Period[i] = 360 / atan( Im[i] / Re[i] ); if ( Period[i] > 1.5 * Period[i-1] ) Period[i] = 1.5 * Period[i-1]; if ( Period[i] < 0.67 * Period[i-1] ) Period[i] = 0.67 * Period[i-1]; if ( Period[i] < 6 ) Period[i] = 6; if ( Period[i] > 50 ) Period[i] = 50; Period[i] = 0.2 * Period[i] + 0.8 * Period[i-1]; SmoothPeriod[i] = 0.33 * Period[i] + 0.67 * SmoothPeriod[i-1]; } _SECTION_END(); _SECTION_BEGIN("Variable period CCI"); function MeanDev( array, mean, range ) { result = 0; for( i = LastValue( range ) ; i < BarCount; i++ ) { result[ i ] = 0; // the mean is not 'moving' over the range (outside the loop) tm = mean[ i ]; for( j = 0; j < range[ i ] AND ( i - j ) >= 0 AND ( i - j ) < BarCount; j++ ) { result[ i ] = result[ i ] + abs( array[ i - j ] - tm ); } result[ i ] = result[ i ]/range[ i ]; } return result; } function VarCCI( array, period ) { SMATP = MA(array,period );//1,2 MD = MeanDev( array, SMATP, period ); KCCI = (Avg - SMATP) / (0.015 * MD); return KCCI; } sp=int(SmoothPeriod*Cyclepart); //lcol = IIf( VarCCI(Avg, Sp) > Ref( VarCCI(Avg, Sp), -1 ), IIf( VarCCI(Avg, Sp) > 0, 27, 27 ), IIf( VarCCI(Avg, Sp) > 0, 32,32 ) );// 27 43 11 32 //mcol =IIf(VarCCI(Avg, Sp)>0,colorGreen,colorRed); ///Plot(VarCCI(Avg, Sp),"KCCI",lcol,2|styleThick); ////Plot(VarCCI(Avg, Sp),"",lcol,1|styleThick); //////////////////////////////////////////////////////////////////////////////////////////// _SECTION_BEGIN("OSCILLATOR"); SetChartBkColor(colorBlack); //AA=EMA(a,14)-EMA(a,42); ///BB=AA/EMA(a,42); ifish=WMA(VarCCI(Avg,Sp),Sp); upbar = ifish> Ref(ifish,-1); downbar = ifish < Ref(ifish,-1); barcolor2=IIf(ifish>0,IIf(ifish>Ref(ifish,-1),colorDarkGreen,colorYellow),IIf(ifish>Ref(ifish,-1),colorBlue,colorRed)); O = IIf(downbar, ifish, 0); C = IIf(downbar, 0,ifish); L=0; H = ifish; ColorHighliter = IIf(ifish>0,IIf(ifish>Ref(ifish,-1),colorDarkGreen,colorYellow),IIf(ifish>Ref(ifish,-1),colorBlue,colorRed)); SetBarFillColor( ColorHighliter ); barcolor = IIf(ifish