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 [email protected], "cstrader" <[EMAIL PROTECTED]> 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; >
Blank Bkgrd.gif
Description: GIF image
