Multi Oscillator Adaptive Kernel
Forums › ProRealTime forum Italiano › Supporto ProBuilder › Multi Oscillator Adaptive Kernel
- This topic has 2 replies, 2 voices, and was last updated 3 hours ago by
Stenozar.
Viewing 3 posts - 1 through 3 (of 3 total)
-
-
04/13/2025 at 4:41 PM #245866
Buon pomeriggio, è possibile tradurre questo indicatore?
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150// @version=6indicator(“Multi-Oscillator Adaptive Kernel | Opus”, overlay = false, max_labels_count = 500)// Input GroupsGRP1 = “Display Options”GRP2 = “Oscillator Selection”GRP3 = “Kernel Settings”// Indicator Sourcessrc = input.source(close, “Source”, group = GRP2)// Oscillator Togglesuse_RSI = input.bool(true, “RSI”, inline = “RSI”, group = GRP2)use_STOCH = input.bool(true, “Stochastic”, inline = “STOCH”, group = GRP2)use_MFI = input.bool(true, “MFI”, inline = “MFI”, group = GRP2)use_CCI = input.bool(false, “CCI”, inline = “CCI”, group = GRP2)// Oscillator Lengthslen_RSI = input.int(14, “Length”, inline = “RSI”, group = GRP2)len_STOCH = input.int(14, “Length”, inline = “STOCH”, group = GRP2)len_MFI = input.int(14, “Length”, inline = “MFI”, group = GRP2)len_CCI = input.int(20, “Length”, inline = “CCI”, group = GRP2)// Kernel Settingskernel_type = input.string(“Exponential”, “Kernel Type”, options = [“Exponential”, “Linear”, “Gaussian”], group = GRP3)kernel_len = input.int(25, “Kernel Length”, group = GRP3)sensitivity = input.float(1.5, “Sensitivity”, minval = 0.1, maxval = 5.0, step = 0.1, group = GRP3)// Display Settingsbar_coloring = input.bool(true, “Color Bars”, group = GRP1)// Updated colors to match Opus seriesbull_color = #00F1FF // Cyanbear_color = #FF019A // Magenta// Normalized Oscillatorsrsi_norm(src, len) =>r = ta.rsi(src, len)(r – 50) * 2stoch_norm(src, len) =>k = ta.sma(ta.stoch(src, high, low, len), 3)(k – 50) * 2mfi_norm(len) =>m = ta.mfi(hlc3, len)(m – 50) * 2cci_norm(src, len) =>c = ta.cci(src, len)c / 4// Calculate active oscillatorsvar active_count = 0active_count := 0var rsi_val = 0.0var stoch_val = 0.0var mfi_val = 0.0var cci_val = 0.0if use_RSIrsi_val := rsi_norm(src, len_RSI)active_count := active_count + 1if use_STOCHstoch_val := stoch_norm(src, len_STOCH)active_count := active_count + 1if use_MFImfi_val := mfi_norm(len_MFI)active_count := active_count + 1if use_CCIcci_val := cci_norm(src, len_CCI)active_count := active_count + 1// Combine indicatorsraw_value = (rsi_val + stoch_val + mfi_val + cci_val) / math.max(active_count, 1)// Kernel weighting functionkernel_weight(i, len, type) =>float result = 0.0if type == “Exponential”result := math.exp(-5.0 * i / len)else if type == “Linear”result := 1.0 – (i / len)else if type == “Gaussian”result := math.exp(-0.5 * math.pow(3.0 * i / len, 2))result// Apply kernel smoothingsmooth_value(src, len, type) =>float sum = 0.0float weight_sum = 0.0for i = 0 to math.min(len – 1, bar_index)w = kernel_weight(i, len, type)sum := sum + src[i] * wweight_sum := weight_sum + wsum / weight_sum// Calculate smoothed valuessignal = smooth_value(raw_value, kernel_len, kernel_type)signal2 = smooth_value(signal, kernel_len * 2, kernel_type)// Define trend conditionstrend_up = signal2 > 0trend_down = signal2 < 0// Draw zero linevar zeroLine = plot(0, “Zero Line”, color.new(color.gray, 50), 1)// Plot main signal line with reduced opacityvar signalPlot = plot(signal, “Signal Line”, color.new(signal > 0 ? bull_color : bear_color, 70), 1)// REDUCED NUMBER OF LAYERS FOR GRADIENT – Using 10 layers instead of 20 for each side// Define positive layers with decreasing opacity as we approach zerovar pos_layer1 = plot(signal2 > 0 ? signal2 : 0, “P1”, bull_color, 2)var pos_layer2 = plot(signal2 > 0 ? signal2 * 0.9 : 0, “P2”, color.new(bull_color, 10), 1)var pos_layer3 = plot(signal2 > 0 ? signal2 * 0.8 : 0, “P3”, color.new(bull_color, 20), 1)var pos_layer4 = plot(signal2 > 0 ? signal2 * 0.7 : 0, “P4”, color.new(bull_color, 30), 1)var pos_layer5 = plot(signal2 > 0 ? signal2 * 0.6 : 0, “P5”, color.new(bull_color, 40), 1)var pos_layer6 = plot(signal2 > 0 ? signal2 * 0.5 : 0, “P6”, color.new(bull_color, 50), 1)var pos_layer7 = plot(signal2 > 0 ? signal2 * 0.4 : 0, “P7”, color.new(bull_color, 60), 1)var pos_layer8 = plot(signal2 > 0 ? signal2 * 0.3 : 0, “P8”, color.new(bull_color, 70), 1)var pos_layer9 = plot(signal2 > 0 ? signal2 * 0.2 : 0, “P9”, color.new(bull_color, 80), 1)var pos_layer10 = plot(signal2 > 0 ? signal2 * 0.1 : 0, “P10”, color.new(bull_color, 90), 1)// Define negative layers with decreasing opacity as we approach zerovar neg_layer1 = plot(signal2 < 0 ? signal2 : 0, “N1”, bear_color, 2)var neg_layer2 = plot(signal2 < 0 ? signal2 * 0.9 : 0, “N2”, color.new(bear_color, 10), 1)var neg_layer3 = plot(signal2 < 0 ? signal2 * 0.8 : 0, “N3”, color.new(bear_color, 20), 1)var neg_layer4 = plot(signal2 < 0 ? signal2 * 0.7 : 0, “N4”, color.new(bear_color, 30), 1)var neg_layer5 = plot(signal2 < 0 ? signal2 * 0.6 : 0, “N5”, color.new(bear_color, 40), 1)var neg_layer6 = plot(signal2 < 0 ? signal2 * 0.5 : 0, “N6”, color.new(bear_color, 50), 1)var neg_layer7 = plot(signal2 < 0 ? signal2 * 0.4 : 0, “N7”, color.new(bear_color, 60), 1)var neg_layer8 = plot(signal2 < 0 ? signal2 * 0.3 : 0, “N8”, color.new(bear_color, 70), 1)var neg_layer9 = plot(signal2 < 0 ? signal2 * 0.2 : 0, “N9”, color.new(bear_color, 80), 1)var neg_layer10 = plot(signal2 < 0 ? signal2 * 0.1 : 0, “N10”, color.new(bear_color, 90), 1)// Fill all the positive gradient layersfill(pos_layer1, pos_layer2, signal2 > 0 ? color.new(bull_color, 5) : na)fill(pos_layer2, pos_layer3, signal2 > 0 ? color.new(bull_color, 15) : na)fill(pos_layer3, pos_layer4, signal2 > 0 ? color.new(bull_color, 25) : na)fill(pos_layer4, pos_layer5, signal2 > 0 ? color.new(bull_color, 35) : na)fill(pos_layer5, pos_layer6, signal2 > 0 ? color.new(bull_color, 45) : na)fill(pos_layer6, pos_layer7, signal2 > 0 ? color.new(bull_color, 55) : na)fill(pos_layer7, pos_layer8, signal2 > 0 ? color.new(bull_color, 65) : na)fill(pos_layer8, pos_layer9, signal2 > 0 ? color.new(bull_color, 75) : na)fill(pos_layer9, pos_layer10, signal2 > 0 ? color.new(bull_color, 85) : na)fill(pos_layer10, zeroLine, signal2 > 0 ? color.new(bull_color, 95) : na)// Fill all the negative gradient layersfill(neg_layer1, neg_layer2, signal2 < 0 ? color.new(bear_color, 5) : na)fill(neg_layer2, neg_layer3, signal2 < 0 ? color.new(bear_color, 15) : na)fill(neg_layer3, neg_layer4, signal2 < 0 ? color.new(bear_color, 25) : na)fill(neg_layer4, neg_layer5, signal2 < 0 ? color.new(bear_color, 35) : na)fill(neg_layer5, neg_layer6, signal2 < 0 ? color.new(bear_color, 45) : na)fill(neg_layer6, neg_layer7, signal2 < 0 ? color.new(bear_color, 55) : na)fill(neg_layer7, neg_layer8, signal2 < 0 ? color.new(bear_color, 65) : na)fill(neg_layer8, neg_layer9, signal2 < 0 ? color.new(bear_color, 75) : na)fill(neg_layer9, neg_layer10, signal2 < 0 ? color.new(bear_color, 85) : na)fill(neg_layer10, zeroLine, signal2 < 0 ? color.new(bear_color, 95) : na)// Bar coloringbarcolor(bar_coloring ? (signal2 > 0 ? bull_color : bear_color) : na)04/18/2025 at 7:42 AM #246055Ecco qui:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135//------------------------------------------------////PRC_MultiOscillator Adaptative Kernel//version = 0//18.04.2025//Iván González @ www.prorealcode.com//Sharing ProRealTime knowledge//------------------------------------------------//// inputs//------------------------------------------------//src=close// Oscillator Togglesusersi=1usestoch=1usemfi=1usecci=0// Oscillator Lengthslenrsi=14lenstoch=14lenmfi=14lencci=20// Kernel Settingskerneltype = 1// options=[1"Exponential", 2"Linear", 3"Gaussian"]kernellen = 25//"Kernel Length"//------------------------------------------------//// Oscillators//------------------------------------------------//myrsi=rsi[lenrsi](src)k=Stochastic[lenSTOCH,3](src)m=MoneyFlowIndex[lenMFI]c=cci[lencci](src)//------------------------------------------------//// Calculate active oscillators and Normalize//------------------------------------------------//activecount=0// RSIif useRSI thenrsival=(myrsi-50)*2activecount=activecount+1endif// Stochasticif useSTOCH thenstochval=(k-50)*2activecount=activecount+1endif// Money flow indexif useMFI thenmfival=(m-50)*2activecount=activecount+1endif// CCIif useCCI thenccival=c/4activecount=activecount+1endif//------------------------------------------------//// Combine indicators//------------------------------------------------//rawvalue=(rsival+stochval+mfival+ccival)/max(activecount, 1)//------------------------------------------------//// Calculate smoothed values with Kernel function//------------------------------------------------////signalsum=0weightsum=0w=0for i = 0 to min(kernellen-1,barindex)if kerneltype=1 then//"Exponential"w=exp(-5.0 * i / kernellen)elsif kerneltype=2 then//"Linear"w=1.0-(i / kernellen)elsif kerneltype=3 then// "Gaussian"w=exp(-0.5*pow(3.0*i/kernellen, 2))endifsum=sum+rawvalue[i]*wweightsum=weightsum+wnextsignal=sum/weightsum//signal2sum2=0weightsum2=0w2=0for i = 0 to min(kernellen*2-1,barindex)if kerneltype=1 then//"Exponential"w2=exp(-5.0*i/kernellen)elsif kerneltype=2 then//"Linear"w2=1.0-(i/kernellen)elsif kerneltype=3 then// "Gaussian"w2=exp(-0.5*pow(3.0*i/kernellen,2))endifsum2=sum2+signal[i]*w2weightsum2=weightsum2+w2nextsignal2=sum2/weightsum2//------------------------------------------------//// Define Trend conditions//------------------------------------------------//trendup = signal2 > 0trenddown = signal2 < 0//------------------------------------------------//// Plot and colors//------------------------------------------------////Signalif signal>0 thenrs=0gs=128bs=255elsers=204gs=51bs=204endif//Signal2layer1=signal2layer2=signal2*0.9layer3=signal2*0.8layer4=signal2*0.7layer5=signal2*0.6layer6=signal2*0.5layer7=signal2*0.4layer8=signal2*0.3layer9=signal2*0.2layer10=signal2*0.1colorbetween(layer1,layer2,rs,gs,bs,5)colorbetween(layer3,layer2,rs,gs,bs,15)colorbetween(layer3,layer4,rs,gs,bs,25)colorbetween(layer5,layer4,rs,gs,bs,35)colorbetween(layer5,layer6,rs,gs,bs,45)colorbetween(layer7,layer6,rs,gs,bs,55)colorbetween(layer7,layer8,rs,gs,bs,65)colorbetween(layer9,layer8,rs,gs,bs,75)colorbetween(layer9,layer10,rs,gs,bs,85)colorbetween(0,layer10,rs,gs,bs,95)//------------------------------------------------//return 0 as "Zero", signal as "Signal line" coloured(rs,gs,bs)style(line,3),signal2 coloured(rs,gs,bs,75)style(line,1)04/18/2025 at 9:20 PM #246079 -
AuthorPosts
Viewing 3 posts - 1 through 3 (of 3 total)
Find exclusive trading pro-tools on
Similar topics: