BlankHerman,

Heat map makes visual very easy .... 

Are you getting away from full auto trade?  Is the heat map approach preferred 
to auto trade?

Ara
  ----- Original Message ----- 
  From: Herman 
  To: AmiBroker YahooGroups 
  Sent: Sunday, January 07, 2007 5:23 AM
  Subject: [amibroker] Real-Time Heat-Map (was:Displaying HOT-> COLD RGB colors)


  Actually this is just my first try and the code is still evolving. We used to 
do this type of tabling with AA Explorations however for Real-Time applications 
I prefer the display on the chart. I would like to use it for portfolio trading 
to show me where the action is (in Real-Time) wrt my criteria. To reduce 
processing overhead I would map only tickers that meet my criteria. 

  I thought perhaps some others might see new applications for this type of 
display, write a standard function to display different types of maps that can 
be selected from the param window. 

  I still have some trouble automatically scaling the Hue, this requires 
normalizing and scaling the range, also I would like to have a sort function so 
that hot-cold are located at diagonally opposite corners. 

  best regards,

  herman

  --- In [email protected], "cstrader" <[EMAIL PROTECTED]> wrote:
  >
  > Herman:  You and Amibroker make a great combination!  Very cool (and hot, I 
suppose) work.
  > 
  > Do you use the heat map as an index of the market internals for trading 
indices, or do you use it for trading individual stocks?
  > 
  > chuck
  > 
  > 
  >   ----- Original Message ----- 
  >   From: Herman 
  >   To: AmiBroker YahooGroups 
  >   Sent: Saturday, January 06, 2007 10:50 AM
  >   Subject: [amibroker] Real-Time Heat-Map (was:Displaying HOT-> COLD RGB 
colors)
  > 
  > 
  >   Thanks for the help, TJ and others!
  > 
  >   I needed a Heat-Map that refreshes during real-time trading. Below is 
what I have thus far. It uses dummy data: you must define VarToMap. To save 
time I set it to refresh each 5 seconds. 
  >   The Ticker order is important for me, hence I plotted both upper and 
lower sections.
  > 
  >   Any tips on how to make this work under Quick-AFL or make it faster in 
other ways would be appreciated.
  > 
  >   best regards,
  >   herman
  > 
  > 
  > 
  >   // Heat-Map by Herman - 06DEC2007 - TEST/DEMO ONLY!
  > 
  >   // Set Param -> Axis & Grid: NO Middle Lines
  > 
  >   // Convert Variable-To-Map to 0-99 range
  > 
  >   // Zoom Chart to get nice display
  > 
  >    
  > 
  >   SetBarsRequired(1000000,1000000);
  > 
  >   GraphXSpace = 0;
  > 
  >   GraphZOrder = False;
  > 
  >   SetChartOptions( 3, chartShowDates);
  > 
  >   RequestTimedRefresh( MApRefreshInterval = 5 );
  > 
  >   RefreshMap     = Status("redrawaction");
  > 
  >   WLNum          = Param("WatchList Number",0,0,64,1);
  > 
  >   TickersToMap   = Param("Num. Tickers to Map",10,1,64,1);
  > 
  >   MaxTickers     = Param("Max. Tickers",50,2,100,1);
  > 
  >   MaxHue         = Param("Max. Hue",255,0,255,1);
  > 
  >   MinHue         = Param("Min. Hue",97,0,255,1);
  > 
  >    
  > 
  >   if( RefreshMap )
  > 
  >      { 
  > 
  >      TickersToMap   = Min(TickersToMap, MaxTickers);
  > 
  >      List           = CategoryGetSymbols( categoryWatchlist, WLNum );
  > 
  >      MaxList = "";
  > 
  >      for( T=0; (Ticker=StrExtract( List, T))!= "" AND T < TickersToMap; T++)
  > 
  >         {
  > 
  >         MaxList = MaxList + Ticker +",";
  > 
  >         StaticVarSetText("Ticker"+T, Ticker);
  > 
  >         }
  > 
  >      StaticVarSetText("MaxList",MaxList);
  > 
  >      BI                = BarIndex();
  > 
  >      MaxYCoordinate    = TickersToMap;
  > 
  >      MinYCoordinate    = 1;
  > 
  >      MinXBarindex      = BarCount-TickersToMap;
  > 
  >      MaxXBarindex      = BarCount-1;
  > 
  >      CellCount = 0;
  > 
  >      XCoordinate = YCoordinate = 0;
  > 
  >      MaxList = StaticVarGetText("MaxList");
  > 
  >      for( Y=MinYCoordinate; Y <= TickersToMap; Y++ )
  > 
  >         {
  > 
  >         for( X=MinXBarindex; X <= MaxXBarindex; X++ )
  > 
  >            {
  > 
  >            XTicker = StaticVarGetText("Ticker"+XCoordinate); 
  > 
  >            YTicker = StaticVarGetText("Ticker"+YCoordinate);
  > 
  >            VarToMap = CellCount; // must be in range 0-99
  > 
  >            StaticVarSet(XTicker+"-"+YTicker, VarToMap);
  > 
  >            XCoordinate++;
  > 
  >            CellCount++;
  > 
  >            }
  > 
  >         XCoordinate=0;
  > 
  >         YCoordinate++;
  > 
  >         }
  > 
  >      }
  > 
  >    
  > 
  >   Plot(-1,"",1,styleNoLine|styleNoLabel);
  > 
  >   Plot(TickersToMap,"",1,styleNoLine|styleNoLabel);
  > 
  >   BI                = BarIndex();
  > 
  >   MaxYCoordinate    = TickersToMap;
  > 
  >   MinYCoordinate    = 1;
  > 
  >   MinXBarindex      = BarCount-TickersToMap;
  > 
  >   MaxXBarindex      = BarCount-1;
  > 
  >   YStep             = int(MaxYCoordinate/TickersToMap);
  > 
  >   XCoordinate = YCoordinate = 0;
  > 
  >   for( Y=MinYCoordinate; Y<=MaxYCoordinate; Y++ )
  > 
  >      {
  > 
  >      for( X = MinXBarindex; X <= MaxXBarindex; X++ )
  > 
  >         {
  > 
  >         XTicker   = StaticVarGetText("Ticker"+XCoordinate); 
  > 
  >         YTicker   = StaticVarGetText("Ticker"+YCoordinate);
  > 
  >         VarToMap  = StaticVarGet(XTicker+"-"+YTicker); 
  > 
  >         HueStep   = (MaxHue - MinHue)/100;
  > 
  >         Co = ColorHSB(Min(255,int((100-VarToMap)*HueStep)),255,255);
  > 
  >         PlotText(NumToStr(VarToMap,1.0),X,Y-0.5,1);
  > 
  >         if( XTicker == YTicker ) Co = colorBlack;
  > 
  >         
Plot(IIf(X==BI,Y,Null),"",Co,styleArea|styleOwnScale|styleNoLabel,-1,MaxYCoordinate*1.03);
  > 
  >         XCoordinate++;
  > 
  >         }
  > 
  >      XCoordinate = 0;
  > 
  >      YCoordinate++;
  > 
  >      } 
  > 
  >    
  > 
  >   for(T=0; T<=TickersToMap; T++) 
  > 
  >      {
  > 
  >      Ticker = StaticVarGetText("Ticker"+T);
  > 
  >      PlotText(Ticker,BarCount,T+0.5,1);
  > 
  >      PlotText("\n"+Ticker,BarCount-TickersToMap+T,-0.5,1);
  > 
  >      }
  > 
  >    
  > 
  >   MaxList = StaticVarGetText("MaxList");
  > 
  >   Title = "Heat Map for Watchlist #"+NumToStr(WLNum,1.0,False)+": "+MaxList;
  >


   

Attachment: Blank Bkgrd.gif
Description: GIF image

Reply via email to