PureBytes Links
Trading Reference Links
|
Amazing stuff!
--- In amibroker@xxxxxxxxxxxxxxx, James Hutchison <phutch@xxx> wrote:
>
> Additional Features Volume drawing has been fixed
> Parameters to change chart settings and to choose watch lists
> []
>
>
>
>
>
> Code For new Version
>
>
> function GetMonth( MonthNumber )
> {
> switch(MonthNumber) {
> case 2:
> result ="Feb";
> break;
> cae 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", 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 );
> 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 );
> }
>
> 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 );
> }
> GfxMoveTo( BarWidth * w + x1 +
ChartMargin , vHi );
> GfxLineTo( BarWidth * w + x1 +
ChartMargin, y2 );
>
> 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 );
>
> 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();
> }
> }
> }
>
>
>
>
> Thank you for your compliments.
>
> Jim Hutchison
>
Please note that this group is for discussion between users only.
To get support from AmiBroker please send an e-mail directly to
SUPPORT {at} amibroker.com
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
For other support material please check also:
http://www.amibroker.com/support.html
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/amibroker/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/amibroker/join
(Yahoo! ID required)
<*> To change settings via email:
mailto:amibroker-digest@xxxxxxxxxxxxxxx
mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx
<*> To unsubscribe from this group, send an email to:
amibroker-unsubscribe@xxxxxxxxxxxxxxx
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|