커뮤니티

수식 부탁드립니다

프로필 이미지
사노소이
2025-05-29 22:30:15
285
글번호 191275
답변완료
지표식 부탁드립니다. //@version=5 indicator("JFKPS", shorttitle="JFKPS", overlay = false, timeframe="", timeframe_gaps = true) import loxx/loxxjuriktools/1 as jf greencolor = #2DD204 redcolor = #D2042D pstLength = input.int(9, "Period", group = "Basic Settings") pstX = input.int(5, "Synthetic Multiplier", group = "Basic Settings") pstSmooth = input.int(3, "Stochasitc Smoothing Period", group = "Basic Settings") smoothPeriod = input.int(10, "Jurik Smoothing Period", group = "Basic Settings") jphs = input.float(0., "Jurik Phase", group = "Basic Settings") colorbars = input.bool(true, "Color bars?", group = "UI Options") showSigs = input.bool(true, "Show signals?", group = "UI Options") lookBackPeriod = pstLength * pstX alpha = 2.0 / (1.0 + pstSmooth) TripleK = 0., TripleDF = 0., TripleDS = 0., TripleDSs = 0., TripleDFs = 0. fmin = ta.lowest(low, lookBackPeriod) fmax = ta.highest(high, lookBackPeriod) - fmin if (fmax > 0) TripleK := 100.0 * (close - fmin) / fmax else TripleK := 0.0 TripleDF := nz(TripleDF[pstX]) + alpha * (TripleK - nz(TripleDF[pstX])) TripleDS := (nz(TripleDS[pstX]) * 2.0 + TripleDF) / 3.0 TripleDSs := ta.sma(TripleDS, 3) pssBuffer = jf.jurik_filt(TripleDSs, smoothPeriod, jphs) TripleDFs := ta.sma(TripleDF, 3) pstBuffer = jf.jurik_filt(TripleDFs, smoothPeriod, jphs) trend = 0 trend := nz(trend[1]) if (pstBuffer > pssBuffer) trend := 1 if (pstBuffer < pssBuffer) trend := -1 colorout = trend == 1 ? greencolor : trend == -1 ? redcolor : color.gray plot(pssBuffer, color = color.white, linewidth = 1) plot(pstBuffer, color = colorout, linewidth = 3) barcolor(colorbars ? colorout : na) goLong = ta.crossover(pstBuffer, pssBuffer) goShort = ta.crossunder(pstBuffer, pssBuffer) plotshape(showSigs and goLong, title = "Long", color = color.yellow, textcolor = color.yellow, text = "UP", style = shape.triangleup, location = location.bottom, size = size.tiny) plotshape(showSigs and goShort, title = "Short", color = color.fuchsia, textcolor = color.fuchsia, text = "DW", style = shape.triangledown, location = location.top, size = size.tiny) alertcondition(goLong, title = "Long", message = "Jurik-Filtered Kase Permission Stochastic [Loxx]: Long₩nSymbol: {{ticker}}₩nPrice: {{close}}") alertcondition(goShort, title = "Short", message = "Jurik-Filtered Kase Permission Stochastic [Loxx]: Short₩nSymbol: {{ticker}}₩nPrice: {{close}}")
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-05-30 10:40:57

안녕하세요 예스스탁입니다. 사용자함수 먼저 만드신 후에 지표식 작성해 적용하시면 됩니다. 1 사용자함수 함수명 : jurik_filt 반환값형 : 숫자형 input : src(Numeric),len(Numeric),phase(Numeric); var : volty(0),avolty(0),vsum(0),bsmax(0),bsmin(0); var : len1(0),len2(0),pow1(0),beta(0),div(0),phaseRatio(0),bet(0); var : del1(0),del2(0),dVolty(0),pow2(0),kv(0),alpha(0); var : jrkout(0); volty = 0.0; avolty = 0.0; vsum = 0.0; bsmax = src; bsmin = src; len1 = max(log(sqrt(0.5 * (len-1))) / log(2.0) + 2.0, 0); len2 = sqrt(0.5 * (len - 1)) * len1; pow1 = max(len1 - 2.0, 0.5); beta = 0.45 * (len - 1) / (0.45 * (len - 1) + 2); div = 1.0 / (10.0 + 10.0 * (min(max(len-10, 0), 100)) / 100); phaseRatio = iff(phase < -100 , 0.5 , IFf( phase > 100 , 2.5 , 1.5 + phase * 0.01)); bet = len2 / (len2 + 1); //Price volatility del1 = src - IFf(IsNan(bsmax[1]) == true,0,bsmax[1]); del2 = src - IFf(IsNan(bsmin[1]) == true,0,bsmin[1]); volty = iff(abs(del1) > abs(del2) , abs(del1) , abs(del2)); //Relative price volatility factor #IFF(IsNan(volty[10])==true,0,volty[10]) vsum = IFF(IsNan(vsum[1])==true,0,vsum[1]) + div * (volty - IFF(IsNan(volty[10])==true,0,volty[10])); avolty = IFF(IsNan(avolty[1])==true,0,avolty[1]) + (2.0 / (max(4.0 * len, 30) + 1.0)) * (vsum - IFF(IsNan(avolty[1])==true,0,avolty[1])); dVolty = iff(avolty > 0 , volty / avolty , 0); dVolty = max(1, min(pow(len1, 1.0/pow1), dVolty)); //Jurik volatility bands pow2 = pow(dVolty, pow1); Kv = pow(bet, sqrt(pow2)); bsmax = iff(del1 > 0 , src , src - Kv * del1); bsmin = iff(del2 < 0 , src , src - Kv * del2); //Jurik Dynamic Factor alpha = pow(beta, pow2); var : ma1(0),det0(0),e2(0),ma2(0); //1st stage - prelimimary smoothing by adaptive EMA jrkout = 0.0; ma1 = 0.0; det0 = 0.0; e2 = 0.0; ma1 = (1 - alpha) * src + alpha * IFF(IsNan(ma1[1])==true,0,ma1[1]); //2nd stage - one more prelimimary smoothing by Kalman filter det0 = (src - ma1) * (1 - beta) + beta * IFF(IsNan(det0[1])==true,0,det0[1]); ma2 = ma1 + phaseRatio * det0; //3rd stage - final smoothing by unique Jurik adaptive filter e2 = (ma2 - IFF(IsNan(jrkout[1])==true,0,jrkout[1])) * pow(1 - alpha, 2) + pow(alpha, 2) * IFF(IsNan(e2[1])==true,0,e2[1]); jrkout = e2 + IFF(IsNan(e2[1])==true,0,jrkout[1]); jurik_filt = jrkout; 2 지표식 var : Greencolor(Green),RedColor(Red); input : pstLength(9); input : pstX(5); input : pstSmooth(3); input : smoothPeriod(10); input : jphs(0); input : colorbars(true); input : showSigs(true); var : lookBackPeriod(0),alpha(0),TripleK(0); var : TripleDF(0),TripleDS(0),TripleDSs(0),TripleDFs(0); var : fmin(0),fmax(0),pssBuffer(0),pstBuffer(0),trend(0); lookBackPeriod = pstLength * pstX; alpha = 2.0 / (1.0 + pstSmooth); TripleK = 0; TripleDF = 0; TripleDS = 0; TripleDSs = 0; TripleDFs = 0; fmin = lowest(low, lookBackPeriod) ; fmax = highest(high, lookBackPeriod) - fmin; if (fmax > 0) Then TripleK = 100.0 * (close - fmin) / fmax; else TripleK = 0.0; TripleDF = IFf(IsNaN(TripleDF[pstX]) == true,0,TripleDF[pstX])+ alpha * (TripleK - IFf(IsNaN(TripleDF[pstX]) == true,0,TripleDF[pstX])); TripleDS = (IFf(IsNaN(TripleDS[pstX]) == true,0,TripleDS[pstX]) * 2.0 + TripleDF) / 3.0; TripleDSs = ma(TripleDS, 3); pssBuffer = jurik_filt(TripleDSs, smoothPeriod, jphs) ; TripleDFs = ma(TripleDF, 3); pstBuffer = jurik_filt(TripleDFs, smoothPeriod, jphs) ; trend = 0; trend = IFF(IsNaN(trend[1])==true,0,trend[1]); if (pstBuffer > pssBuffer) Then trend = 1; if (pstBuffer < pssBuffer) Then trend = -1; var : colorout(0),goLong(False),goShort(False),tx(0); colorout = iff(trend == 1 , greencolor , iff(trend == -1 , redcolor , gray)); plot1(pssBuffer,"pssBuffer",colorout); plot2(pstBuffer,"pstBuffer",colorout); goLong = CrossUp(pstBuffer, pssBuffer); goShort = CrossDown(pstBuffer, pssBuffer); if showSigs == true && goLong == true Then { tx = Text_New_Self(sdate,sTime,pssBuffer,"▲"); Text_SetColor(tx,Yellow); Text_SetStyle(tx,2,0); } if showSigs == true && goShort == true Then { tx = Text_New_Self(sdate,sTime,pssBuffer,"▼"); Text_SetColor(tx,Magenta); Text_SetStyle(tx,2,1); } 즐거운 하루되세요 > 사노소이 님이 쓴 글입니다. > 제목 : 수식 부탁드립니다 > 지표식 부탁드립니다. //@version=5 indicator("JFKPS", shorttitle="JFKPS", overlay = false, timeframe="", timeframe_gaps = true) import loxx/loxxjuriktools/1 as jf greencolor = #2DD204 redcolor = #D2042D pstLength = input.int(9, "Period", group = "Basic Settings") pstX = input.int(5, "Synthetic Multiplier", group = "Basic Settings") pstSmooth = input.int(3, "Stochasitc Smoothing Period", group = "Basic Settings") smoothPeriod = input.int(10, "Jurik Smoothing Period", group = "Basic Settings") jphs = input.float(0., "Jurik Phase", group = "Basic Settings") colorbars = input.bool(true, "Color bars?", group = "UI Options") showSigs = input.bool(true, "Show signals?", group = "UI Options") lookBackPeriod = pstLength * pstX alpha = 2.0 / (1.0 + pstSmooth) TripleK = 0., TripleDF = 0., TripleDS = 0., TripleDSs = 0., TripleDFs = 0. fmin = ta.lowest(low, lookBackPeriod) fmax = ta.highest(high, lookBackPeriod) - fmin if (fmax > 0) TripleK := 100.0 * (close - fmin) / fmax else TripleK := 0.0 TripleDF := nz(TripleDF[pstX]) + alpha * (TripleK - nz(TripleDF[pstX])) TripleDS := (nz(TripleDS[pstX]) * 2.0 + TripleDF) / 3.0 TripleDSs := ta.sma(TripleDS, 3) pssBuffer = jf.jurik_filt(TripleDSs, smoothPeriod, jphs) TripleDFs := ta.sma(TripleDF, 3) pstBuffer = jf.jurik_filt(TripleDFs, smoothPeriod, jphs) trend = 0 trend := nz(trend[1]) if (pstBuffer > pssBuffer) trend := 1 if (pstBuffer < pssBuffer) trend := -1 colorout = trend == 1 ? greencolor : trend == -1 ? redcolor : color.gray plot(pssBuffer, color = color.white, linewidth = 1) plot(pstBuffer, color = colorout, linewidth = 3) barcolor(colorbars ? colorout : na) goLong = ta.crossover(pstBuffer, pssBuffer) goShort = ta.crossunder(pstBuffer, pssBuffer) plotshape(showSigs and goLong, title = "Long", color = color.yellow, textcolor = color.yellow, text = "UP", style = shape.triangleup, location = location.bottom, size = size.tiny) plotshape(showSigs and goShort, title = "Short", color = color.fuchsia, textcolor = color.fuchsia, text = "DW", style = shape.triangledown, location = location.top, size = size.tiny) alertcondition(goLong, title = "Long", message = "Jurik-Filtered Kase Permission Stochastic [Loxx]: Long₩nSymbol: {{ticker}}₩nPrice: {{close}}") alertcondition(goShort, title = "Short", message = "Jurik-Filtered Kase Permission Stochastic [Loxx]: Short₩nSymbol: {{ticker}}₩nPrice: {{close}}")