You are on page 1of 2

‫ دوره‬RSI ‫ و در نظر داشته باشید که خروجیها بر اساس‬.

‫و سقفش رو اول کد میتونید تغییر بدید‬


‫اطلاعات تعدیل نشده هست‬.
JavaScript:
//RSI v.0.4
true==function() {
var period = 14;
var rsiMax = 30;
var addToday = true;

var candle = function(a) {


return {c: a.PDrCotVal, h: a.PriceMax, l: a.PriceMin, o: a.PriceFirst};
};

var getCandles = function() {


var cs = [];
for(var i = 0; i < [ih].length; i++)
([ih][i].ZTotTran > 0) && cs.push(candle([ih][i]));
if(addToday && (tno) > 0) {
var t = {c: (pl), h: (pmax), l: (pmin), o: (pf)};
if(t.c != cs[0].c || t.h != cs[0].h || t.l != cs[0].l || t.o != cs[0].o)
cs.unshift(t);
}
return (cs.length>30) ? cs : false;
};

var RSI = function(a, p) {


var gainSum = 0;
var lossSum = 0;
var l = a.length;
a[l-1].gain = 0;
a[l-1].loss = 0;
for (var i = l-2; i >= 0 ; i--) {
a[i].gain = 0;
a[i].loss = 0;
var dif = a[i].c - a[i+1].c;
if(dif > 0)
a[i].gain = dif;
else
a[i].loss = -dif;
}

for (var i = 0; i < p; i++) {


gainSum += a[l-i-1].gain;
lossSum += a[l-i-1].loss;
}

var averageGain = gainSum / p;


var averageLoss = lossSum / p;

for (var i = p; i < l; i++) {


averageGain = (averageGain * (p - 1) + a[l-i-1].gain) / p;
averageLoss = (averageLoss * (p - 1) + a[l-i-1].loss) / p;
a[l-i-1].averageGain = averageGain;
a[l-i-1].averageLoss = averageLoss;
}

var RS = 0;
var RSIndex = 0;

for (var i = p; i < l; i++) {


RS = a[l-i-1].averageGain / a[l-i-1].averageLoss;
RSIndex = 100 - 100 / (1 + RS);
a[l-i-1].RSI = Math.round(RSIndex*1000)/1000;
}
return a[0].RSI;
};

var c = getCandles();
if(c) {
var rsi = RSI(c, period);
if(rsi <= rsiMax) {
(cfield0) = rsi;
return true;
}
}
}()

You might also like