Financial Bars (C Code)
Open, High, Low, Close Chart
#include <stdio.h>
#include "dislin.h"
#define NMAX 100
int get_data (float *x, float *yopen, float *yhigh, float *ylow,
float *yclose, float *yvol, int nmax);
main ()
{ int n;
float x[NMAX], yopen[NMAX], yhigh[NMAX], ylow[NMAX], yclose[NMAX],
yvol[NMAX];
float xa, xe, xor, xstp;
basdat (1,1,2000);
n = get_data (x, yopen, yhigh, ylow, yclose, yvol, NMAX);
xa = incdat (1, 1, 2010);
xe = incdat (15, 3, 2010);
xor = incdat (1, 1, 2010);
xstp = 7.f;
scrmod ("revers");
winsiz (600, (int) (2100. / 2900 * 600));
metafl ("cons");
disini ();
pagera ();
hwfont ();
barwth (-20.f);
labels ("Date", "x");
labmod ("form", "mdy", "x");
labmod ("month", "short", "x");
labmod ("year", "short", "x");
labmod ("separator", "/", "x");
ticks (7, "x");
name ("Price", "y");
name ("Date", "x");
labdig (-1, "y");
height (30);
bartyp ("ticks");
titlin ("Open, High, Low, Close Chart", 3);
axspos (300, 1300);
axslen (2400, 900);
setgrf ("ticks", "name", "ticks", "ticks");
graf (xa, xe, xor, xstp, 27.f, 32.f, 27.f, 1.f);
htitle (45);
title ();
dot ();
grid (1, 1);
solid ();
fbars (x, yopen, yhigh, ylow, yclose, n);
endgrf ();
name ("Volume * 10000", "y");
axspos (300, 1800);
axslen (2400, 501);
setgrf ("name", "name", "ticks", "ticks");
graf (xa, xe, xor, xstp, 0.f, 23000.f, 0.f, 5000.f);
dot ();
grid (1, 1);
solid ();
polcrv ("fbars");
color ("blue");
curve (x, yvol, n);
rpng ("fchart_1.png");
disfin ();
}
int get_data (float *x, float *yopen, float *yhigh, float *ylow,
float *yclose, float *yvol, int nmax)
{
struct data {
int im;
int id;
int iy;
float open;
float high;
float low;
float close;
int volume;
} v[47] = {
1, 4, 2010, 30.62, 31.10, 30.59, 30.95, 38409100,
1, 5, 2010, 30.85, 31.10, 30.64, 30.96, 49749600,
1, 6, 2010, 30.88, 31.08, 30.52, 30.77, 58182400,
1, 7, 2010, 30.63, 30.70, 30.19, 30.45, 50559700,
1, 8, 2010, 30.28, 30.88, 30.24, 30.66, 51197400,
1, 11, 2010, 30.71, 30.76, 30.12, 30.27, 68754700,
1, 12, 2010, 30.15, 30.40, 29.91, 30.07, 65912100,
1, 13, 2010, 30.26, 30.52, 30.01, 30.35, 51863500,
1, 14, 2010, 30.31, 31.10, 30.26, 30.96, 63228100,
1, 15, 2010, 31.08, 31.24, 30.71, 30.86, 79913200,
1, 19, 2010, 30.75, 31.24, 30.68, 31.10, 46575700,
1, 20, 2010, 30.81, 30.94, 30.31, 30.59, 54849500,
1, 21, 2010, 30.61, 30.72, 30.00, 30.01, 73086700,
1, 22, 2010, 30.00, 30.20, 28.84, 28.96, 102004600,
1, 25, 2010, 29.24, 29.66, 29.10, 29.32, 63373000,
1, 26, 2010, 29.20, 29.85, 29.09, 29.50, 66639900,
1, 27, 2010, 29.35, 29.82, 29.02, 29.67, 63949500,
1, 28, 2010, 29.84, 29.87, 28.89, 29.16, 117513700,
1, 29, 2010, 29.90, 29.92, 27.66, 28.18, 193888500,
2, 1, 2010, 28.39, 28.48, 27.92, 28.41, 85931100,
2, 2, 2010, 28.37, 28.50, 28.14, 28.46, 54413700,
2, 3, 2010, 28.26, 28.79, 28.12, 28.63, 61397900,
2, 4, 2010, 28.38, 28.50, 27.81, 27.84, 77850000,
2, 5, 2010, 28.00, 28.28, 27.57, 28.02, 80960100,
2, 8, 2010, 28.01, 28.08, 27.57, 27.72, 52820600,
2, 9, 2010, 27.97, 28.34, 27.75, 28.01, 59195800,
2, 10, 2010, 28.03, 28.24, 27.84, 27.99, 48591300,
2, 11, 2010, 27.93, 28.40, 27.70, 28.12, 65993700,
2, 12, 2010, 27.81, 28.06, 27.58, 27.93, 81117200,
2, 16, 2010, 28.13, 28.37, 28.02, 28.35, 51935600,
2, 17, 2010, 28.53, 28.65, 28.36, 28.59, 45882900,
2, 18, 2010, 28.59, 29.03, 28.51, 28.97, 42856500,
2, 19, 2010, 28.79, 28.92, 28.69, 28.77, 44451800,
2, 22, 2010, 28.84, 28.94, 28.65, 28.73, 36707100,
2, 23, 2010, 28.68, 28.83, 28.09, 28.33, 52266200,
2, 24, 2010, 28.52, 28.79, 28.38, 28.63, 43165900,
2, 25, 2010, 28.27, 28.65, 28.02, 28.60, 48694000,
2, 26, 2010, 28.65, 28.85, 28.51, 28.67, 40370600,
3, 1, 2010, 28.77, 29.05, 28.53, 29.02, 43773800,
3, 2, 2010, 29.08, 29.30, 28.24, 28.46, 93123900,
3, 3, 2010, 28.51, 28.61, 28.35, 28.46, 48421200,
3, 4, 2010, 28.46, 28.65, 28.27, 28.63, 42890600,
3, 5, 2010, 28.66, 28.68, 28.42, 28.59, 56001800,
3, 8, 2010, 28.52, 28.93, 28.50, 28.63, 39414500,
3, 9, 2010, 28.56, 29.11, 28.55, 28.80, 50271600,
3, 10, 2010, 28.86, 29.11, 28.80, 28.97, 44891400,
3, 11, 2010, 28.89, 29.19, 28.85, 29.18, 35349700
};
int i, n = 0;
for (i = 0; i < 47; i++)
{ if (i < nmax)
{ x[i] = incdat (v[i].id, v[i].im, v[i].iy);
yopen[i] = v[i].open;
yhigh[i] = v[i].high;
ylow[i] = v[i].low;
yclose[i] = v[i].close;
yvol[i] = v[i].volume/ 10000.f;
n++;
}
}
return n;
}
Candlestick Chart
#include <stdio.h>
#include "dislin.h"
#define NMAX 100
int get_data (float *x, float *yopen, float *yhigh, float *ylow,
float *yclose, float *yvol, int nmax);
main ()
{ int n;
float x[NMAX], yopen[NMAX], yhigh[NMAX], ylow[NMAX], yclose[NMAX],
yvol[NMAX];
float xa, xe, xor, xstp;
basdat (1,1,2000);
n = get_data (x, yopen, yhigh, ylow, yclose, yvol, NMAX);
xa = incdat (1, 1, 2010);
xe = incdat (15, 3, 2010);
xor = incdat (1, 1, 2010);
xstp = 7.f;
scrmod ("revers");
winsiz (600, (int) (2100. / 2900 * 600));
metafl ("cons");
disini ();
pagera ();
hwfont ();
barwth (-20.f);
labels ("Date", "x");
labmod ("form", "mdy", "x");
labmod ("month", "short", "x");
labmod ("year", "short", "x");
labmod ("separator", "/", "x");
ticks (7, "x");
name ("Price", "y");
name ("Date", "x");
labdig (-1, "y");
height (30);
titlin ("Candlestick Chart", 3);
axspos (300, 1300);
axslen (2400, 900);
setgrf ("ticks", "name", "ticks", "ticks");
graf (xa, xe, xor, xstp, 27.f, 32.f, 27.f, 1.f);
htitle (45);
title ();
dot ();
grid (1, 1);
solid ();
color ("red");
fbars (x, yopen, yhigh, ylow, yclose, n);
color ("fore");
endgrf ();
name ("Volume * 10000", "y");
axspos (300, 1800);
axslen (2400, 501);
setgrf ("name", "name", "ticks", "ticks");
graf (xa, xe, xor, xstp, 0.f, 23000.f, 0.f, 5000.f);
dot ();
grid (1, 1);
solid ();
polcrv ("fbars");
color ("blue");
curve (x, yvol, n);
rpng ("fchart_2.png");
disfin ();
}
int get_data (float *x, float *yopen, float *yhigh, float *ylow,
float *yclose, float *yvol, int nmax)
{
struct data {
int im;
int id;
int iy;
float open;
float high;
float low;
float close;
int volume;
} v[47] = {
1, 4, 2010, 30.62, 31.10, 30.59, 30.95, 38409100,
1, 5, 2010, 30.85, 31.10, 30.64, 30.96, 49749600,
1, 6, 2010, 30.88, 31.08, 30.52, 30.77, 58182400,
1, 7, 2010, 30.63, 30.70, 30.19, 30.45, 50559700,
1, 8, 2010, 30.28, 30.88, 30.24, 30.66, 51197400,
1, 11, 2010, 30.71, 30.76, 30.12, 30.27, 68754700,
1, 12, 2010, 30.15, 30.40, 29.91, 30.07, 65912100,
1, 13, 2010, 30.26, 30.52, 30.01, 30.35, 51863500,
1, 14, 2010, 30.31, 31.10, 30.26, 30.96, 63228100,
1, 15, 2010, 31.08, 31.24, 30.71, 30.86, 79913200,
1, 19, 2010, 30.75, 31.24, 30.68, 31.10, 46575700,
1, 20, 2010, 30.81, 30.94, 30.31, 30.59, 54849500,
1, 21, 2010, 30.61, 30.72, 30.00, 30.01, 73086700,
1, 22, 2010, 30.00, 30.20, 28.84, 28.96, 102004600,
1, 25, 2010, 29.24, 29.66, 29.10, 29.32, 63373000,
1, 26, 2010, 29.20, 29.85, 29.09, 29.50, 66639900,
1, 27, 2010, 29.35, 29.82, 29.02, 29.67, 63949500,
1, 28, 2010, 29.84, 29.87, 28.89, 29.16, 117513700,
1, 29, 2010, 29.90, 29.92, 27.66, 28.18, 193888500,
2, 1, 2010, 28.39, 28.48, 27.92, 28.41, 85931100,
2, 2, 2010, 28.37, 28.50, 28.14, 28.46, 54413700,
2, 3, 2010, 28.26, 28.79, 28.12, 28.63, 61397900,
2, 4, 2010, 28.38, 28.50, 27.81, 27.84, 77850000,
2, 5, 2010, 28.00, 28.28, 27.57, 28.02, 80960100,
2, 8, 2010, 28.01, 28.08, 27.57, 27.72, 52820600,
2, 9, 2010, 27.97, 28.34, 27.75, 28.01, 59195800,
2, 10, 2010, 28.03, 28.24, 27.84, 27.99, 48591300,
2, 11, 2010, 27.93, 28.40, 27.70, 28.12, 65993700,
2, 12, 2010, 27.81, 28.06, 27.58, 27.93, 81117200,
2, 16, 2010, 28.13, 28.37, 28.02, 28.35, 51935600,
2, 17, 2010, 28.53, 28.65, 28.36, 28.59, 45882900,
2, 18, 2010, 28.59, 29.03, 28.51, 28.97, 42856500,
2, 19, 2010, 28.79, 28.92, 28.69, 28.77, 44451800,
2, 22, 2010, 28.84, 28.94, 28.65, 28.73, 36707100,
2, 23, 2010, 28.68, 28.83, 28.09, 28.33, 52266200,
2, 24, 2010, 28.52, 28.79, 28.38, 28.63, 43165900,
2, 25, 2010, 28.27, 28.65, 28.02, 28.60, 48694000,
2, 26, 2010, 28.65, 28.85, 28.51, 28.67, 40370600,
3, 1, 2010, 28.77, 29.05, 28.53, 29.02, 43773800,
3, 2, 2010, 29.08, 29.30, 28.24, 28.46, 93123900,
3, 3, 2010, 28.51, 28.61, 28.35, 28.46, 48421200,
3, 4, 2010, 28.46, 28.65, 28.27, 28.63, 42890600,
3, 5, 2010, 28.66, 28.68, 28.42, 28.59, 56001800,
3, 8, 2010, 28.52, 28.93, 28.50, 28.63, 39414500,
3, 9, 2010, 28.56, 29.11, 28.55, 28.80, 50271600,
3, 10, 2010, 28.86, 29.11, 28.80, 28.97, 44891400,
3, 11, 2010, 28.89, 29.19, 28.85, 29.18, 35349700
};
int i, n = 0;
for (i = 0; i < 47; i++)
{ if (i < nmax)
{ x[i] = incdat (v[i].id, v[i].im, v[i].iy);
yopen[i] = v[i].open;
yhigh[i] = v[i].high;
ylow[i] = v[i].low;
yclose[i] = v[i].close;
yvol[i] = v[i].volume/ 10000.f;
n++;
}
}
return n;
}
Candlestick Chart
#include <stdio.h>
#include "dislin.h"
#define NMAX 100
int get_data (float *x, float *yopen, float *yhigh, float *ylow,
float *yclose, float *yvol, int nmax);
main ()
{ int n, ic1, ic2;
float x[NMAX], yopen[NMAX], yhigh[NMAX], ylow[NMAX], yclose[NMAX],
yvol[NMAX];
float xa, xe, xor, xstp;
basdat (1,1,2000);
n = get_data (x, yopen, yhigh, ylow, yclose, yvol, NMAX);
xa = incdat (1, 1, 2010);
xe = incdat (15, 3, 2010);
xor = incdat (1, 1, 2010);
xstp = 7.f;
scrmod ("revers");
winsiz (600, (int) (2100. / 2900 * 600));
metafl ("cons");
disini ();
pagera ();
hwfont ();
barwth (-20.f);
labels ("Date", "x");
labmod ("form", "mdy", "x");
labmod ("month", "short", "x");
labmod ("year", "short", "x");
labmod ("separator", "/", "x");
ticks (7, "x");
name ("Price", "y");
name ("Date", "x");
labdig (-1, "y");
height (30);
titlin ("Candlestick Chart", 3);
axspos (300, 1300);
axslen (2400, 900);
setgrf ("ticks", "name", "ticks", "ticks");
graf (xa, xe, xor, xstp, 27.f, 32.f, 27.f, 1.f);
htitle (45);
title ();
dot ();
grid (1, 1);
solid ();
ic1 = intrgb (0.f, 1.f, 0.f);
ic2 = intrgb (1.f, 0.f, 0.f);
barclr (-1, ic1, ic2);
fbars (x, yopen, yhigh, ylow, yclose, n);
color ("fore");
endgrf ();
name ("Volume * 10000", "y");
axspos (300, 1800);
axslen (2400, 501);
setgrf ("name", "name", "ticks", "ticks");
graf (xa, xe, xor, xstp, 0.f, 23000.f, 0.f, 5000.f);
dot ();
grid (1, 1);
solid ();
polcrv ("fbars");
color ("blue");
curve (x, yvol, n);
rpng ("fchart_3.png");
disfin ();
}
int get_data (float *x, float *yopen, float *yhigh, float *ylow,
float *yclose, float *yvol, int nmax)
{
struct data {
int im;
int id;
int iy;
float open;
float high;
float low;
float close;
int volume;
} v[47] = {
1, 4, 2010, 30.62, 31.10, 30.59, 30.95, 38409100,
1, 5, 2010, 30.85, 31.10, 30.64, 30.96, 49749600,
1, 6, 2010, 30.88, 31.08, 30.52, 30.77, 58182400,
1, 7, 2010, 30.63, 30.70, 30.19, 30.45, 50559700,
1, 8, 2010, 30.28, 30.88, 30.24, 30.66, 51197400,
1, 11, 2010, 30.71, 30.76, 30.12, 30.27, 68754700,
1, 12, 2010, 30.15, 30.40, 29.91, 30.07, 65912100,
1, 13, 2010, 30.26, 30.52, 30.01, 30.35, 51863500,
1, 14, 2010, 30.31, 31.10, 30.26, 30.96, 63228100,
1, 15, 2010, 31.08, 31.24, 30.71, 30.86, 79913200,
1, 19, 2010, 30.75, 31.24, 30.68, 31.10, 46575700,
1, 20, 2010, 30.81, 30.94, 30.31, 30.59, 54849500,
1, 21, 2010, 30.61, 30.72, 30.00, 30.01, 73086700,
1, 22, 2010, 30.00, 30.20, 28.84, 28.96, 102004600,
1, 25, 2010, 29.24, 29.66, 29.10, 29.32, 63373000,
1, 26, 2010, 29.20, 29.85, 29.09, 29.50, 66639900,
1, 27, 2010, 29.35, 29.82, 29.02, 29.67, 63949500,
1, 28, 2010, 29.84, 29.87, 28.89, 29.16, 117513700,
1, 29, 2010, 29.90, 29.92, 27.66, 28.18, 193888500,
2, 1, 2010, 28.39, 28.48, 27.92, 28.41, 85931100,
2, 2, 2010, 28.37, 28.50, 28.14, 28.46, 54413700,
2, 3, 2010, 28.26, 28.79, 28.12, 28.63, 61397900,
2, 4, 2010, 28.38, 28.50, 27.81, 27.84, 77850000,
2, 5, 2010, 28.00, 28.28, 27.57, 28.02, 80960100,
2, 8, 2010, 28.01, 28.08, 27.57, 27.72, 52820600,
2, 9, 2010, 27.97, 28.34, 27.75, 28.01, 59195800,
2, 10, 2010, 28.03, 28.24, 27.84, 27.99, 48591300,
2, 11, 2010, 27.93, 28.40, 27.70, 28.12, 65993700,
2, 12, 2010, 27.81, 28.06, 27.58, 27.93, 81117200,
2, 16, 2010, 28.13, 28.37, 28.02, 28.35, 51935600,
2, 17, 2010, 28.53, 28.65, 28.36, 28.59, 45882900,
2, 18, 2010, 28.59, 29.03, 28.51, 28.97, 42856500,
2, 19, 2010, 28.79, 28.92, 28.69, 28.77, 44451800,
2, 22, 2010, 28.84, 28.94, 28.65, 28.73, 36707100,
2, 23, 2010, 28.68, 28.83, 28.09, 28.33, 52266200,
2, 24, 2010, 28.52, 28.79, 28.38, 28.63, 43165900,
2, 25, 2010, 28.27, 28.65, 28.02, 28.60, 48694000,
2, 26, 2010, 28.65, 28.85, 28.51, 28.67, 40370600,
3, 1, 2010, 28.77, 29.05, 28.53, 29.02, 43773800,
3, 2, 2010, 29.08, 29.30, 28.24, 28.46, 93123900,
3, 3, 2010, 28.51, 28.61, 28.35, 28.46, 48421200,
3, 4, 2010, 28.46, 28.65, 28.27, 28.63, 42890600,
3, 5, 2010, 28.66, 28.68, 28.42, 28.59, 56001800,
3, 8, 2010, 28.52, 28.93, 28.50, 28.63, 39414500,
3, 9, 2010, 28.56, 29.11, 28.55, 28.80, 50271600,
3, 10, 2010, 28.86, 29.11, 28.80, 28.97, 44891400,
3, 11, 2010, 28.89, 29.19, 28.85, 29.18, 35349700
};
int i, n = 0;
for (i = 0; i < 47; i++)
{ if (i < nmax)
{ x[i] = incdat (v[i].id, v[i].im, v[i].iy);
yopen[i] = v[i].open;
yhigh[i] = v[i].high;
ylow[i] = v[i].low;
yclose[i] = v[i].close;
yvol[i] = v[i].volume/ 10000.f;
n++;
}
}
return n;
}