PureBytes Links
Trading Reference Links
|
BlankHerman,
Heat map makes visual very easy ....
Are you getting away from full auto trade? Is the heat map approach preferred to auto trade?
Ara
----- Original Message -----
From: Herman
To: AmiBroker YahooGroups
Sent: Sunday, January 07, 2007 5:23 AM
Subject: [amibroker] Real-Time Heat-Map (was:Displaying HOT-> COLD RGB colors)
Actually 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,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.7/618 - Release Date: 1/6/2007 7:47 PM
|