[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Real-Time Heat-Map (was:Displaying HOT-> COLD RGB colors)


  • To: "AmiBroker YahooGroups" <amibroker@xxxxxxxxxxxxxxx>
  • Subject: [amibroker] Real-Time Heat-Map (was:Displaying HOT-> COLD RGB colors)
  • From: "Herman" <psytek@xxxxxxxx>
  • Date: Sun, 7 Jan 2007 08:23:59 -0500

PureBytes Links

Trading Reference Links

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 amibroker@xxxxxxxxxxxxxxx, "cstrader" <cstrader232@xxx> 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;
>




Content-Description: "AVG certification"
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.432 / Virus Database: 268.16.6/617 - Release Date: 1/5/2007 11:11 AM