Yes that's perfect. Lastvalue() was the key. Thank all of you for your help!!!!
--- In [email protected], "Howard B" <[EMAIL PROTECTED]> wrote: > > Greetings -- > > See if this is what you want: > > //////////////////////////////////////////////// > > // from Ehlers, John F. Cybernetic Analysis for Stocks and Futures. Wiley. > 2004. > // Chapter 9, p. 107. Code on p. 111. > > function varPeriodRSI( priceField, period ) > { > Chg = priceField - Ref( priceField, -1 ); > pc = Max( Chg, 0 ); > nc = Max( -Chg, 0 ); > > pa = AMA( pc, 1/period ); > na = AMA( nc, 1/period ); > > return 100 * pa / ( pa + na ); > } > > SetBarsRequired(200, 0); > > // Ehlers Dominant Cycle Period > // from Ehlers, John F. Cybernetic Analysis for Stocks and Futures. Wiley. > 2004. > // Chapter 9, p. 107. Code on p. 111. > > function CyclePeriod(array, alpha) > // Figure 9.4 on p. 111 > { > smooth = (array + 2*Ref(array, -1) + 2*Ref(array, -2) + Ref(array, - 3))/6; > > // for(i = 0; i < 7; i++) cycle[i]=array[i]; // Initialize early values and > as array > > for(i = 0; i < 6; i++) > { > InstPeriod[i] = 0; // Initialize early values and as array > DeltaPhase[i] = 0; > cycle[i]=0; > Period[i]=0; > } > > for(i = 6; i < BarCount; i++) > { > cycle[i] = (1 - .5*alpha)*(1 - .5*alpha)*(smooth[i] - 2*smooth[i-1] + > smooth[i-2]) + > 2*(1 - alpha)*cycle[i-1] - (1 - alpha)*(1 - alpha)*cycle[i-2]; > Q1[i] = (.0962*cycle[i] + .5769*cycle[i-2] -.5769*cycle[i-4] - > .0962*cycle[i-6])*(.5 + .08*InstPeriod[i-1]); > I1[i] = cycle[i-3]; > > if(Q1[i] != 0 AND Q1[i-1] != 0) > DeltaPhase[i] = (I1[i]/Q1[i] - I1[i-1]/Q1[i-1])/(1 + > I1[i]*I1[i-1]/(Q1[i]*Q1[i-1])); > if(DeltaPhase[i] < 0.1) DeltaPhase[i] = 0.1; > if(DeltaPhase[i] > 1.1) DeltaPhase[i] = 1.1; > > //----- Speed up the median calculation by placing it inline > > mlen = 5; > for(k = mlen - 1; k >= 0; k--) {temparray[k] = DeltaPhase[i + k - (mlen - > 1)];} > > temp=0; > for(k = mlen - 1; k > 0; k--) > {for (j = mlen - 1; j > 0; j--) > {if (temparray[j-1] > temparray[j]) > { > temp = temparray[j-1]; > temparray[j-1] = temparray[j]; > temparray[j] = temp; > } > } > } > MedianDelta[i] = temparray[mlen - 1 - (mlen / 2)]; > > //----- End median calculation > > if(MedianDelta[i] == 0) DC[i] = 15; > else DC[i] = 6.28318/MedianDelta[i] + .5; > > InstPeriod[i] = .33*DC[i] + .67*InstPeriod[i-1]; > Period[i] = .15*InstPeriod[i] + .85*Period[i-1]; > } > return Period; > } > > Med = (H+L)/2; > > // CyclePeriod > CP = CyclePeriod(Med, .07); > //Plot(CP, "CyclePeriod", colorRed, styleLine); > // > Graph0BarColor=IIf(CP>Ref(CP,-1),colorGreen,colorBlue);//----------- ----------------------------- > > > Med = (H+L)/2; > > // CyclePeriod > CP = (CyclePeriod(Med, .07))/2; > > > //#include_once <varPeriodRSI.afl> > > Vp = Varperiodrsi(C,LastValue(Cp)); > VpSm = DEMA(Vp,3); > > Buy = Cross(Vp,Vpsm); > //Sell=Cross(vpsm,vp); > Sell = BarsSince(Buy) >=5; > > Plot(C,"C",colorBlack,styleCandle); > PlotShapes(Buy*shapeUpArrow+Sell*shapeDownArrow, > IIf(Buy,colorGreen,colorRed)); > > > > Plot(Vp,"VPRSI", colorRed, styleLine|styleLeftAxisScale); > Plot(VpSm,"VPRSISM",colorGreen,styleLine|styleLeftAxisScale); > > _SECTION_END(); > > ///////////////////////////////////////////// > > Thanks, > Howard > www.quantitativetradingsystems.com > > > On Jan 17, 2008 4:30 PM, jeffro861 <[EMAIL PROTECTED]> wrote: > > > I'm still getting a blank in the chart. > > > > thanks, > > Jeff H. > > > > // from Ehlers, John F. Cybernetic Analysis for Stocks and Futures. > > Wiley. 2004. > > // Chapter 9, p. 107. Code on p. 111. > > > > function CyclePeriod(array, alpha) > > // Figure 9.4 on p. 111 > > { > > smooth = (array + 2*Ref(array, -1) + 2*Ref(array, -2) + Ref (array, - > > 3))/6; > > > > // for(i = 0; i < 7; i++) cycle[i]=array[i]; // Initialize early > > values and as array > > > > for(i = 0; i < 6; i++) > > { > > InstPeriod[i] = 0; // Initialize early values and as array > > DeltaPhase[i] = 0; > > cycle[i]=0; > > Period[i]=0; > > } > > > > for(i = 6; i < BarCount; i++) > > { > > cycle[i] = (1 - .5*alpha)*(1 - .5*alpha)*(smooth[i] - 2*smooth[i- > > 1] + smooth[i-2]) + > > 2*(1 - alpha)*cycle[i-1] - (1 - alpha)*(1 - alpha) > > *cycle[i-2]; > > Q1[i] = (.0962*cycle[i] + .5769*cycle[i-2] -.5769*cycle[i-4] - > > .0962*cycle[i-6])*(.5 + .08*InstPeriod[i-1]); > > I1[i] = cycle[i-3]; > > > > if(Q1[i] != 0 AND Q1[i-1] != 0) > > DeltaPhase[i] = (I1[i]/Q1[i] - I1[i-1]/Q1[i-1])/(1 + I1[i]*I1 > > [i-1]/(Q1[i]*Q1[i-1])); > > if(DeltaPhase[i] < 0.1) DeltaPhase[i] = 0.1; > > if(DeltaPhase[i] > 1.1) DeltaPhase[i] = 1.1; > > > > //----- Speed up the median calculation by placing it inline > > > > mlen = 5; > > for(k = mlen - 1; k >= 0; k--) {temparray[k] = DeltaPhase[i + k - > > (mlen - 1)];} > > > > temp=0; > > for(k = mlen - 1; k > 0; k--) > > {for (j = mlen - 1; j > 0; j--) > > {if (temparray[j-1] > temparray[j]) > > { > > temp = temparray[j-1]; > > temparray[j-1] = temparray[j]; > > temparray[j] = temp; > > } > > } > > } > > MedianDelta[i] = temparray[mlen - 1 - (mlen / 2)]; > > > > //----- End median calculation > > > > if(MedianDelta[i] == 0) DC[i] = 15; > > else DC[i] = 6.28318/MedianDelta[i] + .5; > > > > InstPeriod[i] = .33*DC[i] + .67*InstPeriod[i-1]; > > Period[i] = .15*InstPeriod[i] + .85*Period[i-1]; > > } > > return Period; > > } > > > > Med = (H+L)/2; > > > > // CyclePeriod > > CP = (CyclePeriod(Med, .07))/2; > > > > #include_once <varPeriodRSI.afl> > > Plot(Varperiodrsi(C,Cp),"CyclePeriod", colorRed, styleLine); > > _SECTION_END(); > > > > > > --- In [email protected] <amibroker%40yahoogroups.com>, > > "bilbo0211" <bilbod@> wrote: > > > > > > --- In [email protected] <amibroker%40yahoogroups.com>, > > "jeffro861" <jeffro861@> wrote: > > > > > > > > Thanks for the response! This seems like it would work but when > > I > > > > try and plot this function it doesn't show anything, but at least > > I'm > > > > not getting an error message. Does anybody have any idea why? > > > > > > #include_once <varPeriodRSI.afl> > > > > > > Plot(varPeriodRSI(C,14),"",colorRed); > > > > > > period=IIf(C>O,5,25); > > > > > > Plot(varPeriodRSI((H+L)/2,period),"",colorBlue); > > > > > > The above code works for me, show the code you are using. > > > > > > Bill > > > > > > > > > >
