Show/Hide Toolbars

Hitta kursvinnare - Hjälpmanual

Navigation: HkScript

Kodexempel: RSI m fl

Scroll Föregående Topp Nästa Fler

RSI - Relative Strength Index (HkScript)

#global nbrparams(3)
 
#global dataserie("upMove");
#global dataserie("downMove");
#global dataserie("avgUp");
#global dataserie("avgDown");
#global dataserie("rsiCalc");
 
local n = p1;
local delta = 0;
 
// 1) Prisförändring (delta)
if (BarNumber == 0)
{
 delta = 0;
}
else
{
 delta = Close[0] - Close[-1];
}
 
// 2) Dela upp i upp/ned-rörelse
if (delta > 0)
{
 upMove[0] = delta;
 downMove[0] = 0;
}
else
{
 upMove[0] = 0;
 downMove[0] = fabs(delta); // fabs rekommenderas för decimaltal
}
 
// 3) Wilder smoothing av avgUp/avgDown
// Init: första gången vi har minst n+1 bars (BarNumber == n) sätter vi startvärde som SMA
if (BarNumber == n)
{
 avgUp[0] = upMove.sum(n) / n;
 avgDown[0] = downMove.sum(n) / n;
}
else if (BarNumber > n)
{
 avgUp[0] = avgUp[-1] + (1.0 / n) * (upMove[0] - avgUp[-1]);
 avgDown[0] = avgDown[-1] + (1.0 / n) * (downMove[0] - avgDown[-1]);
}
else
{
// För tidiga bars: sätt 0 (eller lämna tomt beroende på hur du vill att grafen ska se ut)
 avgUp[0] = 0;
 avgDown[0] = 0;
}
 
// 4) RSI = 100 - (100 / (1 + RS)), där RS = avgUp/avgDown
if (BarNumber <= n)
{
 rsiCalc[0] = 0; // ännu ej "riktig" RSI
}
else if (avgDown[0] == 0)
{
 rsiCalc[0] = 100;
}
else
{
 local rs = avgUp[0] / avgDown[0];
 rsiCalc[0] = 100 - (100 / (1 + rs));
}
 
// 5) Rita ut
plot1[0] = rsiCalc[0];
plot2[0] = p3; // övre nivå, t ex 70
plot3[0] = p2; // undre nivå, t ex 30