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
|