117 lines
5.3 KiB
PHP
117 lines
5.3 KiB
PHP
<?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']:'';
|
|
$title="股价VS PE/PB/PS 趋势:".$ts_name.'('.$_REQUEST['ts_code'].')';
|
|
include_once "html/head.php";
|
|
?>
|
|
<script src="js/renderCharts.js"></script>
|
|
<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')" checked> PB 市净率
|
|
<input type='checkbox' id='cb_ps' onclick="hideSwitch(this.id,'ps')" checked> PS 市销率
|
|
<input type='checkbox' id='cb_ttmv' onclick="hideSwitch(this.id,'total_mv')" checked> 总市值
|
|
|
|
</div> </form>
|
|
<div > </div>
|
|
|
|
<!-- 图表容器 -->
|
|
<div id="pe_ttm" style="width: 1000px; height:400px; margin: 0 auto 20px;"></div>
|
|
<div id="pb" style="width: 1000px; height:400px; margin: 0 auto 20px;"></div>
|
|
<div id="ps" style="width: 1000px; height:400px; margin: 0 auto 20px;"></div>
|
|
<div id="total_mv" style="width: 1000px; height:400px; margin: 0 auto 20px;"></div>
|
|
|
|
|
|
<script>
|
|
let t_start = $('#t_start').val();
|
|
let t_end = $('#t_end').val();
|
|
let ts_code = $("#ts_code").val();
|
|
|
|
url = "https://api.doorcome.cn/api/stockparam/?tscode="+ts_code;
|
|
url += "&start_date="+t_start+"&end_date="+t_end;
|
|
url2 = "https://api.doorcome.cn/api/stockinfo/?tscode="+ts_code;
|
|
Promise.all([
|
|
fetch(url),
|
|
fetch(url2)
|
|
])
|
|
.then(responses => Promise.all(responses.map(r => r.json())))
|
|
//.then(httpresponse => httpresponse.json())
|
|
//.then(parsedData => {
|
|
.then(([parsedData,stockInfo]) => {
|
|
// 图表配置:pe_ttm
|
|
let codeName = stockInfo[0].name;
|
|
var params = {};
|
|
params.chartid='pe_ttm';
|
|
params.legend = [codeName,'pe_ttm'];
|
|
params.text = params.legend[0]+' V.S '+params.legend[1];
|
|
params.data1 = pickData(parsedData, 'trade_date', 'close');
|
|
params.data2 = pickData(parsedData, 'trade_date', 'pe_ttm')
|
|
dataCal = calculateStats(params.data2);
|
|
params.sub_text = "TTM PE Max:"+dataCal['max'];
|
|
params.sub_text += ", Min:"+dataCal['min'];
|
|
params.sub_text += ", Average:"+dataCal['avg'];
|
|
params.sub_text += ", Recent:"+dataCal['last'];
|
|
doubleLineChart(params);
|
|
// 图表配置:pb
|
|
params = {};
|
|
params.chartid='pb';
|
|
params.legend = [codeName,'市净率'];
|
|
params.text = params.legend[0]+' V.S '+params.legend[1];
|
|
params.data1 = pickData(parsedData, 'trade_date', 'close');
|
|
params.data2 = pickData(parsedData, 'trade_date', 'pb')
|
|
dataCal = calculateStats(params.data2);
|
|
params.sub_text = "PB Max:"+dataCal['max'];
|
|
params.sub_text += ", Min:"+dataCal['min'];
|
|
params.sub_text += ", Average:"+dataCal['avg'];
|
|
params.sub_text += ", Recent:"+dataCal['last'];
|
|
doubleLineChart(params);
|
|
|
|
// 图表配置:ps
|
|
params = {};
|
|
params.chartid='ps';
|
|
params.legend = [codeName,'市销率'];
|
|
params.text = params.legend[0]+' V.S '+params.legend[1];
|
|
params.data1 = pickData(parsedData, 'trade_date', 'close');
|
|
params.data2 = pickData(parsedData, 'trade_date', 'ps')
|
|
dataCal = calculateStats(params.data2);
|
|
params.sub_text = "PS Max:"+dataCal['max'];
|
|
params.sub_text += ", Min:"+dataCal['min'];
|
|
params.sub_text += ", Average:"+dataCal['avg'];
|
|
params.sub_text += ", Recent:"+dataCal['last'];
|
|
doubleLineChart(params);
|
|
|
|
// 图表配置:total_mv
|
|
params = {};
|
|
params.chartid='total_mv';
|
|
params.legend = [codeName,'总市值-亿'];
|
|
params.text = params.legend[0]+' V.S '+params.legend[1];
|
|
params.data1 = pickData(parsedData, 'trade_date', 'close');
|
|
params.data2 = pickData(parsedData, 'trade_date', 'total_mv')
|
|
params.data2 = params.data2.map(item => {
|
|
return {
|
|
value: [
|
|
item.value[0],
|
|
parseFloat((parseFloat(item.value[1]) / 10000).toFixed(2))
|
|
]
|
|
};
|
|
});
|
|
dataCal = calculateStats(params.data2);
|
|
params.sub_text = "总市值 Max:"+dataCal['max'];
|
|
params.sub_text += ", Min:"+dataCal['min'];
|
|
params.sub_text += ", Average:"+dataCal['avg'];
|
|
params.sub_text += ", Recent:"+dataCal['last'];
|
|
doubleLineChart(params);
|
|
})
|
|
.catch(error => console.error('数据加载失败:', error));
|
|
|
|
</script>
|
|
|
|
</div>
|
|
<?php include_once "html/footer.php"; ?>
|
|
|