BlankActually 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,MaxYCoo
rdinate*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