Buongiorno, è possibile tradurre questo indicatore? metto il link perchè non mi fa pubblicare il post se copio il codice: https://www.tradingview.com/script/PPHncdRt-Kalman-Hull-Supertrend-BackQuant/
Grazie
Grazie ma non mi pare lo stesso indicatore; quello che indicavo io incorpora anche il supertrend, non solo media mobile di hull e kalman.
Il codice al link iniziale è quello nel file allegato (il codice non riesco ad inserirlo).
Hola Aquí ha un'approssimazione dell'indicatore. Non è esattamente uguale, ma cambiare i parametri può renderlo più o meno sensato.
//--------------------------------------------------------------//
//PRC_Kalman Hull Supertrend
//version = 0
//28.05.24
//Iván González @ www.prorealcode.com
//Sharing ProRealTime knowledge
//--------------------------------------------------------------//
//-----Inputs---------------------------------------------------//
pricesource=customclose
measurementNoise=3
processNoise=0.01
atrPeriod=12
factor=1.7
//showkalman=1
//paintCandles=1
//showlongshort=1
//--------------------------------------------------------------//
//-----Kalman Price Filter Function-----------------------------//
N=5
if not isset($stateEstimate1[0]) then
for j=0 to N-1 do
$stateEstimate1[j]=pricesource
$errorCovariance1[j]=1
next
endif
for i=0 to N-1 do
$predictedStateEstimate1[i]=$stateEstimate1[i]
$predictedErrorCovariance1[i]=$errorCovariance1[i]+processNoise
next
for k=0 to N-1 do
kg1=$predictedErrorCovariance1[k]/($predictedErrorCovariance1[k]+measurementNoise)
$kalmanGain1[k]=kg1
$stateEstimate1[k]=$predictedStateEstimate1[k]+kg1*(pricesource-$predictedStateEstimate1[k])
$errorCovariance1[k]=(1-kg1)*$predictedErrorCovariance1[k]
next
Kalman1=$stateEstimate1[0]
//--------------------------------------------------------------//
//-----Hull Moving Average with Kalman--------------------------//
//Kalman2
if not isset($stateEstimate2[0]) then
for j=0 to N-1 do
$stateEstimate2[j]=pricesource
$errorCovariance2[j]=1
next
endif
for i=0 to N-1 do
$predictedStateEstimate2[i]=$stateEstimate2[i]
$predictedErrorCovariance2[i]=$errorCovariance2[i]+processNoise
next
for k=0 to N-1 do
kg2=$predictedErrorCovariance2[k]/($predictedErrorCovariance2[k]+measurementNoise/2)
$kalmanGain2[k]=kg2
$stateEstimate2[k]=$predictedStateEstimate2[k]+kg2*(pricesource-$predictedStateEstimate2[k])
$errorCovariance2[k]=(1-kg2)*$predictedErrorCovariance2[k]
next
Kalman2=$stateEstimate2[0]
//Kalman Hull MA
src=2*Kalman2-Kalman1
length=round(sqrt(measurementNoise))
if not isset($stateEstimate3[0]) then
for j=0 to N-1 do
$stateEstimate3[j]=src
$errorCovariance3[j]=1
next
endif
for i=0 to N-1 do
$predictedStateEstimate3[i]=$stateEstimate3[i]
$predictedErrorCovariance3[i]=$errorCovariance3[i]+processNoise
next
for k=0 to N-1 do
kg3=$predictedErrorCovariance3[k]/($predictedErrorCovariance3[k]+length)
$kalmanGain3[k]=kg3
$stateEstimate3[k]=$predictedStateEstimate3[k]+kg3*(src-$predictedStateEstimate3[k])
$errorCovariance3[k]=(1-kg3)*$predictedErrorCovariance3[k]
next
KalmanHMA=$stateEstimate3[0]
//--------------------------------------------------------------//
//-----SuperTrend Function--------------------------------------//
if barindex <= atrperiod then
upperband=kalmanHMA
lowerband=kalmanHMA
direction=1
else
atr=averagetruerange[atrPeriod](close)
upperband=kalmanHMA+factor*atr
lowerband=kalmanHMA-factor*atr
prevlowerband=lowerband[1]
prevupperband=upperband[1]
if lowerband>prevlowerband or close[1]<prevlowerband then
lowerband=lowerband
else
lowerband=prevlowerband
endif
if upperband<prevupperband or close[1]>prevupperband then
upperband=upperband
else
upperband=prevupperband
endif
prevST=ST[1]
if prevST=prevupperband then
if close > upperband then
direction=-1
else
direction=1
endif
else
if close < lowerband then
direction=1
else
direction=-1
endif
endif
if direction=-1 then
ST=lowerband
else
ST=upperband
endif
endif
//--------------------------------------------------------------//
//-----Conditional Trend----------------------------------------//
once trend=0
SuperTrendLong=direction crosses under 0
SuperTrendShort=direction crosses over 0
if SupertrendLong and not SuperTrendShort then
trend=1
r=0
g=188
b=212
drawtext("▲",barindex,low)coloured(r,g,b)
elsif SuperTrendShort then
trend=-1
r=255
g=82
b=82
drawtext("▼",barindex,high)coloured(r,g,b)
endif
//--------------------------------------------------------------//
//--------------------------------------------------------------//
return ST as "Kalman Hull SuperTrend" coloured(r,g,b)style(line,3)