HTMLcopy
1
<div id="container"></div>
CSScopy
6
1
html, body, #container {
2
width: 100%;
3
height: 100%;
4
margin: 0;
5
padding: 0;
6
}
JavaScriptcopy
x
1
anychart.onDocumentReady(function () {
2
// create data table, load and map the data
3
var dataTable = anychart.data.table();
4
dataTable.addData(get_dji_daily_short_data());
5
var mapping = dataTable.mapAs({'open': 1, 'high': 2, 'low':3, 'close':4});
6
7
// create stock chart
8
var chart = anychart.stock();
9
10
// create a plot
11
var plot = chart.plot();
12
13
// create an OHLC series
14
plot.ohlc(mapping).name("Price");
15
16
// get the marker value
17
var markerValue = getMarkerValue();
18
19
// create a line marker
20
var linemarker = plot.lineMarker();
21
linemarker
22
.value(markerValue)
23
.stroke('black', 1)
24
.zIndex(100)
25
.scaleRangeMode('consider');
26
27
// create a text marker
28
var textMarker = plot.textMarker();
29
textMarker
30
.text(markerValue||'')
31
.value(markerValue)
32
.align('left')
33
.anchor('left-bottom')
34
.padding(3)
35
.fontColor('black')
36
.zIndex(100);
37
38
// display chart
39
chart.container("container").draw();
40
41
// recalculate axis marker value when scrolling
42
chart.scroller().listen("scrollerchange", function (markerValue) {
43
// get new marker value
44
markerValue = getMarkerValue();
45
46
// create line marker
47
linemarker.value(markerValue);
48
49
// set text marker value and text
50
textMarker.text(markerValue||'').value(markerValue);
51
});
52
53
// get the value for an axis marker
54
function getMarkerValue() {
55
var xScale = chart.xScale();
56
// get start date and end date
57
var max = xScale.getMaximum();
58
var min = xScale.getFullMinimum();
59
60
var selectable = mapping.createSelectable();
61
// select a date range
62
selectable.select(min, max);
63
64
var queue = [];
65
var value = null;
66
67
// get iterator
68
var iterator = selectable.getIterator();
69
// advance iterator to the next position
70
while (iterator.advance()) {
71
queue.push(iterator.get("close"));
72
// delete all values except the last 10
73
if (queue.length >10) {
74
queue.shift();
75
}
76
var sum=0;
77
// not enough data - don't draw axis marker
78
if (queue.length < 10) {
79
value = null;
80
}
81
else {
82
// calculate marker value
83
for(var i=0;i<queue.length;i++){
84
sum = sum + queue[i];
85
}
86
value = (sum/10).toFixed(2);
87
}
88
}
89
return value;
90
}
91
});