| |
|
|
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;
|
|
 |
 |
|
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;
|
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 ) ;
|
|
 |
 |
|
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" ) ;
|
|
 |
 |
|
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");
|
|
 |
 |
|
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");
|
|
 |
 |
|
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;
|
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);
|
| |
|