更新:重构和迁移多个PHP文件到deprecated目录,删除不再使用的文件,更新pubfunc.js版本;index_trend,stock_trend 数据源以及代码重构简化
This commit is contained in:
@@ -0,0 +1,198 @@
|
||||
// 日期选择
|
||||
// By Ziyue(http://www.web-v.com/)
|
||||
var months = new Array("一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月");
|
||||
var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
|
||||
var days = new Array("日","一", "二", "三", "四", "五", "六");
|
||||
var today;
|
||||
|
||||
document.writeln("<div id='Calendar' style='position:absolute; z-index:1; visibility: hidden; filter:\"progid:DXImageTransform.Microsoft.Shadow(direction=135,color=#999999,strength=3)\"'></div>");
|
||||
|
||||
function getDays(month, year)
|
||||
{
|
||||
//下面的这段代码是判断当前是否是闰年的
|
||||
if (1 == month)
|
||||
return ((0 == year % 4) && (0 != (year % 100))) || (0 == year % 400) ? 29 : 28;
|
||||
else
|
||||
return daysInMonth[month];
|
||||
}
|
||||
|
||||
function getToday()
|
||||
{
|
||||
//得到今天的年,月,日
|
||||
this.now = new Date();
|
||||
this.year = this.now.getFullYear();
|
||||
this.month = this.now.getMonth();
|
||||
this.day = this.now.getDate();
|
||||
}
|
||||
|
||||
function getStringDay(str)
|
||||
{
|
||||
//得到输入框的年,月,日
|
||||
var str=str.split("-")
|
||||
|
||||
this.now = new Date(parseFloat(str[0]),parseFloat(str[1])-1,parseFloat(str[2]));
|
||||
this.year = this.now.getFullYear();
|
||||
this.month = this.now.getMonth();
|
||||
this.day = this.now.getDate();
|
||||
}
|
||||
|
||||
function newCalendar() {
|
||||
//var parseYear = parseInt(document.all.Year.options[document.all.Year.selectedIndex].value);
|
||||
var parseYear = parseInt(document.getElementById('Year').options[document.getElementById('Year').selectedIndex].value);
|
||||
//var newCal = new Date(parseYear, document.all.Month.selectedIndex, 1);
|
||||
var newCal = new Date(parseYear, document.getElementById('Month').selectedIndex, 1);
|
||||
var day = -1;
|
||||
var startDay = newCal.getDay();
|
||||
var daily = 0;
|
||||
|
||||
if ((today.year == newCal.getFullYear()) &&(today.month == newCal.getMonth()))
|
||||
day = today.day;
|
||||
|
||||
var tableCal = document.getElementById('calendar');
|
||||
var intDaysInMonth =getDays(newCal.getMonth(), newCal.getFullYear());
|
||||
|
||||
for (var intWeek = 1; intWeek < tableCal.rows.length;intWeek++)
|
||||
for (var intDay = 0;intDay < tableCal.rows[intWeek].cells.length;intDay++)
|
||||
{
|
||||
var cell = tableCal.rows[intWeek].cells[intDay];
|
||||
if ((intDay == startDay) && (0 == daily))
|
||||
daily = 1;
|
||||
|
||||
if(day==daily) //今天,调用今天的Class
|
||||
{
|
||||
cell.style.background='#6699CC';
|
||||
cell.style.color='#FFFFFF';
|
||||
//cell.style.fontWeight='bold';
|
||||
}
|
||||
else if(intDay==6) //周六
|
||||
cell.style.color='green';
|
||||
else if (intDay==0) //周日
|
||||
cell.style.color='red';
|
||||
|
||||
if ((daily > 0) && (daily <= intDaysInMonth))
|
||||
{
|
||||
cell.innerText = daily;
|
||||
daily++;
|
||||
}
|
||||
else
|
||||
cell.innerText = "";
|
||||
}
|
||||
}
|
||||
|
||||
function GetDate(InputBox)
|
||||
{
|
||||
var sDate;
|
||||
//这段代码处理鼠标点击的情况
|
||||
if (event.srcElement.tagName == "TD")
|
||||
if (event.srcElement.innerText != "")
|
||||
{
|
||||
sDate = document.getElementById('Year').value + "-" + document.getElementById('Month').value + "-" + event.srcElement.innerText;
|
||||
//eval("document.all."+InputBox).value=sDate;
|
||||
document.getElementById(InputBox).value=sDate;
|
||||
HiddenCalendar();
|
||||
}
|
||||
}
|
||||
|
||||
function HiddenCalendar()
|
||||
{
|
||||
//关闭选择窗口
|
||||
document.getElementById('Calendar').style.visibility='hidden';
|
||||
}
|
||||
|
||||
function ShowCalendar(InputBox)
|
||||
{
|
||||
var x,y,intLoop,intWeeks,intDays;
|
||||
var DivContent;
|
||||
var year,month,day;
|
||||
//var o=eval("document.getElementById("+InputBox+")");
|
||||
o=document.getElementById(InputBox);
|
||||
var thisyear; //真正的今年年份
|
||||
|
||||
thisyear=new getToday();
|
||||
thisyear=thisyear.year;
|
||||
|
||||
today = o.value;
|
||||
if(isDate(today))
|
||||
today = new getStringDay(today);
|
||||
else
|
||||
today = new getToday();
|
||||
|
||||
//显示的位置
|
||||
x=o.offsetLeft;
|
||||
y=o.offsetTop;
|
||||
while(o=o.offsetParent)
|
||||
{
|
||||
x+=o.offsetLeft;
|
||||
y+=o.offsetTop;
|
||||
}
|
||||
//document.all.Calendar.style.left=x+2;
|
||||
//document.all.Calendar.style.top=y+20;
|
||||
//document.all.Calendar.style.visibility="visible";
|
||||
document.getElementById('Calendar').style.left=x+2;
|
||||
document.getElementById('Calendar').style.top=y+20;
|
||||
document.getElementById('Calendar').style.visibility="visible";
|
||||
|
||||
//下面开始输出日历表格(border-color:#9DBAF7)
|
||||
DivContent="<table border='0' cellspacing='0' style='border:1px solid #0066FF; background-color:#EDF2FC'>";
|
||||
DivContent+="<tr>";
|
||||
DivContent+="<td style='border-bottom:1px solid #0066FF; background-color:#C7D8FA'>";
|
||||
|
||||
//年
|
||||
DivContent+="<select name='Year' id='Year' onChange='newCalendar()' style='font-family:Verdana; font-size:12px'>";
|
||||
for (intLoop = thisyear - 10; intLoop < (thisyear + 3); intLoop++)
|
||||
DivContent+="<option value= " + intLoop + " " + (today.year == intLoop ? "Selected" : "") + ">" + intLoop + "</option>";
|
||||
DivContent+="</select>";
|
||||
|
||||
//月
|
||||
DivContent+="<select name='Month' id='Month' onChange='newCalendar()' style='font-family:Verdana; font-size:12px'>";
|
||||
for (intLoop = 0; intLoop < months.length; intLoop++)
|
||||
DivContent+="<option value= " + (intLoop + 1) + " " + (today.month == intLoop ? "Selected" : "") + ">" + months[intLoop] + "</option>";
|
||||
DivContent+="</select>";
|
||||
|
||||
DivContent+="</td>";
|
||||
|
||||
DivContent+="<td style='border-bottom:1px solid #0066FF; background-color:#C7D8FA; font-weight:bold; font-family:Wingdings 2,Wingdings,Webdings; font-size:16px; padding-top:2px; color:#4477FF; cursor:hand' align='center' title='关闭' onClick='javascript:HiddenCalendar()'>S</td>";
|
||||
DivContent+="</tr>";
|
||||
|
||||
DivContent+="<tr><td align='center' colspan='2'>";
|
||||
DivContent+="<table id='calendar' border='0' width='100%'>";
|
||||
|
||||
//星期
|
||||
DivContent+="<tr>";
|
||||
for (intLoop = 0; intLoop < days.length; intLoop++)
|
||||
DivContent+="<td align='center' style='font-size:12px'>" + days[intLoop] + "</td>";
|
||||
DivContent+="</tr>";
|
||||
|
||||
//天
|
||||
for (intWeeks = 0; intWeeks < 6; intWeeks++)
|
||||
{
|
||||
DivContent+="<tr>";
|
||||
for (intDays = 0; intDays < days.length; intDays++)
|
||||
DivContent+="<td onClick='GetDate(\"" + InputBox + "\")' style='cursor:hand; border-right:1px solid #BBBBBB; border-bottom:1px solid #BBBBBB; color:#215DC6; font-family:Verdana; font-size:12px' align='center'></td>";
|
||||
DivContent+="</tr>";
|
||||
}
|
||||
DivContent+="</table></td></tr></table>";
|
||||
|
||||
//document.all.Calendar.innerHTML=DivContent;
|
||||
document.getElementById('Calendar').innerHTML=DivContent;
|
||||
newCalendar();
|
||||
}
|
||||
|
||||
function isDate(dateStr)
|
||||
{
|
||||
var datePat = /^(\d{4})(\-)(\d{1,2})(\-)(\d{1,2})$/;
|
||||
var matchArray = dateStr.match(datePat);
|
||||
if (matchArray == null) return false;
|
||||
var month = matchArray[3];
|
||||
var day = matchArray[5];
|
||||
var year = matchArray[1];
|
||||
if (month < 1 || month > 12) return false;
|
||||
if (day < 1 || day > 31) return false;
|
||||
if ((month==4 || month==6 || month==9 || month==11) && day==31) return false;
|
||||
if (month == 2)
|
||||
{
|
||||
var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
|
||||
if (day > 29 || (day==29 && !isleap)) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -0,0 +1,124 @@
|
||||
<?php
|
||||
include_once "inc/getBasic.inc.php";
|
||||
include_once "inc/getData.inc.php";
|
||||
include_once "html/headChart.php"; //required after $ts_code and $ts_name,maybe doesn't matter
|
||||
$ts_code=$_REQUEST['code'];
|
||||
#echo $ts_code;
|
||||
$item=$_REQUEST['item'];
|
||||
$day_st=($_REQUEST['s']=='')?'20120101':$_REQUEST['s'];
|
||||
$day_end=($_REQUEST['e']=='')?date('Ymd'):$_REQUEST['e'];
|
||||
if($item == 'total_mv' or $item=='circ_mv') $unit='-万亿';
|
||||
else $unit = ''; # Without a unit on PE
|
||||
#var_dump($lx);
|
||||
$data=getIndexData(codetocode($ts_code),$day_st,$day_end);
|
||||
$data2 = getBasicExtData($ts_code,$item,$day_st,$day_end);
|
||||
#var_dump($data2);
|
||||
$ts_name = codeToName($ts_code);
|
||||
if($item=='total_mv_all') $item_name = '总市值';
|
||||
elseif($item=='circ_mv_all') $item_name = '流通市值';
|
||||
else $item_name=$item;
|
||||
$legend=array($ts_name,'深证成指',$item_name);
|
||||
#$value=json_encode($data['data']);
|
||||
$subtext_ext = "Max: ".$data2['data_max'];
|
||||
$subtext_ext .= ", Min: ".$data2['data_min'];
|
||||
$subtext_ext .= ", Average: ".$data2['data_avg'];
|
||||
$subtext_ext .= ", Recent: ".$data2['data_last'];
|
||||
$unit='-万亿';
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom,'dark');
|
||||
var app = {};
|
||||
option = null;
|
||||
legend = <?php echo json_encode($legend);?>;
|
||||
unit ='<?php echo $unit; ?>';
|
||||
var subtxt = '<?php echo $subtext_ext; ?>';
|
||||
option = {
|
||||
title: {
|
||||
text: legend[0]+' V.S '+legend[2],
|
||||
subtext: subtxt,
|
||||
textAlign:'center',
|
||||
left:'50%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:legend,
|
||||
right:'20'
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
//type: 'category',
|
||||
type: 'time',
|
||||
boundaryGap: false
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:legend[0], //图列
|
||||
show:true
|
||||
},
|
||||
{
|
||||
type:'value',
|
||||
name:legend[2]+unit, //图例
|
||||
//scale:true,
|
||||
boundaryGap:false,
|
||||
show:true,
|
||||
splitLine:{
|
||||
show:false, //Y2 坐标刻度横线
|
||||
},
|
||||
}
|
||||
],
|
||||
dataZoom: [{
|
||||
type: 'inside', //or slider
|
||||
start: 0,
|
||||
end: 100
|
||||
}, {
|
||||
start: 0,
|
||||
end: 100,
|
||||
handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
|
||||
handleSize: '80%',
|
||||
handleStyle: {
|
||||
color: '#fff',
|
||||
shadowBlur: 3,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.6)',
|
||||
shadowOffsetX: 2,
|
||||
shadowOffsetY: 2
|
||||
}
|
||||
}],
|
||||
series: [
|
||||
{
|
||||
name:legend[0],
|
||||
type:'line',
|
||||
yAxisIndex:0,
|
||||
symbol:'none',
|
||||
data:<?php echo json_encode($data['data']); ?>
|
||||
},
|
||||
{
|
||||
name:legend[2],
|
||||
type:'line',
|
||||
yAxisIndex:1,
|
||||
symbol:'none', //数据圆点
|
||||
smooth:false,
|
||||
data:<?php echo json_encode($data2['data']); ?>
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
/*
|
||||
* @Author: Yangshuimiao
|
||||
* @Date: 2023-06-25 12:26:16
|
||||
* @LastEditTime: 2025-02-13 17:04:36
|
||||
* @FilePath: \chartFore.php
|
||||
* @Description:
|
||||
* Copyright 2025 Yangshuimiao, All Rights Reserved.
|
||||
*/
|
||||
#查询个股价格对应PE_TTM, PB, PS的长期趋势数据
|
||||
include_once "inc/getBasic.inc.php" ;
|
||||
include_once "inc/getData.inc.php";
|
||||
include_once "html/headChart.php"; //required after $ts_code and $ts_name,maybe doesn't matter
|
||||
$ts_code=ts_code_conv($_REQUEST['ts_code']);
|
||||
$day_st=($_REQUEST['s']=='')?'20120101':$_REQUEST['s'];
|
||||
$day_end=($_REQUEST['e']=='')?date('Ymd'):$_REQUEST['e'];
|
||||
$item = ($_REQUEST['item']=='')?'pe_ttm':$_REQUEST['item'];
|
||||
$unit = ''; # Without a unit on PE
|
||||
$data = getStockHist($ts_code,$day_st,$day_end);
|
||||
#$data = getIndexHistoryDataByTS($ts_code, $day_st, $day_end);
|
||||
$data2 = getBasicData($ts_code,$day_st,$day_end,$item);
|
||||
#$data2 = getStockHistoryDataByTS($ts_code, $day_st, $day_end, $item);
|
||||
|
||||
//print_r($data2);
|
||||
//print_r($data);
|
||||
$subtext_ext = "Max: ".$data2['data_max'];
|
||||
$subtext_ext .= ", Min: ".$data2['data_min'];
|
||||
$subtext_ext .= ", Average: ".$data2['data_avg'];
|
||||
$subtext_ext .= ", Recent: ".$data2['data_last'];
|
||||
$ts_name = tscodeToName($ts_code);
|
||||
$legend=array('不复权股价','深证成指',strtoupper($item));
|
||||
#$value=json_encode($data['data']);
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
var data1 = <?php echo json_encode($data['data']); ?>;
|
||||
var data2 =<?php echo json_encode($data2['data']); ?>;
|
||||
var legend = <?php echo json_encode($legend);?>;
|
||||
var unit ='<?php echo $unit; ?>';
|
||||
var headtxt = '<?php echo $ts_name.'('.$ts_code.')'; ?>';
|
||||
var subtxt = '<?php echo $subtext_ext; ?>';
|
||||
</script>
|
||||
<script type="text/javascript" src="js/chartFore.js?ver=3.14"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,119 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
</head>
|
||||
<?php
|
||||
ini_set('error_reporting', E_ALL);
|
||||
|
||||
$mysqli = new mysqli('localhost','root','nancysimon','myquant');
|
||||
|
||||
$ts_code = '000001.SH';
|
||||
$day_st = '20190101';
|
||||
$day_end = '20190701';
|
||||
$where = " and trade_date>'".$day_st."'";
|
||||
if($day_end) $where .= " and trade_date <'".$day_end."'";
|
||||
$date_range = "and trade_date";
|
||||
$sql= <<<EOF
|
||||
select trade_date, close from index_hist_pro where ts_code = '$ts_code' $where order by trade_date asc
|
||||
EOF;
|
||||
#echo $sql;
|
||||
$result = $mysqli->query($sql);
|
||||
|
||||
$tDate=array('交易日');
|
||||
$idx=array('上证指数');
|
||||
|
||||
if($result && $result->num_rows>0) {
|
||||
#$data = $result->fetch_all();
|
||||
while($row=$result->fetch_assoc()){
|
||||
array_push($tDate,$row['trade_date']);
|
||||
array_push($idx,$row['close']);
|
||||
}
|
||||
}
|
||||
#Free result and close connection.
|
||||
$result->free();
|
||||
$mysqli->close();
|
||||
?>
|
||||
<body style="height: 100%; margin: 0">
|
||||
<!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
|
||||
<div id="container" style="height: 400px;width: 600px"></div>
|
||||
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/echarts.min.js"></script>
|
||||
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts-gl/echarts-gl.min.js"></script>
|
||||
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts-stat/ecStat.min.js"></script>
|
||||
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/extension/dataTool.min.js"></script>
|
||||
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/simplex.js"></script>
|
||||
<script type="text/javascript">
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom);
|
||||
var app = {};
|
||||
option = null;
|
||||
option = {
|
||||
title: {
|
||||
text: '折线图堆叠'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:['邮件营销','联盟广告','视频广告','直接访问','搜索引擎']
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: ['周一','周二','周三','周四','周五','周六','周日']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name:'邮件营销',
|
||||
type:'line',
|
||||
stack: '总量',
|
||||
data:[120, 132, 101, 134, 90, 230, 210]
|
||||
},
|
||||
{
|
||||
name:'联盟广告',
|
||||
type:'line',
|
||||
stack: '总量',
|
||||
data:[220, 182, 191, 234, 290, 330, 310]
|
||||
},
|
||||
{
|
||||
name:'视频广告',
|
||||
type:'line',
|
||||
stack: '总量',
|
||||
data:[150, 232, 201, 154, 190, 330, 410]
|
||||
},
|
||||
{
|
||||
name:'直接访问',
|
||||
type:'line',
|
||||
stack: '总量',
|
||||
data:[320, 332, 301, 334, 390, 330, 320]
|
||||
},
|
||||
{
|
||||
name:'搜索引擎',
|
||||
type:'line',
|
||||
stack: '总量',
|
||||
data:[820, 932, 901, 934, 1290, 1330, 1320]
|
||||
}
|
||||
]
|
||||
};
|
||||
;
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE html>
|
||||
<html style="height: 100%">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<?php
|
||||
ini_set('error_reporting', E_ALL);
|
||||
include_once "inc/getData.inc.php";
|
||||
$day_st='20180101';
|
||||
$day_end=date('Ymd');
|
||||
$data=getIndexData('000001.SH',$day_st,$day_end);
|
||||
$data1=getIndexData('399001.SZ',$day_st,$day_end);
|
||||
$legend=array('上证综指','深证成指');
|
||||
?>
|
||||
<body style="height: 100%; margin: 0">
|
||||
<div id="container" style="height: 400px;width: 1000px"></div>
|
||||
<script type="text/javascript" src="../js/echarts.min.js"></script>
|
||||
<script type="text/javascript" src="../js/echarts-gl.min.js"></script>
|
||||
<script type="text/javascript" src="../js/ecStat.min.js"></script>
|
||||
<script type="text/javascript" src="../js/dataTool.min.js"></script>
|
||||
<script type="text/javascript" src="../js/simplex.js"></script>
|
||||
<script type="text/javascript" src="../js/grey.js"></script>
|
||||
<script type="text/javascript">
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom,'grey');
|
||||
var app = {};
|
||||
option = null;
|
||||
legend = <?php echo json_encode($legend);?>;
|
||||
option = {
|
||||
title: {
|
||||
text: '历史数据折线图',
|
||||
subtext:"双轴显示",
|
||||
textAlign:'center',
|
||||
left:'50%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:legend,
|
||||
right:'20'
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
//type: 'time',
|
||||
boundaryGap: false,
|
||||
data: <?php echo json_encode($data['tDate']); ?>
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:legend[0], //图列
|
||||
show:true
|
||||
},
|
||||
{
|
||||
type:'value',
|
||||
name:legend[1], //图例
|
||||
//scale:true, //true 不强制包含0刻度
|
||||
boundaryGap:false,
|
||||
show:true
|
||||
}],
|
||||
series: [
|
||||
{
|
||||
name:legend[0],
|
||||
type:'line',
|
||||
yAxisIndex:0,
|
||||
data:<?php echo json_encode($data['idx']); ?>
|
||||
},
|
||||
{
|
||||
name:legend[1],
|
||||
type:'line',
|
||||
yAxisIndex:1,
|
||||
data:<?php echo json_encode($data1['idx']); ?>
|
||||
}
|
||||
]
|
||||
};
|
||||
;
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by Simon
|
||||
* For stock index compare and draw in echart
|
||||
* Date: 2019/5/26
|
||||
*
|
||||
**/
|
||||
#set dispay_errors to adjust when coding
|
||||
ini_set('display_errors',1);
|
||||
?>
|
||||
<form name ="myform" id="myform" method="post">
|
||||
|
||||
<input type="hidden" name="x" id= "x" value='<?php //echo json_encode=($l_x)?>' />
|
||||
</form>
|
||||
<script src='../lib/echarts.min.js'></script>
|
||||
<script src='js/itrend.basic.js'
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
ini_set("display_errors","On");
|
||||
ini_set('error_reporting', 'E_ALL & ~E_NOTICE');
|
||||
include_once("getBasic.inc.php");
|
||||
$link = mysqli_connect('localhost', 'root', 'nancysimon', 'myquant');
|
||||
|
||||
if (!$link) {
|
||||
die('Connect Error (' . mysqli_connect_errno() . ') '
|
||||
. mysqli_connect_error());
|
||||
}
|
||||
|
||||
echo 'Success... ' . mysqli_get_host_info($link) . "\n";
|
||||
|
||||
mysqli_close($link);
|
||||
log_pv();
|
||||
?>
|
||||
@@ -0,0 +1,107 @@
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">股票代码:</label>
|
||||
<div class="layui-input-block" id="ccc">
|
||||
<input type="text" name="stockcode" value="{$data.stockcode}" autocomplete="off" class="layui-input" id="kw" onKeyup="getContent(this);">
|
||||
<div id="append"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">股票名称:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="stockname" value="{$data.stockname}" autocomplete="off" class="layui-input" id="codename">
|
||||
<input type="hidden" name="" value="" class="layui-input" id="hiddenname">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
$(document).keydown(function(e){
|
||||
e = e || window.event;
|
||||
var keycode = e.which ? e.which : e.keyCode;
|
||||
if(keycode == 38){
|
||||
if(jQuery.trim($("#append").html())==""){
|
||||
return;
|
||||
}
|
||||
movePrev();
|
||||
}else if(keycode == 40){
|
||||
if(jQuery.trim($("#append").html())==""){
|
||||
return;
|
||||
}
|
||||
$("#kw").blur();
|
||||
if($(".item").hasClass("addbg")){
|
||||
moveNext();
|
||||
}else{
|
||||
$(".item").removeClass('addbg').eq(0).addClass('addbg');
|
||||
}
|
||||
|
||||
}else if(keycode == 13){
|
||||
dojob();
|
||||
}
|
||||
});
|
||||
|
||||
var movePrev = function(){
|
||||
$("#kw").blur();
|
||||
var index = $(".addbg").prevAll().length;
|
||||
if(index == 0){
|
||||
$(".item").removeClass('addbg').eq($(".item").length-1).addClass('addbg');
|
||||
}else{
|
||||
$(".item").removeClass('addbg').eq(index-1).addClass('addbg');
|
||||
}
|
||||
}
|
||||
|
||||
var moveNext = function(){
|
||||
var index = $(".addbg").prevAll().length;
|
||||
if(index == $(".item").length-1){
|
||||
$(".item").removeClass('addbg').eq(0).addClass('addbg');
|
||||
}else{
|
||||
$(".item").removeClass('addbg').eq(index+1).addClass('addbg');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var dojob = function(){
|
||||
$("#kw").blur();
|
||||
var value = $(".addbg").text();
|
||||
$("#kw").val(value);
|
||||
$("#append").hide().html("");
|
||||
}
|
||||
});
|
||||
function getContent(obj){
|
||||
var kw = jQuery.trim($(obj).val());
|
||||
if(kw == ""){
|
||||
$("#append").hide().html("");
|
||||
return false;
|
||||
}
|
||||
$.ajax({
|
||||
url:"{:U('question/stock')}",
|
||||
data:{"key":kw},
|
||||
dataType:"json",
|
||||
type:"POST",
|
||||
success:function(data){
|
||||
var html = "";
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
if (data[i][0].indexOf(kw) >= 0) {
|
||||
html = html + "<div namelist="+data[i][4]+" codelist="+data[i][0]+" class='item' onmouseenter='getFocus(this)' onClick='getCon(this);'>"+data[i][0]+"--"+data[i][4]+"</div>"
|
||||
}
|
||||
}
|
||||
if(html != ""){
|
||||
$("#append").show().html(html);
|
||||
}else{
|
||||
$("#append").hide().html("");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
function getFocus(obj){
|
||||
$(".item").removeClass("addbg");
|
||||
$(obj).addClass("addbg");
|
||||
}
|
||||
function getCon(obj){
|
||||
var value = $(obj).attr('codelist')
|
||||
var name = $(obj).attr('namelist');
|
||||
console.log(name)
|
||||
$("#kw").val(value);
|
||||
$("#codename").val(name);
|
||||
$("#append").hide().html("");
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
include_once "inc/getBasic.inc.php";
|
||||
$_REQUEST['ts_code']=$_REQUEST['ts_code']?$_REQUEST['ts_code']:'000001';
|
||||
$_REQUEST['t_start']=$_REQUEST['t_start']?$_REQUEST['t_start']:'2015-01-01';
|
||||
$_REQUEST['t_end']=$_REQUEST['t_end']?$_REQUEST['t_end']:'';
|
||||
$ts_name = tscodeToName(ts_code_conv($_REQUEST['ts_code']));
|
||||
$title="股价VS PE/PB/PS 趋势:".$ts_name.'('.$_REQUEST['ts_code'].')';
|
||||
include_once "html/head.php";
|
||||
?>
|
||||
<form name="main" id="main" method="get"> <div style="width:100%;text-align:center">
|
||||
股票代码: <input type='text' name='ts_code' id='ts_code' width="30px" value='<?=$_REQUEST['ts_code']?>' >
|
||||
开始时间: <input type='date' name='t_start' id='t_start' width='30px' value='<?=$_REQUEST['t_start']?>' >
|
||||
结束时间: <input type='date' name='t_end' id='t_end' width='30px' value='<?=$_REQUEST['t_end']?>' >
|
||||
<input type='submit' value="给我查!">
|
||||
<div > </div>
|
||||
<input type='checkbox' id='cb_pe' onclick="hideSwitch(this.id,'pe_ttm')" checked> PE_TTM 市盈率
|
||||
<input type='checkbox' id='cb_pb' onclick="hideSwitch(this.id,'pb')" > PB 市净率
|
||||
<input type='checkbox' id='cb_ps' onclick="hideSwitch(this.id,'ps')" > PS 市销率
|
||||
</div> </form>
|
||||
<div > </div>
|
||||
<div style="width:100%; text-align:center" id='pe_ttm'>
|
||||
<iframe src="https://echart.doorcome.cn/chartFore.php?s=<?=$_REQUEST['t_start']?>&item=pe_ttm&ts_code=<?=$_REQUEST['ts_code']?>&e=<?=$_REQUEST['t_end']?>"
|
||||
height="400px" width="1000px"></iframe>
|
||||
</div>
|
||||
<div > </div>
|
||||
<div style="width:100%; text-align:center; display:None;" id='pb'>
|
||||
<iframe src="https://echart.doorcome.cn/chartFore.php?s=<?=$_REQUEST['t_start']?>&item=pb&ts_code=<?=$_REQUEST['ts_code']?>&e=<?=$_REQUEST['t_end']?>"
|
||||
height="400px" width="1000px"></iframe>
|
||||
</div>
|
||||
<div > </div>
|
||||
<div style="width:100%; text-align:center; display:None;" id='ps'>
|
||||
<iframe src="https://echart.doorcome.cn/chartFore.php?s=<?=$_REQUEST['t_start']?>&item=ps&ts_code=<?=$_REQUEST['ts_code']?>&e=<?=$_REQUEST['t_end']?>"
|
||||
height="400px" width="1000px"></iframe>
|
||||
</div>
|
||||
<?php include_once "html/footer.php"; ?>
|
||||
|
||||
Reference in New Issue
Block a user