[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

Thanks Herman. I got it ...

Ton.

  ----- Original Message ----- 
  From: Herman 
  To: amibroker@xxxxxxxxxxxxxxx 
  Sent: Sunday, January 07, 2007 9:57 AM
  Subject: RE: [amibroker] Real-Time Heat-Map (was:Displaying HOT-> COLD RGB colors)



  Hello Ton,

  The code is just an open ended template to modified by the user . It is the formatting of the cells and labelling of the axis that was a bit time-consuming to develop and that was what I intended to share; not the actual application which is up to the user. You can create the table you showed by simply splitting the ticker list. 

  You can use it to map correlation between stocks, fastest moving stocks, liquidity, compliance to qualifying indicators, open portfolio positions, profits status of open positions, order status, etc. It is very effective to display a multitude of conditions, you can even expand it to several status maps in a separate windows. 

  best regards,
  herman


   -----Original Message-----
  From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx]On Behalf Of Ton Sieverding
  Sent: January 7, 2007 3:18 AM
  To: amibroker@xxxxxxxxxxxxxxx
  Subject: Re: [amibroker] Real-Time Heat-Map (was:Displaying HOT-> COLD RGB colors)


    First of all, thanks to you Herman. Great stuff. But I don't follow this from a logical point of view. Please explain me why you have the tickers in both directions and not just in the rectangles like the heatmap underneath. What does this give me extra ? I am missing something. Please explain ...

    Ton.





      ----- Original Message ----- 
      From: Herman 
      To: AmiBroker YahooGroups 
      Sent: Saturday, January 06, 2007 4:50 PM
      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