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

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



PureBytes Links

Trading Reference Links

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;

   

   

   


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