Stock Portfolio Organizer
The ultimate porfolio management solution.
Shares, Margin, CFD's, Futures and Forex
EOD and Realtime
Dividends and Trust Distributions
And Much More ....
WiseTrader Toolbox
#1 Selling Amibroker Plugin featuring:
Advanced Adaptive Indicators
Advanced Pattern Exploration
Neural Networks
And Much More ....
Multiple Chart for Amibroker (AFL)
Rating:
4 / 5 (Votes 5)
Tags:
amibroker
Multiple Chart one window watch multiple stocks.
Screenshots
Similar Indicators / Formulas
Kavach Of Karna v2
Submitted
by hbkwarez over 10 years ago
Advanced Elliott Waves
Submitted
by MarcosEn almost 13 years ago
3_6Day GuaiLiLv
Submitted
by motorfly almost 13 years ago
Williams Alligator System
Submitted
by durgesh1712 about 13 years ago
Interactive Linear Regression Channel
Submitted
by InternetWorm almost 13 years ago
*Level Breakout system*
Submitted
by Tinych about 13 years ago
Indicator / Formula
Copy & Paste Friendly
//FIle: Multi-Chart //http://stockconnection.blogspot.com //January 10, 2008 // // // GFX Drawing Example function GetMonth( MonthNumber ) { switch (MonthNumber) { case 2 : result = "Feb"; break ; case 3 : result = "Mar"; break ; case 4 : result = "Apr"; break ; case 5 : result = "May"; break ; case 6 : result = "Jun"; break ; case 7 : result = "Jul"; break ; case 8 : result = "Aug"; break ; case 9 : result = "Sep"; break ; case 10 : result = "Oct"; break ; case 11 : result = "Nov"; break ; case 12 : result = "Dec"; break ; } return result; } GfxSetOverlayMode( 2 ); String = "" ; for ( x = 0 ; x < 200 ; x++ ) { WList = CategoryGetName( categoryWatchlist, x ); if (WList != "" ) { String = String + WList +"," ; } } WatchList = ParamList ( "Watch List", String ); for ( x = 0 ; x < 200 ; x++ ) { sym = StrExtract ( String, x ); if (sym == WatchList) { listNum = x ; } } Page = Param ( "Page #", 0 , 0 , 12 , 1 ); ChartsWiNum = Param ( "# Charts Wide", 3 , 1 , 4 , 1 ); ChartsHiNum = Param ( "# Charts High", 3 , 1 , 4 , 1 ); Bars =Param ( "Number Of Bars", 195 , 50 , 250 , 1 ) ; lDays =Param ( "Long MA", 200 , 50 , 250 , 1 ) ; sDays =Param ( "Short MA", 50 , 5 , 100 , 1 ) ; vDays =Param ( "Volume MA", 50 , 5 , 100 , 1 ) ; ChartMargin = 5 ; DateMargin = 10 ; DataMargin = 20 ; NumCharts = ChartsWiNum * ChartsHiNum ; ScreenHeight = Status ( "pxheight" ) ; SceernWidth = Status ( "pxwidth" ) ; ChartHeight = ScreenHeight / ChartsHiNum -2 ; Width = SceernWidth / ChartsWiNum - 2 ; BarChartHeight= (0.75 ) * ChartHeight - DataMargin; VolChartHeight = ChartHeight - BarChartHeight - DataMargin*2 ; NumberPriceLevels = BarChartHeight / 25 ; BarChartWidth= Width - 45 ; BarWidth = (BarChartWidth - ChartMargin * 3 ) / Bars ; LastBar = BarCount ; FirstBar = LastBar - Bars; _N (list = CategoryGetSymbols( categoryWatchlist, listnum )); printf ( "Watch List Name\n"); WL = CategoryGetName( categoryWatchlist, listnum ); SymbolNum = Page * NumCharts; for ( x = 0 ; x < ChartsHiNum ; x++ ) { for ( i = 0 ; i < ChartsWiNum ; i++ ) { notDone = True; sym = StrExtract ( list, SymbolNum ); if (sym != "" ) { x1 = Width * i + 5 ; y1 = ChartHeight * x + 5 ; x2 = Width * (i + 1 ); y2 = ChartHeight * (x + 1 )-DateMargin; GfxSelectPen ( colorBlack ); GfxRectangle ( x1, y1, x2, y2 ); SymbolNum++; SetForeign (sym); EMAShort= EMA (C,sDays); EMALong= EMA (C,lDays); EMAVol= EMA (V,vDays); D = Day (); M = Month (); Y = Year (); priceHigh = 0 ; VolHigh = 0 ; priceMin = 1000000 ; for ( z = FirstBar; z < LastBar ; z++ ) { Vol = V[z]; BarH = H[z]; BarL = L[z]; if ( Vol > VolHigh ) { VolHigh = Vol; } if ( BarH > priceHigh ) { priceHigh = BarH; } if ( BarL < priceMin ) { priceMin = BarL; } } LOpen = O[LastBar- 1]; LHigh = H[LastBar- 1]; LLow = L[LastBar- 1]; LClose = C[LastBar- 1]; LVol = V[LastBar- 1]; GfxSelectFont ( "Tahoma" , 8 ); GfxSetTextColor (colorBlack); GfxTextOut (sym + " O: " +LOpen + " H: " +LHigh + " L: " +LLow + " C: " +LClose + " Vol: " +LVol/ 1000000 + " M", x1+5 , y1+2 ); VolRatio = VolChartHeight / VolHigh ; Range = priceHigh - priceMin; Ratio = BarChartHeight / Range ; PriceLineLevel = Range / NumberPriceLevels; yHi=(((priceHigh - priceMin )* Ratio) - BarChartHeight) * -1 + y1 + DataMargin; GfxTextOut ( WriteVal (priceHigh, 1.2 ), x1 + BarChartWidth, yHi -8 ); GfxSelectPen ( colorLightGrey ); GfxMoveTo ( x1 , yHi ); GfxLineTo ( x1 + BarChartWidth -5 , yHi ); for ( z = 0 ; z < NumberPriceLevels- 1 ; z++ ) { PriceLevel = PriceLineLevel*z + priceMin; yHi=(((PriceLevel - priceMin )* Ratio) - BarChartHeight) * -1 + y1 + DataMargin; GfxTextOut ( WriteVal (PriceLevel, 1.2 ), x1 + BarChartWidth, yHi -8 ); GfxSelectPen ( colorLightGrey ); GfxMoveTo ( x1 , yHi ); GfxLineTo ( x1 + BarChartWidth -5 , yHi ); } HighestLast = 0 ; w = 1 ; sEMAlast = EMAShort[FirstBar]; lEMAlast = EMALong[FirstBar]; vEMAlast = EMAVol[FirstBar]; for ( z = FirstBar; z < LastBar ; z++ ) { BarH = H[z]; BarL = L[z]; BarO = O[z]; BarC = C[z]; Vol = V[z]; sEMA = EMAShort[z]; lEMA = EMALong[z]; vEMA = EMAVol[z]; BarDay = D[z]; BarMonth = M[z]; BarYear = Y[z]; yO = (((BarO - priceMin )* Ratio)- BarChartHeight ) * -1 + y1 + DataMargin; yC = (((BarC - priceMin )* Ratio)- BarChartHeight ) * -1 + y1 + DataMargin; yHi = (((BarH - priceMin )* Ratio)- BarChartHeight ) * -1 + y1 + DataMargin; yLo = (((BarL - priceMin )* Ratio) - BarChartHeight) * -1 + y1 + DataMargin ; ysEMAlast = (((sEMAlast - priceMin )* Ratio) - BarChartHeight) * -1 + y1 + DataMargin; ysEMA = (((sEMA - priceMin )* Ratio) - BarChartHeight) * -1 + y1 + DataMargin; ylEMAlast = (((lEMAlast - priceMin )* Ratio) - BarChartHeight) * -1 + y1 + DataMargin; ylEMA = (((lEMA - priceMin )* Ratio) - BarChartHeight) * -1 + y1 + DataMargin; vHi = y2 - (Vol * VolRatio) ; yvEMAlast = y2 - (vEMAlast * VolRatio) ; yvEMA = y2 - (vEMA * VolRatio) ; if ( BarH > HighestLast ) { HighestLast = BarH; GfxSelectPen ( colorBlue ); } else { GfxSelectPen ( colorRed ); } // Plot bar GfxMoveTo ( BarWidth * w + x1 + ChartMargin , yHi ); GfxLineTo ( BarWidth * w + x1 + ChartMargin, yLo ); GfxMoveTo ( BarWidth * w + x1 + ChartMargin -1 , yO ); GfxLineTo ( BarWidth * w + x1 + ChartMargin, yO ); GfxMoveTo ( BarWidth * w + x1 + ChartMargin +1 , yC ); GfxLineTo ( BarWidth * w + x1 + ChartMargin, yC ); if ( BarO > BarC) { GfxSelectPen ( colorRed ); } else { GfxSelectPen ( colorLime ); } // Plot Volume GfxMoveTo ( BarWidth * w + x1 + ChartMargin , vHi ); GfxLineTo ( BarWidth * w + x1 + ChartMargin, y2 ); // Plot Price and Volume EMAs GfxSelectPen ( colorLime ); GfxMoveTo ( BarWidth * (w -1 ) + x1 + ChartMargin , ysEMAlast ); GfxLineTo ( BarWidth * w + x1 + ChartMargin, ysEMA ); GfxSelectPen ( colorDarkRed ); GfxMoveTo ( BarWidth * (w -1 ) + x1 + ChartMargin , ylEMAlast ); GfxLineTo ( BarWidth * w + x1 + ChartMargin, ylEMA ); GfxSelectPen ( colorBlack ); GfxMoveTo ( BarWidth * (w -1 ) + x1 + ChartMargin , yvEMAlast ); GfxLineTo ( BarWidth * w + x1 + ChartMargin, yvEMA ); w++; sEMAlast = sEMA ; lEMAlast = lEMA ; vEMAlast = vEMA ; GfxSelectFont ( "Tahoma" , 7 ); GfxSelectPen ( colorLightGrey ); // Draw vertical month separator and X-axis labels if (BarDay== 1 & notDone ) { if (BarMonth == 1 ) myLabel =WriteVal (BarYear, 1.0 ); else myLabel =GetMonth(BarMonth); GfxTextOut (myLabel, BarWidth * w + x1 + ChartMargin - 5 , y2 +DateMargin/3 ); GfxMoveTo ( BarWidth * w + x1 + ChartMargin , y2 ); GfxLineTo ( BarWidth * w + x1 + ChartMargin, y1 + DataMargin ); notDone = False; } if (BarDay== 2 & notDone ) { if (BarMonth == 1 ) myLabel =WriteVal (BarYear, 1.0 ); else myLabel =GetMonth(BarMonth); GfxTextOut (myLabel, BarWidth * w + x1 + ChartMargin - 5 , y2 +DateMargin/3 ); GfxMoveTo ( BarWidth * w + x1 + ChartMargin , y2 ); GfxLineTo ( BarWidth * w + x1 + ChartMargin, y1 + DataMargin ); notDone = False; } if (BarDay== 3 & notDone ) { if (BarMonth == 1 ) myLabel =WriteVal (BarYear, 1.0 ); else myLabel =GetMonth(BarMonth); GfxTextOut (myLabel, BarWidth * w + x1 + ChartMargin - 5 , y2 +DateMargin/3 ); GfxMoveTo ( BarWidth * w + x1 + ChartMargin , y2 ); GfxLineTo ( BarWidth * w + x1 + ChartMargin, y1 + DataMargin ); notDone = False; } if (BarDay== 4 & notDone ) { if (BarMonth == 1 ) myLabel =WriteVal (BarYear, 1.0 ); else myLabel =GetMonth(BarMonth); GfxTextOut (myLabel, BarWidth * w + x1 + ChartMargin - 5 , y2 +DateMargin/3 ); GfxMoveTo ( BarWidth * w + x1 + ChartMargin , y2 ); GfxLineTo ( BarWidth * w + x1 + ChartMargin, y1 + DataMargin ); notDone = False; } if (BarDay== 5 & notDone ) { if (BarMonth == 1 ) myLabel =WriteVal (BarYear, 1.0 ); else myLabel =GetMonth(BarMonth); GfxTextOut (myLabel, BarWidth * w + x1 + ChartMargin - 5 , y2 +DateMargin/3 ); GfxMoveTo ( BarWidth * w + x1 + ChartMargin , y2 - VolChartHeight ); GfxLineTo ( BarWidth * w + x1 + ChartMargin, y1 + DataMargin ); notDone = False; } if (BarDay== 6 |BarDay== 7 |BarDay== 8 |BarDay== 9 |BarDay== 10 ) { notDone = True; } } RestorePriceArrays (); } } }
12 comments
Leave Comment
Please login here to leave a comment.
Back
nice work thank you
how to use it?
Beautiful code , exactly what i was searching for .
Thanks
Amit
cool, nice work
how to use it dear?
HI.. EXCELLENT CODE..BUT WHY IS ALL THE DATA NOT DOWNLOADING ON ITS OWN
can anyone guide , how to use this …..?
guide me how to apply this into charts.
How to plotting two symbol chart in one chart by candlesticks..please help me.
Put all the stocks your want to see in a watch list then select that watch list in the indicator’s parameters window.
Yes,thanks.Nice work
How to change the charts from Bar style to candlestick style?