[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [amibroker] Gfx Drawing example



PureBytes Links

Trading Reference Links

cae = case
----- Original Message -----
From: MarkK
Sent: Sunday, May 06, 2007 10:38 PM
Subject: RE: [amibroker] Gfx Drawing example

Fantastic coding can you help me out as to why when I use your code on the bottom I get this?

Thank you

 

Mark

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf Of James Hutchison
Sent: Sunday, May 06, 2007 10:03 PM
To: amibroker@xxxxxxxxxxxxxxx
Subject: Re: [amibroker] Gfx Drawing example

 

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


No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.467 / Virus Database: 269.6.5/792 - Release Date: 5/6/2007 9:01 PM
__._,_.___

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





SPONSORED LINKS
Investment management software Investment property software Investment software
Investment tracking software Return on investment software

Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe

__,_._,___