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

ChimpTrader

New member
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 .

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.
2.
3.

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