【精选】PHP将股票日K线数据转换为半年K线数据
将股票日K转换为半年K数据,可以用每年的7-1日作为分割点,分为上半年和下半年,开盘价应为分组开始的第一条数据的开盘价,收盘价应为分组数据的最后一条收盘价,最高和最低则为分组中的最高最低,成交量是累加的,如此计算,这里给出php的转换函数:
// 将日K线数据转换为半年K线数据
function convertToHalfYearKLine($data)
{
$daily_k_data = $data;
usort($daily_k_data, function($a, $b) {
return strtotime($a['date']) - strtotime($b['date']);
});
$k_line_data = array();
$last_group_end_date = '';
foreach ($daily_k_data as $key => $daily_data) {
// 如果是第一个日期,则直接添加到一个新的分组里面
if ($key == 0) {
$k_line_data[] = array($daily_data);
$last_group_end_date = $daily_data['date'];
continue;
}
//获取当前日期的所在年份的上半年还是下半年
$cur_time = date('md',strtotime($daily_data['date']))<701?date('Y',strtotime($daily_data['date'])).'13':date('Y',strtotime($daily_data['date'])).'14';
//获取上个日期的所在年份的上半年还是下半年
$last_time = date('md',strtotime($last_group_end_date))<701?date('Y',strtotime($last_group_end_date)).'13':date('Y',strtotime($last_group_end_date)).'14';
// echo $cur_time.' '.$last_time;
// 如果当前日期与上一个分组结束日期不是一个半年,则将当前日期的K线数据添加到一个新的分组里面
print_r($k_line_data);
}