Stock Portfolio Organizer

The ultimate porfolio management solution.

Shares, Margin, CFD's, Futures and Forex
EOD and Realtime
Dividends and Trust Distributions
And Much More ....
For Portfolio Manager Click Here

WiseTrader Toolbox

#1 Selling Amibroker Plugin featuring:

Advanced Adaptive Indicators
Advanced Pattern Exploration
Neural Networks
And Much More ....
Find Out More Here

ITF and RSI for Amibroker (AFL)
over 9 years ago
Amibroker (AFL)

3 / 5 (Votes 4)
oscillator, amibroker, multi timeframe

Combination of two Indicators RSI and ITF work very good with Intraday trading.

This is the Inverse Fisher Transform (IFT) of the Relative Strength Index (RSI),
across multiple timeframes. It only shows two timeframes at any given time — the
currrent chart time frame, AND the next largest time frame (see code for details).
Hourly chart: When the IFT is oversold on the daily IFT, AND lifting up above the
oversold line — AND the hourly IFT is also rising — this is a good Buy Signal.
The reverse is True for a Short Signal.

This may be used with 5 Min., hourly, daily, AND weekly charts.

Included is Tom DeMark-style duration analysis, which includes trend strength arrows. These arrows are NOT Buy OR Sell signals. Instead, they represent extreme conditions, which usually end up with a strong rebound, OR a strong continuation of the trend. Use something like the Volume Flow Indicator (VFI) to help determine which way the trend will go.

The white IFT line always represents the smaller time frame (i.e, the default time
frame for the chart).

You may want to build a Version of this that uses Tom DeMark’s Range Expansion
Index, instead of the IFT OR RSI. This works well to help determine what this
IFT indicator will likely do next


Similar Indicators / Formulas

Trend Rider
Submitted by sandeepkj over 9 years ago
Elliot Wave Oscillator
Submitted by prasadbrao over 6 years ago
Debu Market Efficiency Ratio
Submitted by agent301 about 7 years ago
Dynamic Positioning Indicator (DPI)
Submitted by kelvinhand over 6 years ago
Submitted by thaihungphong over 6 years ago
Rsi Composite Index
Submitted by thakkarps over 8 years ago

Indicator / Formula

Copy & Paste Friendly
if( ParamToggle("Tooltip shows", "All Values|Only Prices" ) )
 ToolTip=StrFormat("Open: %g\nHigh:  %g\nLow:   %g\nClose:  %g
(%.1f%%)\nVolume: "+NumToStr( V, 1 ), O, H, L, C, SelectedValue( ROC( C, 1

SetChartBkColor(ParamColor("Outer panel color ",colorBlack)); // color of outer border 
SetChartBkGradientFill( ParamColor("Inner panel color upper half",colorDarkTeal),
	ParamColor("Inner panel color lower half",colorBlack)); //color of inner panel

/* IFT-RSI */
pr_5m = (H+L)/2; 
len_5m = 10; 
maxh_5m = HHV(pr_5m,len_5m); 
minl_5m = LLV(pr_5m,len_5m); 
Array1_5m = .33*2*((pr_5m-minl_5m)/(maxh_5m-minl_5m)-.5); 
val1_5m = AMA(Array1_5m,.67); 
value1_5m = IIf(val1_5m>.99,.999,IIf(val1_5m<-.99,-.999,val1_5m)); 
Array2_5m = .5*log((1+value1_5m)/(1-value1_5m)); 
fish_5m = AMA(Array2_5m,.5); 

/* IFT-RSI */
pr_h = (H+L)/2; 
len_h = 10; 
maxh_h = HHV(pr_h,len_h); 
minl_h = LLV(pr_h,len_h); 
Array1_h = .33*2*((pr_h-minl_h)/(maxh_h-minl_h)-.5); 
val1_h = AMA(Array1_h,.67); 
value1_h = IIf(val1_h>.99,.999,IIf(val1_h<-.99,-.999,val1_h)); 
Array2_h = .5*log((1+value1_h)/(1-value1_h)); 
fish_h = AMA(Array2_h,.5); 

/* IFT-RSI */
pr_d = (H+L)/2; 
len_d = 10; 
maxh_d = HHV(pr_d,len_d); 
minl_d = LLV(pr_d,len_d); 
Array1_d = .33*2*((pr_d-minl_d)/(maxh_d-minl_d)-.5); 
val1_d = AMA(Array1_d,.67); 
value1_d = IIf(val1_d>.99,.999,IIf(val1_d<-.99,-.999,val1_d)); 
Array2_d = .5*log((1+value1_d)/(1-value1_d)); 
fish_d = AMA(Array2_d,.5); 

/* IFT-RSI */
pr_w = (H+L)/2; 
len_w = 10; 
maxh_w = HHV(pr_w,len_w); 
minl_w = LLV(pr_w,len_w); 
Array1_w = .33*2*((pr_w-minl_w)/(maxh_w-minl_w)-.5); 
val1_w = AMA(Array1_w,.67); 
value1_w = IIf(val1_w>.99,.999,IIf(val1_w<-.99,-.999,val1_w)); 
Array2_w = .5*log((1+value1_w)/(1-value1_w)); 
fish_w = AMA(Array2_w,.5);

/* IFT-RSI */
pr_mo = (H+L)/2; 
len_mo = 10; 
maxh_mo = HHV(pr_mo,len_mo); 
minl_mo = LLV(pr_mo,len_mo); 
Array1_mo = .33*2*((pr_mo-minl_mo)/(maxh_mo-minl_mo)-.5); 
val1_mo = AMA(Array1_mo,.67); 
value1_mo = IIf(val1_mo>.99,.999,IIf(val1_mo<-.99,-.999,val1_mo)); 
Array2_mo = .5*log((1+value1_mo)/(1-value1_mo)); 
fish_mo = AMA(Array2_mo,.5); 


varOverboughtSignal = 0.20;
varOversoldSignal = -0.20;

/// DURATION ANALYSIS for Hourly ///
// Identify oversold conditions, marked with red arrow to denote downtrend
varOversold_h = IIf( Ref(fish_h,-7)<=varOversoldSignal 
AND Ref(fish_h,-6)<=varOversoldSignal 
AND Ref(fish_h,-5)<=varOversoldSignal 
AND Ref(fish_h,-4)<=varOversoldSignal 
AND Ref(fish_h,-3)<=varOversoldSignal 
AND Ref(fish_h,-2)<=varOversoldSignal 
AND Ref(fish_h,-1)<=varOversoldSignal 
AND fish_h<=varOversoldSignal ,1,0);

// Identify overbought conditions, marked with green arrow to denote uptrend
varOverbought_h = IIf( Ref(fish_h,-7)>=varOverboughtSignal 
AND Ref(fish_h,-6)>=varOverboughtSignal 
AND Ref(fish_h,-5)>=varOverboughtSignal
AND Ref(fish_h,-4)>=varOverboughtSignal 
AND Ref(fish_h,-3)>=varOverboughtSignal 
AND Ref(fish_h,-2)>=varOverboughtSignal 
AND Ref(fish_h,-1)>=varOverboughtSignal 
AND fish_h>=varOverboughtSignal ,1,0);

Plot(TimeFrameExpand(fish_5m, in5Minute), "IFT_5m", colorWhite, styleThick);

Plot(TimeFrameExpand(fish_h, inHourly), "IFT_h", colorOrange, styleThick);

Plot(TimeFrameExpand(fish_d, inDaily), "IFT_d", colorRed, styleThick);

Plot(TimeFrameExpand(fish_w, inWeekly), "IFT_w", colorBlue, styleThick);

Plot(TimeFrameExpand(fish_mo, inMonthly), "IFT_m", colorBlack, styleThick);

Title="IFT-RSI TimeFrame";


1. judge601

Very Nice…
Thank You.

Leave Comment

Please login here to leave a comment.