HOMETRADESTATIONMETASTOCKEMAILLINKS

 

tradestation indicators

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

R

S

T

U

V

W

Y

Z

#

 

 
 

 

 Function rainbow

Inputs: Price(Numeric), Length(Numeric), Level(Numeric);
Vars: LVLAvg(0);
Array: Avg[10](0);

Avg[1] = Average(Price, Length);
Avg[2] = Average(Avg[1], Length);
Avg[3] = Average(Avg[2], Length);
Avg[4] = Average(Avg[3], Length);
Avg[5] = Average(Avg[4], Length);
Avg[6] = Average(Avg[5], Length);
Avg[7] = Average(Avg[6], Length);
Avg[8] = Average(Avg[7], Length);
Avg[9] = Average(Avg[8], Length);
Avg[10] = Average(Avg[9], Length);

For value1 = 1 To 10 Begin
IF value1 = Level Then
LVLAvg = Avg[value1];
End;

Rainbow = LVLAvg;

Function: RainbowBW

Inputs: Price(Numeric), Length(Numeric), Level(Numeric);
Vars: LVLAvg(0), HiPrice(0), LoPrice(0), HiAvg(0), LoAvg(0);
Array: Avg[10](0);

Avg[1] = Average(Price, Length);
Avg[2] = Average(Avg[1], Length);
Avg[3] = Average(Avg[2], Length);
Avg[4] = Average(Avg[3], Length);
Avg[5] = Average(Avg[4], Length);
Avg[6] = Average(Avg[5], Length);
Avg[7] = Average(Avg[6], Length);
Avg[8] = Average(Avg[7], Length);
Avg[9] = Average(Avg[8], Length);
Avg[10] = Average(Avg[9], Length);

HiPrice = Highest(Price, Level);
LoPrice = Lowest(Price, Level);
HiAvg = Avg[1];
LoAvg = Avg[1];
For value1 = 2 To Level Begin
IF Avg[value1] > HiAvg Then
HiAvg = Avg[value1];
IF Avg[value1] < LoAvg Then
LoAvg = Avg[value1];
End;

IF HiPrice - LoPrice <> 0 Then Begin
IF Price > HiAvg Then
HiAvg = Price;
IF Price < LoAvg Then
LoAvg = Price;
RainbowBW = 100 * ((HiAvg - LoAvg) / (HiPrice - LoPrice));
End;

Function: RainbowOsc

Inputs: Price(Numeric), Length(Numeric), Level(Numeric);
Vars: AvgAvgs(0), HiPrice(0), LoPrice(0), AvgVal(0);
Array: Avg[10](0);

AvgAvgs = 0;
Avg[1] = Average(Price, Length);
Avg[2] = Average(Avg[1], Length);
Avg[3] = Average(Avg[2], Length);
Avg[4] = Average(Avg[3], Length);
Avg[5] = Average(Avg[4], Length);
Avg[6] = Average(Avg[5], Length);
Avg[7] = Average(Avg[6], Length);
Avg[8] = Average(Avg[7], Length);
Avg[9] = Average(Avg[8], Length);
Avg[10] = Average(Avg[9], Length);

HiPrice = Highest(Price, Level);
LoPrice = Lowest(Price, Level);
For value1 = 1 To Level Begin
AvgAvgs = AvgAvgs + Avg[value1];
End;
AvgVal = AvgAvgs / Level;

IF HiPrice - LoPrice <> 0 Then
RainbowOsc = 100 * ((Close - AvgVal) / (HiPrice - LoPrice));

 Indicator: Rainbow_a

Inputs: P(Close), Len(2);

IF CurrentBar > Len * 10 Then Begin
Plot1(Rainbow(P, Len, 10), "Avg10");
Plot2(Rainbow(P, Len, 9), "Avg9");
End;

 Indicator: Rainbow_b

Inputs: P(Close), Len(2);

IF CurrentBar > Len *10 Then Begin
Plot1(Rainbow(P, Len, 8), "Avg8");
Plot2(Rainbow(P, Len, 7), "Avg7");
Plot3(Rainbow(P, Len, 6), "Avg6");
Plot4(Rainbow(P, Len, 5), "Avg5");
End;

 Indicator: Rainbow_c

Inputs: P(Close), Len(2);

IF CurrentBar > Len *10 Then Begin
Plot1(Rainbow(P, Len, 4), "Avg4");
Plot2(Rainbow(P, Len, 3), "Avg3");
Plot3(Rainbow(P, Len, 2), "Avg2");
Plot4(Rainbow(P, Len, 1), "Avg1");
End;

 Indicator : Rainbow Oscillator

Inputs: P(Close), Len(2), Levels(10);
Vars: PosNeg(0);

IF CurrentBar > Len * Levels Then Begin
Plot1(RainbowBW(P, Len, Levels), "URB");
Plot2(-RainbowBW(P, Len, Levels), "LRB");
PosNeg = RainbowOsc(P, Len, Levels);

IF PosNeg > 0 Then
Plot3(PosNeg, "RainbowOsc")
Else
Plot4(PosNeg, "RainbowOsc");
End;

 

UP

HOME

 

 

 Indicator: Recursive Moving Trendline Indicator

inputs: ndays(25); vars: alpha(0),
bo(0),
bo1(c),
xest(0),
xest1(c),
ema(0),
ema1(c);

alpha = 2 / (ndays + 1);

bo = (1 - alpha) * bo1 + close;
ema = ema1 + alpha * (close - ema1);
xest = (1 - alpha) * xest1 + alpha * (close + bo - bo1);

bo1 = bo;
xest1 = xest;
ema1 = ema;

if barnumber > 50 then begin
plot1(xest,"Xest");
plot2(ema,"EMA");
end;

 

UP

HOME

 

 

 Indicator, : RegEMA

inputs:
EMA_Length( 9 ),
Lambda( 9 ) ;

variables:
RegEMA( 0 ),
Alpha( 2 / ( EMA_Length + 1 ) ) ;

if CurrentBar > 3 then
RegEMA = (RegEMA[1]*(1+2*Lambda) + Alpha * (C-RegEMA[1]) - Lambda * RegEMA[2])/(1+lambda)
else
RegEMA = Close ;
Plot1( RegEMA, "RegEMA") ;

 Indicator : RegMomentum

inputs:
EMA_Length( 9 ),
Lambda( 9 ) ;

variables:
RegEMA( 0 ),
Alpha( 2 / ( EMA_Length + 1 ) ) ;

if CurrentBar > 3 then
RegEMA = (RegEMA[1]*(1+2*Lambda) + Alpha * (C-RegEMA[1]) - Lambda * RegEMA[2])/(1+lambda)
else
RegEMA = Close ;
Plot1( (RegEMA - RegEMA[1]) / RegEMA, "RegMom") ;
Plot2( 0 ) ;

 

UP

HOME

 

 

 Function :TriAverage_gen 

inputs:
Price( numericseries ),
Length( numericsimple ) ;

variables:
Length1( 0 ),
Length2( 0 ) ;
Length1 = Floor( ( Length + 1 ) * .5 ) ;
Length2 = Ceiling( ( Length + 1 ) * .5 ) ;
TriAverage_gen =
Average( Average( Price, Length1 ), Length2 ) ;

Indicator : Relative Vigor Index

inputs:
Length( 10 ) ;
variables:
Change( 0 ),
MyRange( 0 ),
Num( 0 ),
Den( 0 ),
RVI( 0 ),
RVISig( 0 ) ;
Change = Close - Open ;
MyRange = High - Low ;
Value1 = TriAverage_gen( Change, 4 ) ;
Value2 = TriAverage_gen( MyRange, 4 ) ;
Num = Summation( Value1, Length ) ;
Den = Summation( Value2, Length ) ;
if Den > 0 then
RVI = Num / Den ;
RVISig = TriAverage_gen( RVI, 4 ) ;
Plot1( RVI, "RVI" ) ;
Plot2( RVISig, "Sig" ) ;

 

UP

HOME

 

 

 Indicator: Reverse Engineering 

Input: OVERBGHT(45), OVERSOLD(-45),REI_BARS(5);

Var:Cond1(0), Cond2(0), D(0), SumD(0), Cnt(0), REI(0);

If (H<L[5] and H<L[6]) and (H[2] < C[7] and H[2] < C[8])
then Cond1=0 Else Cond1=1;

If (L>H[5] and L>H[6]) and (L[2] > C[7] and L[2] > C[8])
then Cond2=0 Else Cond2=1;

If Cond1=1 and Cond2=1 then D=(H-H[2])+(L-L[2]) else D=0;

SumD=0;

For cnt =0 to REI_BARS-1 begin
SumD=SumD+D[cnt];
End;

REI = (100/REI_BARS)*SumD/(Highest(H,REI_BARS) - Lowest(L,REI_BARS));

Plot1(REI,"TDC.REI");
Plot2(OVERBGHT,"OverBght");
Plot3(OVERSOLD,"OverSold");

 

UP

HOME

 

 

 Function : RMI 

{RMI Function - Relative Momentum Index

inputs: Price: Input series (normally Close, but can be any series)
Length: Length of Average Calc
dt: Rate of Change Length

output: RMI

RMI is a smoother version of RSI. if dt = 1, RMI is the same as RSI.

Base on
"Relative Momentum Index: Modifying RSI", Roger Altman, S&C v11, #2, p57

Orginal TS Version: ghkramer - 14Apr01
}

inputs: Price(NumericSeries), Length(Numeric), dt(Numeric);

var: jBar(0), dDn(0), dUp(0), UpSum(0), DnSum(0), MuUp(0), MuDn(0);

if (Length > 0) then
begin
dUp = Price[0] - Price[dt];
if (dUp >= 0) then
dDn = 0
else
begin
dDn = -dUp;
dUp = 0;
end;
MuUp = (MuUp[1]*(Length-1) + dUp)/Length;
MuDn = (MuDn[1]*(Length-1) + dDn)/Length;

if (MuUp + MuDn) <> 0 then
RMI = 100*MuUp/(MuUp + MuDn)
else
RMI = 0;
end
else
RMI = 0;

Indicator : RMI Indicator

{RMI Indicator - Relative Momentum Index

inputs: Price: Price series
Length: Length of Average Calc
dt: Rate of Change Length

Base on
"Relative Momentum Index: Modifying RSI", Roger Altman, S&C v11, #2, p57

Orginal TS Version: ghkramer - 14Apr01
}

inputs: Price(Close), Length(20), dt(5);
var: xRMI(0);

xRMI = RMI(Price, Length, dt);

plot1(xRMI, "RMI");
plot2(70, "OverBought");
plot3(30, "OverSold");

 

UP

HOME

 

 

Indicator: RSI Oscillator

Inputs:
Price(Close),
RSILen(14),
Histgram("Y"),
Line("Y");

Vars:
RSIVal(0);
RSIVal = RSI(Price, RSILen);

IF UpperStr(Histgram) = "Y" OR UpperStr(Histgram) = "YES"

Then Begin

IF RSIVal >= 50 Then
Plot1(RSIVal - 50, "+RSI_Osc")

Else

Plot2(RSIVal - 50, "-RSI_Osc");

End;

IF UpperStr(Line) = "Y" OR UpperStr(Line) = "YES"
Then
Plot3(RSIVal - 50, "RSI_Osc");
Plot4(0, "Even-Line");

IF RSIVal Crosses Below 50 OR RSIVal Crosses Above 50
Then Alert = True;

 

UP

HOME

 

 

Indicator : RSI of Volatility

Inputs:
AVL(3),
RSILEN(3),
Obought(85),
Osold(25);

Vars:
XXX(0);

if o>c then XXX=o-c;
if c>o then XXX=c-o;

plot1 (rsi(average(XXX,AVL),RSILEN));
plot2 (50);
plot3 (Osold);
Plot4 (OBought);

 

UP

HOME

 

 

 

 

 

 

site map        disclaimer        mission        privacy policy