SOURCE

console 命令行工具 X clear

                    
>
console
$('#replayBtn').click(function(){
  begin = new Date($('#beginInput').val())
  showChart($('#conInput').val(), begin.toJSON());
})
  
function prev(){
    end = new Date(end.valueOf() - 300 * 1000)
    $('#endInput').val(end.toJSON())
    showChart($('#conInput').val(), begin.toJSON(), end.toJSON());
}
function next(){
    end = new Date(end.valueOf() + 300 * 1000)
    $('#endInput').val(end.toJSON())
    showChart($('#conInput').val(), begin.toJSON(), end.toJSON());
}
  $("#prevButton").click(prev)
  $("#nextButton").click(next)

function prevDay(){
    begin = new Date(begin.valueOf() - 24*3600*1000)
    $('#beginInput').val(begin.toJSON())
    showChart($('#conInput').val(), begin.toJSON());
}
function nextDay(){
    begin = new Date(begin.valueOf() + 24*3600*1000)
    $('#beginInput').val(begin.toJSON())
    showChart($('#conInput').val(), begin.toJSON());
}
  $("#prevDayButton").click(prevDay)
  $("#nextDayButton").click(nextDay)
rev = false
$("#revCheck").change(function(){
  rev = !rev;
})
Highcharts.setOptions({
global: {
   timezoneOffset: -8*60,
  usdUtc: false
}});
function showChart(con, begin){
$.when(
  $.get("http://alihk10.qbtrade.org/api/tick/MinuteTicks?contract=" + con + "&date=" + begin + "&rev=" + rev), 
  $.get("http://alihk10.qbtrade.org/api/tick/LimitBreakDecisions?contract=" + con + "&date=" + begin + "&rev=" + rev)
).done(function (data, decisions) {
  data = data[0]
  decisions = decisions[0]
  var colors = ['red', 'orange', 'green', 'blue', 'purple']
  var chartData = data.map(function(p){
    return {
      x: p.timestamp*1000, 
      y: p.close
    }})
  var volData = data.map(function(p){
    return {
      x: p.timestamp*1000, 
      y: p.volume,
    }})
  var avgData = data.map(function(p){
    return {
      x: p.timestamp*1000, 
      y: p.weightedAvg,
    }})
  var labels = data.filter(function(x){return x.labels.length}).map(function(x) {return x.labels})
  var des = decisions.map(function(x){return {
    x: x.tick.timestamp*1000, 
    y: x.tick.last,
    tooltip: {formatter: function(){return x.comment}},
    dataLabels: {
                enabled: true,
                align: 'right',
                x: -3,
      crop: false, overflow:'none',
      y: -10,
                verticalAlign: 'middle',
      format: x.comment
            }
  }})
  var ss = [
    {data: chartData, zIndex: 1, name: 'close', dataGrouping:{enabled: false}},
    {data: volData, type:'column', yAxis: 1,color: 'rgba(225,225,225,0.7)', zIndex: 0},
    {data: avgData, name: 'avg',color: 'rgba(220,200,0,1)',lineWidth: 1}, 
    {data: des, type:'scatter', zIndex: 3,}]
  var used = []
  labels.forEach(function(ls, i){
      var l = ls[ls.length - 1]
      if (l.ticks.length)
      	ss.push({
          animation: false,
          color: colors[l.level - 1],
          marker: {enabled: true, radius: 1.5*l.level, symbol: 'circle'},
          type: l.ticks.length >= (l.level == 1 ? 3 : 1) ? 'line' : 'scatter',
          zIndex: 2,
          data:
          l.ticks.map(function(t){
            return [t.timestamp*1000, t.last]
          })})
  })
  return Highcharts.stockChart('container', {
		chart:{animation:false},
    rangeSelector: {
        selected: 1
    },
    yAxis: [{}, {}],
		plotOptions:{line: {
        animation: false
    },scatter:{animation: false}},
    series: ss
	});
}); 
}
<div id="container" style="height: 600px; min-width: 310px"></div>
<input id="conInput" value="ic1610:cffex" />
<input id="beginInput" value="2016-09-12" />
<button id="replayBtn">show</button>
<button id="prevDayButton">prev day</button>
<button id="nextDayButton">nxt day</button>
rev: <input type="checkbox" id="revCheck" />

本项目引用的自定义外部资源