DALEC!CONSTRUCTING THE PUT/CALL RATIO INDICATOR !Author: Sylvain Vervoort, TASC November 2011 !Coded by: Richard Denning 9/11/2011 !**************************************************************************************************************** !NOtE: THIS VERSION USES WEIGHTED AVERAGING AS IN THE ARTICLE BUT IT DOES NOT FUNCTION EFFICIENTLY ! -A MODIFIED VERSION THAT USES EXPONENTIAL AVERAGING, "PC RATIO MOD.EDS" IS THE RECOMMENDED FILE TO USE ! -ONLY THE FIRST INDICATOR IN THIS FILE "pcriFAST" SHOULD BE PLOTTED AS AN INDICATOR !**************************************************************************************************************** emaFAST is 5. movSLOW is 1. movFISH is 2. C is [close]. PCR is tickerUDF("PCratio",C). PCRA is iff(PCR > 0.9,0.9,iff(PCR < 0.45,0.45,PCR)). EMApc is expavg(PCRA,emaFAST). EMA_EMApc is expavg(EMApc,emaFAST). TEMApc is 3*EMApc - 3*EMA_EMApc + expavg(EMA_EMApc,emaFAST). ma1 is (2*TEMApc + valresult(TEMApc,1))/3. ma2 is (2*ma1 + valresult(ma1,1))/3. ma3 is (2*ma2 + valresult(ma2,1))/3. ma4 is (2*ma3 + valresult(ma3,1))/3. ma5 is (2*ma4 + valresult(ma4,1))/3. ma6 is (2*ma5 + valresult(ma5,1))/3. ma7 is (2*ma6 + valresult(ma6,1))/3. ma8 is (2*ma7 + valresult(ma7,1))/3. ma9 is (2*ma8 + valresult(ma8,1))/3. ma10 is (2*ma9 + valresult(ma9,1))/3. rainbPC is (ma1 + ma2 + ma3 + ma4 + ma5 + ma6 + ma7 + ma8 + ma9 + ma10)/10. !RSI WILDER OF rainbPC: !To convert Wilder Averaging to Exponential Averaging use this formula: !ExponentialPeriods = 2 * WilderPeriod - 1. U is rainbPC - valresult(rainbPC,1). D is valresult(rainbPC,1) - rainbPC. W1 is 5. rsiLen1 is 2 * W1 - 1. AvgU is ExpAvg(iff(U>0,U,0),rsiLen1). AvgD is ExpAvg(iff(D>=0,D,0),rsiLen1). rsiPC is 100-(100/(1+(AvgU/AvgD))). !FAST PCRI: pcriFAST is (5*rsiPC + 4*valresult(rsiPC,1) + 3*valresult(rsiPC,2) + 2*valresult(rsiPC,3) + 1*valresult(rsiPC,4))/15. sDevPcri is sqrt(variance(pcriFAST,200)). UPpcri is simpleavg(pcriFAST,200) + 1.3*sDevPcri. DNpcri is simpleavg(pcriFAST,200) - 1.3*sDevPcri. !***************************************************************************************** !NOTE: THE FOLLOWING CODE RUNS TOO SLOW TO BE OF USE AND MAY CAUSE THE COMPUTER TO HANG UP ! -INSTEAD USE THE CODE ON THE "PC RATIO MOD.EDS" FILE FOR THE INDICATORS ! -MOD FILE USES EXPONENTIAL AVERGING VERSUS WEIGHTED !***************************************************************************************** !SLOW PCRI: ma11 is (5*PCRA*100+4*valresult(PCRA*100,1)+3*valresult(PCRA*100,2)+2*valresult(PCRA*100,3)+1*valresult(PCRA*100,4) )/15. ma12 is (5*ma11+4*valresult(ma11,1)+3*valresult(ma11,2)+2*valresult(ma11,3)+1*valresult(ma11,4) )/15. ma13 is (5*ma12+4*valresult(ma12,1)+3*valresult(ma12,2)+2*valresult(ma12,3)+1*valresult(ma12,4) )/15. ma14 is (5*ma13+4*valresult(ma13,1)+3*valresult(ma13,2)+2*valresult(ma13,3)+1*valresult(ma13,4) )/15. ma15 is (5*ma14+4*valresult(ma14,1)+3*valresult(ma14,2)+2*valresult(ma14,3)+1*valresult(ma14,4) )/15. ma16 is (5*ma15+4*valresult(ma15,1)+3*valresult(ma15,2)+2*valresult(ma15,3)+1*valresult(ma15,4) )/15. ma17 is (5*ma16+4*valresult(ma16,1)+3*valresult(ma16,2)+2*valresult(ma16,3)+1*valresult(ma16,4) )/15. ma18 is (5*ma17+4*valresult(ma17,1)+3*valresult(ma17,2)+2*valresult(ma17,3)+1*valresult(ma17,4) )/15. ma19 is (5*ma18+4*valresult(ma18,1)+3*valresult(ma18,2)+2*valresult(ma18,3)+1*valresult(ma18,4) )/15. ma20 is (5*ma19+4*valresult(ma19,1)+3*valresult(ma19,2)+2*valresult(ma19,3)+1*valresult(ma19,4) )/15. rbPCslow is (ma11 + ma12 + ma13 + ma14 + ma15 + ma16 + ma17 + ma18 + ma19 + ma20)/10. pcriS2 is (2*rbPCslow+valresult(rbPCslow,1))/3. pcriS3 is (3*rbPCslow+2*valresult(rbPCslow,1)+1*valresult(rbPCslow,2))/6. pcriS4 is (4*rbPCslow+3*valresult(rbPCslow,1)+2*valresult(rbPCslow,2)+1*valresult(rbPCslow,3))/10. pcriS5 is (5*rbPCslow+4*valresult(rbPCslow,1)+3*valresult(rbPCslow,2)+2*valresult(rbPCslow,3)+1*valresult(rbPCslow,4))/15. pcriS6 is (6*rbPCslow+5*valresult(rbPCslow,1)+4*valresult(rbPCslow,2)+3*valresult(rbPCslow,3)+2*valresult(rbPCslow,4)+1*valresult(rbPCslow,5))/21. pcriSLOW is iff(movSLOW=1,rbPCslow,iff(movSLOW=2,pcriS2,iff(movSLOW=3,pcriS3,iff(movSLOW=4,pcriS4,iff(movSLOW=5,pcriS5,iff(movSLOW=6,pcriS6,pcriS6)))))). !IFISH PCRI: ma21 is (4*PCRA+3*valresult(PCRA,1)+2*valresult(PCRA,2)+1*valresult(PCRA,3) )/10. ma22 is (4*ma21+3*valresult(ma21,1)+2*valresult(ma21,2)+1*valresult(ma21,3) )/10. ma23 is (4*ma22+3*valresult(ma22,1)+2*valresult(ma22,2)+1*valresult(ma22,3) )/10. ma24 is (4*ma23+3*valresult(ma23,1)+2*valresult(ma23,2)+1*valresult(ma23,3) )/10. ma25 is (4*ma24+3*valresult(ma24,1)+2*valresult(ma24,2)+1*valresult(ma24,3) )/10. ma26 is (4*ma25+3*valresult(ma25,1)+2*valresult(ma25,2)+1*valresult(ma25,3) )/10. ma27 is (4*ma26+3*valresult(ma26,1)+2*valresult(ma26,2)+1*valresult(ma26,3) )/10. ma28 is (4*ma27+3*valresult(ma27,1)+2*valresult(ma27,2)+1*valresult(ma27,3) )/10. ma29 is (4*ma28+3*valresult(ma28,1)+2*valresult(ma28,2)+1*valresult(ma28,3) )/10. ma30 is (4*ma29+3*valresult(ma29,1)+2*valresult(ma29,2)+1*valresult(ma29,3) )/10. rbPCslowF is (ma21 + ma22 + ma23 + ma24 + ma25 + ma26 + ma27 + ma28 + ma29 + ma30)/10. pcriSF2 is (2*rbPCslowF+valresult(rbPCslowF,1))/3. pcriSF3 is (3*rbPCslowF+2*valresult(rbPCslowF,1)+1*valresult(rbPCslowF,2))/6. pcriSF4 is (4*rbPCslowF+3*valresult(rbPCslowF,1)+2*valresult(rbPCslowF,2)+1*valresult(rbPCslowF,3))/10. pcriSF5 is (5*rbPCslowF+4*valresult(rbPCslowF,1)+3*valresult(rbPCslowF,2)+2*valresult(rbPCslowF,3)+1*valresult(rbPCslowF,4))/15. pcriSF6 is (6*rbPCslowF+5*valresult(rbPCslowF,1)+4*valresult(rbPCslowF,2)+3*valresult(rbPCslowF,3)+2*valresult(rbPCslowF,4)+1*valresult(rbPCslowF,5))/21. pcriFISH is iff(movFISH=1,rbPCslowF,iff(movFISH=2,pcriSF2,iff(movFISH=3,pcriSF3,iff(movFISH=4,pcriSF4,iff(movFISH=5,pcriSF5,iff(movFISH=6,pcriSF6,pcriSF6)))))). !RSI WILDER OF pcriFISH: !To convert Wilder Averaging to Exponential Averaging use this formula: !ExponentialPeriods = 2 * WilderPeriod - 1. UpF is pcriFISH - valresult(pcriFISH,1). DpF is valresult(pcriFISH,1) - pcriFISH. W2 is 8. rsiLen2 is 2 * W2 - 1. AvgUpF is ExpAvg(iff(UpF>0,UpF,0),rsiLen2). AvgDpF is ExpAvg(iff(DpF>=0,DpF,0),rsiLen2). RSIfish is 100-(100/(1+(AvgUpF/AvgDpF))). X is 0.1*(RSIfish-50). invFISH is ((exp(2*x)-1)/(exp(2*x)+1)+1)*50. FAST if symbol() = "PCratio". SLOW if symbol() = "PCratio". iFISH if symbol() = "PCratio".  Rule Library CCodeViewFAST CReportViewSymbol<PCROPCRAO pcriFASTOPCRATIOR?R?9.;BSLOWSymbol<PCROPCRAO pcriSLOWOPCRATIO(\?(\?BiFISHSymbol<PCROPCRAO pcriFISHOPCRATIO(\?(\?<6?M 00:00