Hi, Thank you for sharing this code. I use Weekly charts and have amended the code to show weekly data. However,I do not use Volume in my Charts. I find Jim's code very informative but I would like to remove the bits relating to Volume. I have tried to edit the code but keep ending up in a mess with numerous error messages. If Jim or anybody else could amend the code I would be very grateful. Thanks Peter
--- In [email protected], James Hutchison <[EMAIL PROTECTED]> wrote: > > This is an example of how helpful it is to be able to draw our own creations. > The code is attached > Jim Hutchison > > [] > > > > GfxSetOverlayMode(2); > Page = Param("Page #",0,0,12,1); > listNum= Param("Watch List Num" ,0,0,50,1); ;//enter watchlist number > ChartsWiNum = Param("# Charts Wide",3,1,4,1); > ChartsHiNum = Param("# Charts High",3,1,4,1); > ChartMargin = 5 ; > DataMargin = 20 ; > NumCharts = ChartsWiNum * ChartsHiNum ; > ScreenHeight = Status("pxheight") ; > SceernWidth = Status("pxwidth") ; > ChartHeight = ScreenHeight / ChartsHiNum -2 ; > Width = SceernWidth / ChartsWiNum - 2; > BarChartHeight= (0.80) * ChartHeight - DataMargin; > VolChartHeight = ChartHeight - BarChartHeight - DataMargin ; > NumberPriceLevels = BarChartHeight / 25; > BarChartWidth= Width - 45; > Bars =Param("Number Of Bars", 195,50,250,1) ; > BarWidth = (BarChartWidth - ChartMargin * 3) / Bars ; > LastBar = BarCount ; > FirstBar = LastBar - Bars; > _N(list = CategoryGetSymbols( categoryWatchlist, listnum )); > printf("Watch List Name\n"); > WL = CategoryGetName( categoryWatchlist, listnum ); > > s = Page * NumCharts; > /* > _TRACE("ScreenHeight "+WriteVal(ScreenHeight)); > _TRACE("ChartHeight "+WriteVal(ChartHeight)); > _TRACE("VolChartHeight "+WriteVal(VolChartHeight)); > _TRACE("BarChartHeight "+WriteVal(BarChartHeight)); > */ > for( x = 0; x < ChartsHiNum ; x++ ) > { > for( i = 0; i < ChartsWiNum ; i++ ) > { > sym = StrExtract( list, s ); > if(sym != "") > { > x1 = Width * i + 5; > y1 = ChartHeight * x + 5; > x2 = Width * (i + 1); > y2 = ChartHeight * (x + 1); > GfxSelectPen( colorBlack ); > GfxRectangle( x1, y1, x2, y2 ); > > SetForeign(sym); > > s++; > 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", 9 ); > 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 ); > > /* > _TRACE("x "+WriteVal(x)); > _TRACE("i "+WriteVal(i)); > _TRACE("VolHigh "+WriteVal(VolHigh)); > _TRACE("VolChartHeight "+WriteVal(VolChartHeight)); > _TRACE("VolRatio "+WriteVal(VolRatio,1.8)); > _TRACE("Ratio "+WriteVal(Ratio)); > _TRACE("PriceLineLevel "+WriteVal(PriceLineLevel)); > */ > for( z = 0; z < NumberPriceLevels ; 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; > for( z = FirstBar; z < LastBar ; z++ ) > { > BarH = H[z]; > BarL = L[z]; > BarO = O[z]; > BarC = C[z]; > Vol = V[z]; > > vHi= Vol * VolRatio - VolChartHeight + y2; > yHi=(((BarH - priceMin )* Ratio)- BarChartHeight ) * -1 + y1 + DataMargin; > yLo= (((BarL - priceMin )* Ratio) - BarChartHeight) * -1 + y1 + DataMargin; > > > if( BarH > HighestLast ) > { > HighestLast = BarH; > GfxSelectPen( colorBlue ); > } > > else > { > GfxSelectPen( colorRed ); > } > > GfxMoveTo( BarWidth * w + x1 + ChartMargin , yHi ); > GfxLineTo( BarWidth * w + x1 + ChartMargin, yLo ); > if( BarO > BarC) > { > GfxSelectPen( colorRed ); > } > else > { > GfxSelectPen( colorLime ); > } > GfxMoveTo( BarWidth * w + x1 + ChartMargin , vHi ); > GfxLineTo( BarWidth * w + x1 + ChartMargin, y2 ); > w++; > > > } > RestorePriceArrays(); > } > } > } >
