Kase Peak Oscillator, Kase CD and Kase Permission
Forums › ProRealTime English forum › ProBuilder support › Kase Peak Oscillator, Kase CD and Kase Permission
- This topic has 45 replies, 8 voices, and was last updated 5 years ago by ggolfet.
-
-
06/28/2018 at 8:33 AM #74585
Hi Bard, thanks for all these interesting documents about Cynthia Kase’s works and studies. The new version of the Dev Stop to be coded from MT5 is on my to-do list, don’t worry 🙂 I changed the featured image of your recent post with the new one you provided, thank you.
06/28/2018 at 10:40 AM #74603Thanks very much for doing that @Nicolas much appreciated.
Can I / should I, repost the Kase Convergence Divergence code here in a new forum post? Maybe other members would like to take a look at it (and I will refer back to this url for readers to view Kase Research papers like the last pdf I posted)?Cheers
Bard06/29/2018 at 7:48 AM #7468006/29/2018 at 1:08 PM #7479607/06/2018 at 11:45 AM #75453Hi,
Would anyone like to take a look at coding the following from the top of this post/thread:?
The combination of using both the Kase Peak Oscillator (already coded on this forum in the indicators section) and the Kase Convergence/Divergence indicator have solid statistical evidence in predicting market turns.
2) Kase CD (Convergence/Divergence)
3) Kase Permission Screen
The Permissions Screener provides an easy visual on when to enter the market.
The statistical reasons for using these indicators — apart from the fact the Kase Convergence/Divergence indicator actually draws lines showing when these occur, pls see green lines screenshot and the comparison of Kase indicators with the Stochastic and MACD indicator showing divergences — are well explained in this presentation by the founder and designer of the indicators, the award winning market technician Cynthia Kase CMT.
https://www.youtube.com/watch?time_continue=1&v=2h6zldXeTW0
Kase was an energy trader and worked for Aramco consulting as a Director of Technical Analysis and Director of Risk Management.
The screenshots shows the probabilities for an indicator signal predicting a market turn and preceding a turn using traditional indicators like the RSI and MACD and Kase’s indicators: The Peak Oscillator and the Kase CD indicator. The stats for the market moving to Kase Dev Stop 1 and 3 are also provided.
“If there is a signal, there is a 71% chance that you will hit Dev Stop 1 using traditional indicators and a 75% chance if you use Kase indicators… for the big turns, so if you have a signal with a traditional indicator like the RSI and MACD there’s only a 28% chance you’re predicting an excursion to the third level stop (Dev Stop 3)… where with the Kase indicators there’s a 43.5% chance that you’re predicting a move to the third level stop (Dev Stop 3).” (Explained around the 25 min mark in the presentation link above).
She then explains the probabilities of how often indicators precede turns. “Rather than looking at a signal and do I get a turn after it, I’m looking at turns then looking back to see how often I got a signal. Here the difference is much more dramatic.. (second stats screenshot), 55% (traditional indicators) versus 82% (Kase PO and Kase CD). What this mean is that you can rely on the Kase indicators to tell you there’s going to be a turn.”
1 user thanked author for this post.
07/06/2018 at 12:25 PM #7546007/06/2018 at 12:27 PM #75462Just found this one for Kase Peak and Kase CD in the same indi:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051en=plen1 = 10smooth=catr = AverageTrueRange[len](pri)/// Kase Peak Osc ///RWH=(High-Low[len1])/(atr*SQRT(len1))RWL=(High[len1]-Low)/(atr*SQRT(len1))X=RWH-RWLpek=WeightedAverage[smooth](X)mean=Average[len](pek)sd=STD[len](pek)c1=(mean+(nbdev*sd)) > nbhighc2=(mean-(nbdev*sd)) < -nblowc3=pek[1] >= 0 And pek > 0c4=pek[1] <= 0 And pek < 0If c1 Thenv1=mean+(nbdev*sd)Elsev1=nbhighEndifIf c2 Thenv2=mean-(nbdev*sd)Elsev2=-nblowEndifIf c3 Thenv3=v1Elsif c4 Thenv3=v2Elsev3=0Endif/// Kase CD ///pk=WeightedAverage[smooth](X)pki = Average[8](pk)KCD=(pk)-Average[8](pk)Return pek as "Kase Peak Osc", v3 as "Peak Osc Line", KCD as "Kase CD", pki as "Signal"07/06/2018 at 1:52 PM #75478Thanks, but what made Kase’s Peak Osc and Con/Divergence indicators more accurate was their ability to adapt to changing cycle lengths, being logarithmic and be able to use a Serial Dependancy index.
As an example from the code I posted at the top of this thread, I believe it’s this part of the code that covers the cycle length Nicolas:
Ps// The code writer had been in touch with Kase)123456789101112131415161718192021extern string TimeFrame = “Current time frame”;extern double kcdDeviations = 2.0;extern int kcdShortCycle = 8;extern int kcdLongCycle = 65;extern double kcdSensitivity = 40;extern bool allPeaksMode = false;extern bool drawDivergences = true;extern bool drawIndicatorTrendLines = true;extern bool drawPriceTrendLines = true;extern string drawLinesIdentificator = “kaseCD1″;extern bool Interpolate = true;And this:
1234567891011double max1 = 0;double maxs = 0;for (int k=kcdShortCycle; k<kcdLongCycle; k++){max1 = MathMax(MathLog(High[i]/Low[i+k])/MathSqrt(k),max1);maxs = MathMax(MathLog(High[i+k]/Low[i])/MathSqrt(k),maxs);Here’s a slide from her presentation where she writes out the features: (the scribble is Log P/P(n))
Cheers
Bard08/12/2018 at 5:56 PM #78058Coding the Kase Convergence/Divergence indicator?
Is there anyone that would like to convert Cynthia Kase’s Convergence/Divergence indicator?
Kase has already statistically proven the validity of using her Kase Peak Oscillator (KPO) combined with the Convergence/Divergence (KCD) indicator and it out performs conventional indicators like RSI and MACD for picking out market turning points:
http://www.kaseco.com/support/articles/Proof_That_Technical_Analysis_Really_Works.pdfUsing the KPO and Kase’s Dev Stops have produced more profitable results — on many different currency pairs and also Brent Crude, the Dow and DAX, (just change which Dev Stop to use due to individual markets having their own volatility profile) — than any other system/indicators I’ve used on PRT including the stunning John Ehlers indicators.
As @nicolas pointed out to me, the danger with mean reverting systems is that they can also potentially get you in on the wrong side of the trade resulting in wider movement against your position before the Dev Stop closes the position.
When testing, look at the Maximum Adverse Excursion column figures in the Detailed Report to gauge validity. I have taken out the ADX > 25 part of the entry code to minimise complexity and help future results being less robust than back tests. The simpler the system with the less parameters the more robust it will be in the future.
Please see screen shot for results on the (stable) Swissy (USD/CHF) usingi different time frames and Dev Stops:
The code for the KPO is on this forum as is the code for the Kase’s Dev Stops is below (check out KRev (Reversal) Amounts too to calculate your monetary risk per trade per Dev Stop stop line).
If anyone would like to add to this code below, maybe try different financial instruments or maybe add a trend filter or perhaps a Choppiness Index/Kaufman Efficiency Ratio – I haven’t had time yet – please feel free and post your results here.
When adding a Trailing Stop results were sometimes better, sometimes worse.
Thanks a lot,
BardKase PO + Dev Stop123456789101112131415161718192021222324252627282930313233// Definition of code parametersDEFPARAM CumulateOrders = False // Cumulating positions deactivated// Conditions to enter long positionsignored, ignored, ignored, ignored, indicator2 = CALL "Kase Peak Oscillator"c1 = (indicator2 < 0) //Kase Pink Bar Peak Out EntryIF c1 THENBUY 10 PERPOINT AT MARKETENDIF// Conditions to exit long positionsignored,ignored,ignored,ignored,indicator3, ignored = CALL "Kase Dev Stop Lisse +SAR+4.5/6"c2 = (close CROSSES UNDER indicator3) // Kase Dev Stop 4.5IF c2 THENSELL AT MARKETENDIF// Conditions to enter short positionsignored, ignored, ignored, ignored, indicator5 = CALL "Kase Peak Oscillator"c3 = (indicator5 > 0)IF c3 THENSELLSHORT 10 PERPOINT AT MARKETENDIF// Conditions to exit short positionsignored,ignored,ignored, ignored,indicator6, ignored = CALL "Kase Dev Stop Lisse +SAR+4.5/6"c4 = (close CROSSES OVER indicator6)IF c4 THENEXITSHORT AT MARKETENDIFKase Dev Stop +SAR+4.5/6123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107//KASE DEV STOP + 4.5 + 6.0//Settingsn=30p1=1.0p2=2.2p3=3.6p4=4.5p5=6.0difference=0Hg=highest[2](high)Lw=lowest[2](low)DTR=max(max(Hg-Lw,abs(Hg-close[2])),abs(Lw-close[2]))aDTR=average[n](DTR)for i=0 to n-1 dodifference=difference+square(DTR[i]-aDTR)nextdifference=difference/nsdev=sqrt(difference)dev0=close-aDTRdev1=close-aDTR-p1*sdevdev2=close-aDTR-p2*sdevdev3=close-aDTR-p3*sdevdev4=close-aDTR-p4*sdevdev5=close-aDTR-p5*sdevif dev0<dev0[1] and close>dev5[1] thendev0=dev0[1]endifif dev1<dev1[1] and close>dev5[1] thendev1=dev1[1]endifif dev2<dev2[1] and close>dev5[1] thendev2=dev2[1]endifif dev3<dev3[1] and close>dev5[1] thendev3=dev3[1]endifif dev4<dev4[1] and close>dev5[1] thendev4=dev4[1]endifif dev5<dev5[1] and close>dev5[1] thendev5=dev5[1]endifdev6=close+aDTRdev7=close+aDTR+p1*sdevdev8=close+aDTR+p2*sdevdev9=close+aDTR+p3*sdevdev10=close+aDTR+p4*sdevdev11=close+aDTR+p5*sdevif dev6>dev6[1] and close<dev11[1] thendev6=dev6[1]endifif dev7>dev7[1] and close<dev11[1] thendev7=dev7[1]endifif dev8>dev8[1] and close<dev11[1] thendev8=dev8[1]endifif dev9>dev9[1] and close<dev11[1] thendev9=dev9[1]endifif dev10>dev10[1] and close<dev11[1] thendev10=dev10[1]endifif dev11>dev11[1] and close<dev11[1] thendev11=dev11[1]endifif close>dev11[1] thenflag=-1elseif close<dev5[1] thenflag=1endifendifif flag=-1 thenind0=dev0ind1=dev1ind2=dev2ind3=dev3ind4=dev4ind5=dev5//k=1r=0g=191b=255elseind0=dev6ind1=dev7ind2=dev8ind3=dev9ind4=dev10ind5=dev11//k=-1r=255g=128b=0endif//ORANGE AND LIGHT BLUEreturn ind0 coloured(r,g,b) style(dottedline,2) as "Warning Line", ind1 coloured(r,g,b) style(dottedline,2) as "Dev Stop 1.0", ind2 coloured(r,g,b) style(dottedline,2) as "Dev Stop 2.2", ind3 coloured(r,g,b) style(line,2) as "Dev Stop 3.6", ind4 coloured(r,g,b) style(dottedline,2) as "Dev Stop 4.5", ind5 coloured(r,g,b) style(line,2) as "Dev Stop 6.0"08/12/2018 at 8:57 PM #7806308/13/2018 at 11:29 AM #78073Hi Fr7,
I don’t recognise these variables?
Try the latest version (V2) that Nicolas updated here:
I left settings as standard.Kase Peak Oscillator V3123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172//PRC_Kase Peak Oscillator V2 | indicator//19.07.2017//Nicolas @ www.prorealcode.com//Sharing ProRealTime knowledge//translated from MT4 code// --- settingskpoDeviations= 2.0 // Kase peak oscillator deviationskpoShortCycle= 8 // Kase peak oscillator short cyclekpoLongCycle = 65 // Kase peak oscillator long cyclekpoSensitivity = 40allPeaksMode = 0 //1=true ; 0=false// --- end of settingsif barindex>kpoLongCycle*2 thenccLog = Log(Close[0]/Close[1])ccDev = std[9](ccLog)avg = average[30](ccDev)if (avg>0) thenmax1 = 0maxs = 0for k = kpoShortCycle to kpoLongCycle-1 domax1 = Max(Log(High[0]/Low[0+k])/Sqrt(k),max1)maxs = Max(Log(High[0+k]/Low[0])/Sqrt(k),maxs)nextx1 = max1/avgxs = maxs/avgendifxp= kpoSensitivity*(average[3](x1)-average[3](xs))xpAbs = Abs(xp)kpoBuffer = xpkphBuffer = xptmpVal = average[50](xpAbs)+kpoDeviations*std[50](xpAbs)maxVal = Max(90.0,tmpVal)minVal = Min(90.0,tmpVal)if (kpoBuffer > 0) thenkpdBuffer = maxValkpmBuffer = minValelsekpdBuffer = -maxValkpmBuffer = -minValendifkppbuffer=0if (not allPeaksMode) thenif (kpoBuffer[1]>0 and kpoBuffer[1]>kpoBuffer[0] and kpoBuffer[1]>=kpoBuffer[2] and kpoBuffer[1]>= maxVal) thenkppBuffer = kpoBuffer[1]endifif (kpoBuffer[1]<0 and kpoBuffer[1]<kpoBuffer[0] and kpoBuffer[1]<=kpoBuffer[2] and kpoBuffer[1]<=-maxVal) thenkppBuffer = kpoBuffer[1]endifelseif (kpoBuffer[1]>0 and kpoBuffer[1]>kpoBuffer[0] and kpoBuffer[1]>=kpoBuffer[2]) thenkppBuffer = kpoBuffer[1]endifif (kpoBuffer[1]<0 and kpoBuffer[1]<kpoBuffer[0] and kpoBuffer[1]<=kpoBuffer[2]) thenkppBuffer = kpoBuffer[1]endifendifendifreturn 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)//105,105,105=grey//255,0,255=pink//0,191,255=blue08/13/2018 at 3:27 PM #78085Kase Peak Osc123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051en=plen1 = 10smooth=catr = AverageTrueRange[len](pri)/// Kase Peak Osc ///RWH=(High-Low[len1])/(atr*SQRT(len1))RWL=(High[len1]-Low)/(atr*SQRT(len1))X=RWH-RWLpek=WeightedAverage[smooth](X)mean=Average[len](pek)sd=STD[len](pek)c1=(mean+(nbdev*sd)) > nbhighc2=(mean-(nbdev*sd)) < -nblowc3=pek[1] >= 0 And pek > 0c4=pek[1] <= 0 And pek < 0If c1 Thenv1=mean+(nbdev*sd)Elsev1=nbhighEndifIf c2 Thenv2=mean-(nbdev*sd)Elsev2=-nblowEndifIf c3 Thenv3=v1Elsif c4 Thenv3=v2Elsev3=0Endif/// Kase CD ///pk=WeightedAverage[smooth](X)pki = Average[8](pk)KCD=(pk)-Average[8](pk)Return pek as "Kase Peak Osc", v3 as "Peak Osc Line", KCD as "Kase CD", pki as "Signal"this is different from what you say………………Could you say the variables used in the Kase Peak indicator?
es = p ???len ???suave = c?nbdev ?? nbhigh ?? nblow ???08/13/2018 at 5:13 PM #7809202/17/2019 at 4:08 PM #9157102/18/2019 at 12:46 PM #91630Hi @ggolfet, currently just the Kase Peak Oscillator (KPO) has been coded, along with her Dev Stops. It’s a shame because only with the Convergence and Divergence indicator (KCD) being used in conjunction with the KPO – which has not been coded – can the statistically proven high probability entries be achieved. But to be fair, I believe it is a long a time consuming job to convert and I think Nicolas didn’t have the same feeling about these indicators as I did.
-
AuthorPosts