joshsmi Posted October 7, 2010 Report Share Posted October 7, 2010 Ihr müßt dafür zuerst eine Watchlist mit Werten füllen. Diese Watchlist und Anderes könnt ihr dann in den Einstellungen des Gesamtblattes auswählen. Watchlist 0 ist default. AFL ist nicht von mir. Von welchem Autor auch immer, feine Sache. //FIle: Multi-Chart // //January 10, 2008 //From AB board // create a watchlist and select in parameters window - along with other settings // 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 (); } } } Quote Link to comment Share on other sites More sharing options...
joshsmi Posted October 7, 2010 Author Report Share Posted October 7, 2010 Um bei Forex 4 Stellen nach dem Komma zu erhalten, müßt ihr im mittleren Teil zwei Mal von 1.2 auf 1.4 umändern. VolRatio = VolChartHeight / VolHigh ; Range = priceHigh - priceMin; Ratio = BarChartHeight / Range ; PriceLineLevel = Range / NumberPriceLevels; yHi=(((priceHigh - priceMin )* Ratio) - BarChartHeight) * -1 + y1 + DataMargin; GfxTextOut ( WriteVal (priceHigh, 1.4 ), 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.4 ), x1 + BarChartWidth, yHi -8 ); GfxSelectPen ( colorLightGrey ); GfxMoveTo ( x1 , yHi ); GfxLineTo ( x1 + BarChartWidth -5 , yHi ); Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.