Help required-RSI with EMA afl

#1
Hi Friends,

Can anybody help me to convert below formula to AFL-

/* RSI with Exponential Moving Average */

var rsi_period = Param(1);
var ema_period = Param(2);
var close = Close();

var chg = CreateArray(close.length);
chg[0] = 0.0;

var i = 0;

for(i=1;i<close.length;i++)
{
chg = close - close[i-1];
}

var adv = CreateArray(close.length);
adv[0] = 0.0;

for(i=1;i<close.length;i++)
{
if (chg > 0)
adv = chg;
else
adv = 0.0;
}

var dec = CreateArray(close.length);
dec[0] = 0.0;

for(i=1;i<close.length;i++)
{
if (chg < 0)
dec = -(chg);
else
dec = 0.0;
}

var avggain = ExpAvg(adv,rsi_period);
var avgloss = ExpAvg(dec,rsi_period);

var rs = CreateArray(close.length);
var rsi = CreateArray(close.length);


for(i=0;i<close.length;i++)
{
if (avggain == 0.0 && avgloss == 0.0)
rs = 0.0;
else
{
if (avgloss != 0.0)
rs = avggain/avgloss;
else
rs = -999;
}
}

for(i=0;i<close.length;i++)
{
if (rs == -999)
rsi = 100;
else
{
if (rs == 0.0)
rsi = 0.0;
else
rsi = 100-(100/(1+rs));
}
}

var rsiema = ExpAvg(rsi,ema_period);

AddGraph(rsi,rsi_period+1);
AddGraph(rsiema,rsi_period+1+ema_period);
AddHorizLine(70);
AddHorizLine(30);

I wish to select below values for -

RSI - 13
EMA - 8

Thanking you in anticipation.

Regards,
Pankaj
 

KelvinHand

Well-Known Member
#2
Hi Friends,

Can anybody help me to convert below formula to AFL-

/* RSI with Exponential Moving Average */

var rsi_period = Param(1);
var ema_period = Param(2);
var close = Close();

var chg = CreateArray(close.length);
chg[0] = 0.0;

var i = 0;

for(i=1;i<close.length;i++)
{
chg = close - close[i-1];
}

var adv = CreateArray(close.length);
adv[0] = 0.0;

for(i=1;i<close.length;i++)
{
if (chg > 0)
adv = chg;
else
adv = 0.0;
}

var dec = CreateArray(close.length);
dec[0] = 0.0;

for(i=1;i<close.length;i++)
{
if (chg < 0)
dec = -(chg);
else
dec = 0.0;
}

var avggain = ExpAvg(adv,rsi_period);
var avgloss = ExpAvg(dec,rsi_period);

var rs = CreateArray(close.length);
var rsi = CreateArray(close.length);


for(i=0;i<close.length;i++)
{
if (avggain == 0.0 && avgloss == 0.0)
rs = 0.0;
else
{
if (avgloss != 0.0)
rs = avggain/avgloss;
else
rs = -999;
}
}

for(i=0;i<close.length;i++)
{
if (rs == -999)
rsi = 100;
else
{
if (rs == 0.0)
rsi = 0.0;
else
rsi = 100-(100/(1+rs));
}
}

var rsiema = ExpAvg(rsi,ema_period);

AddGraph(rsi,rsi_period+1);
AddGraph(rsiema,rsi_period+1+ema_period);
AddHorizLine(70);
AddHorizLine(30);

I wish to select below values for -

RSI - 13
EMA - 8

Thanking you in anticipation.

Regards,
Pankaj


Reference guide for you. Extract some statement from here:
http://www.wisestocktrader.com/indicators/1124-guppy-rsi

- Line 2 needed, change to 13 period
- Line 3 needed, erase the ema(), replace with r.
- Line 5 needed

From here:
http://www.wisestocktrader.com/indicators/1064-smooth-rsi-buy
extract line 4,5,6.

Done for your above given code.
 
Last edited:

Similar threads