PureBytes Links
Trading Reference Links
|
Typo
case 3 ;
I must have deleted the s when i transferred the program
Jim Hutchison
At 10:38 PM 5/6/2007, you wrote:
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
|