opt-pos-chart-stacked-tmpl.html 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <html>
  2. <head>
  3. <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
  4. <script type="text/javascript" src="https://www.google.com/jsapi"></script>
  5. <script type="text/javascript">
  6. google.load("visualization", "1.1", {packages:["corechart", 'table','gauge']});
  7. // google.load('visualization', '1', {'packages':['table']});
  8. // google.load("visualization", "1.1", {packages:["corechart"]});
  9. google.setOnLoadCallback(drawChart);
  10. function drawChart() {
  11. var data = google.visualization.arrayToDataTable([
  12. ['strike', 'Near-P', 'Near-C', 'Far-P', 'Far-C'],
  13. {{{dataPCpos}}}
  14. ]);
  15. var dataTbl = google.visualization.arrayToDataTable([
  16. {{{dataTablePos}}}
  17. ]);
  18. var options = {
  19. title: 'PUT:CALL Ratio [{{{PRvsCR}}}}] for the month of {{{option_months}}}',
  20. width: 900,
  21. legend:{ position: 'top', maxLines: 2},
  22. bar:{groupWidth: '20%'},
  23. chartArea:{left:40,top:50,width:"80%",height:"70%"},
  24. isStacked: true,
  25. series:{
  26. 0: {color:'#0066ff'},
  27. 1: {color:'#e60000'},
  28. 2: {color:'#80b3ff'},
  29. 3: {color:'#ff8080'},
  30. },
  31. };
  32. var chart = new google.visualization.ColumnChart(document.getElementById('barchart_material'));
  33. chart.draw(data, options);
  34. // chart table display implied volatilities in a nicely formatted table
  35. var chartTbl = new google.visualization.Table(document.getElementById('chartTbl_div'));
  36. //var portTbl = new google.visualization.Table(document.getElementById('portTblDiv'));
  37. var formatter = new google.visualization.NumberFormat({pattern:'0.00'});
  38. for (var i = 2; i < 9; i++)
  39. formatter.format(dataTbl, i);
  40. var options2 = {
  41. displayAnnotations: true,
  42. showRowNumber: true, width: '100%', height: '100%', allowHtml: true,
  43. };
  44. chartTbl.draw(dataTbl, options2);
  45. $('input[id="b_reload"]').click();
  46. ////////////////////////////////////////////////////////////////////////////////
  47. // guage functions
  48. var dataG = google.visualization.arrayToDataTable([
  49. ['Label', 'Value'],
  50. ['Delta', 0],
  51. ['Delta-C', 0],
  52. ['Delta-P', 0]
  53. ]);
  54. var optionsG = {
  55. width: 400, height: 120,
  56. redFrom: -50, redTo: -25,
  57. yellowFrom:-24, yellowTo: -15,
  58. greenFrom: -10, greenTo: 10,
  59. minorTicks: 5,
  60. min: -50, max: 50
  61. };
  62. var dataT = google.visualization.arrayToDataTable([
  63. ['Label', 'Value'],
  64. ['Theta', 0],
  65. ['Theta-C', 0],
  66. ['Theta-P', 0]
  67. ]);
  68. var optionsT = {
  69. width: 400, height: 120,
  70. redFrom: -3000, redTo: -2000,
  71. yellowFrom:-1999, yellowTo: 500,
  72. greenFrom: 5000, greenTo: 15000,
  73. minorTicks: 5,
  74. min: -3000, max: 15000
  75. };
  76. var gchart = new google.visualization.Gauge(document.getElementById('chart_div'));
  77. // refreshPortSummary();
  78. // gchart.draw(dataG, optionsG);
  79. var tchart = new google.visualization.Gauge(document.getElementById('chartTheta_div'));
  80. refreshPortSummary();
  81. function refreshPortSummary(){
  82. $.ajax({
  83. type: 'Post',
  84. url: '/ws_port_summary',
  85. success: function (data) {
  86. //alert(data);
  87. var jdata = JSON.parse(data);
  88. $('#temp').text(data);
  89. //alert(jdata.delta_all);
  90. dataG.setValue(0, 1, Math.round(jdata.delta_all*100)/100);
  91. dataG.setValue(1, 1, Math.round(jdata.delta_c*100)/100);
  92. dataG.setValue(2, 1, Math.round(jdata.delta_p*100)/100);
  93. gchart.draw(dataG, optionsG);
  94. dataT.setValue(0, 1, Math.round(jdata.theta_all));
  95. dataT.setValue(1, 1, Math.round(jdata.theta_c));
  96. dataT.setValue(2, 1, Math.round(jdata.theta_p));
  97. tchart.draw(dataT, optionsT);
  98. $('#pt_status').text("Unreal P/L: " + Math.round(jdata.unreal_pl*100)/100 + " Cal Status: " + jdata.status);
  99. }
  100. });
  101. };
  102. setInterval(function() {
  103. refreshPortSummary();
  104. }, 9500);
  105. } // end drawChart
  106. //})
  107. // });
  108. </script>
  109. </head>
  110. <body>
  111. <div id='pt_status'></div>
  112. <div id="chart_div" style="width: 400px; height: 120px;"></div>
  113. <div id="chartTheta_div" style="width: 400px; height: 120px;"></div>
  114. <div id="barchart_material" style="width: 900px; height: 500px;"></div>
  115. <div id='chartTbl_div' style='width: 900px; height: 500px;'></div>
  116. <div id="portTbl">
  117. <input type="button" id="b_reload" value="Reload" />
  118. </div>
  119. <div id='portTblDiv' style='width: 900px; height: 500px;'></div>
  120. <div id='temp'></div>
  121. </body>
  122. </html>