[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: Sat, 6 Jan 2007 10:50:59 -0500

PureBytes Links

Trading Reference Links

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,M
axYCoordinate*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