(How to) Random Walk Index by E. Michael Poulos

#1
Hello World,

This is my first post here. And would like to gain some knowledge on a classic which was developed by E. Michael Poulos about 30 years back that were published in
You do not have permission to view link Log in or register now.
.

I use Amibroker as my Charting and TA tool. Like most of the other charting applications it too provides ready-made functions for the same:
1.
You do not have permission to view link Log in or register now.

2.
You do not have permission to view link Log in or register now.

3.
You do not have permission to view link Log in or register now.


Adding the functions onto one section:
HTML:
_SECTION_BEGIN( "Random Walk Index" );
     minperiods = Param( "Min Periods", 9, 1, 200, 1 );
     maxperiods = Param( "Max Periods", 40, 1, 200, 1 );
     Plot( RwIHi( minperiods, maxperiods), "RwIHi", colorGreen, ParamStyle("Style") );
     Plot( RwILO( minperiods, maxperiods), "RwILO", colorRed, ParamStyle("Style") );
     Plot( RwI( minperiods, maxperiods), "RwI", colorWhite, ParamStyle("Style") );
_SECTION_END();
Objective is to replicate the inbuilt functions, by coding them raw from scratch for better understanding of the concept proposed by Poulos as Random Walk Index. I am unable to discern the use of two periods - minperiods, maxperiods - here. Well below is what I have so far managed to code "Random Walk Index of Highs" in Amibroker but the results do not match with the inbuilt ones. And need your kind help in this regard!
HTML:
_SECTION_BEGIN( "Unveil RwIHi" );
     mthd = ParamList( "Select Method", "Method 1|Method 2|Method 3", 1 );
     pMin = Param( "Min Periods", 9, 1, 200, 1 );
     pMax = Param( "Max Periods", 40, 1, 200, 1 );
     
     switch( mthd )
     {
         case "Method 1":
             // https://www.tradingview.com/script/eXHlEXzw-Random-Walk-Index-RWI-RWIhi-RWIlo/
             RWH = 0;
             for( i = pMin; i <= pMax; i++ )
             {
                 RWH = IIf( i == pMin, ( H - L[ i ] ) / ( ATR( i ) * sqrt( i ) ), Max( ( H - L[ i ] ) / ( ATR( i ) * sqrt( i ) ), RWH ) );
             }
         break;
         case "Method 2":
             // https://www.mail-archive.com/amibroker@yahoogroups.com/msg30080.html
             RWHmin = ( H - Ref( L, -pMin ) ) / ( Max( ATR( 1 ), ATR( pMin ) ) * sqrt( pMin ) );
             RWHmax = ( H - Ref( L, -pMax ) ) / ( Max( ATR( 1 ), ATR( pMax ) ) * sqrt( pMax ) );
             RWH = Max( RWHmin, RWHmax );
         break;
         case "Method 3":
             // http://www.amibroker.com/members/library/detail.php?id=924&hilite=RWIHi
             VarMaxHi = 0;
             for( i = 5; i <= BarCount - 1; i++ )
             {
                 VarMaxHi[ i ] = Max( ( H[ i ] - L[ i - 1 ] ) / ( ( H[ i ] - L[ i ] ) * sqrt( i - 4 ) ), ( H[ i ] - L[ i - 2 ] ) / ( ( H[ i ] - L[ i ] ) * sqrt( i - 3 ) ) );
                 RWH[ i ] = Max( VarMaxHi[ i ], VarMaxHi[ i - 1 ] );
             }
         break;
     }
     
     Title = "RWH: " + RWH;
     Plot( RWH, "RWH", ParamColor( "Color", colorCycle ), ParamStyle("Style") ); 
_SECTION_END();
Any suggestions?

Thank you for reading. Appreciate your time!
 
Top