Files

119 lines
3.0 KiB
PHP

<?php
function getNumberArray($start, $numbers)
{
$speed=floatval($_GET['speed']);
//echo $speed;
$up = [];
$down = [];
$now = [];
$end = $start + ($start * $speed / 24);
for ($i = 0; $i < $numbers; $i++) {
if ($i === 0) {
$now[] = $start;
} elseif ($i === $numbers - 1) {
$now[] = $end;
} else {
//$rand = rand(1, 10) * $_GET['jingdu'];
$rand = rand(1, 2) * $_GET['jingdu'];
if (get_rand([$_GET['rate2'], $_GET['rate1']]) === 1) {
$now[] = $now[$i - 1] + $rand;
} else {
$now[] = $now[$i - 1] - $rand;
}
}
}
return $now;
}
function get_rand($proArr)
{
$result = '';
//概率数组的总概率精度
$proSum = array_sum($proArr);
//概率数组循环
foreach ($proArr as $key => $proCur) {
$randNum = mt_rand(1, $proSum);
if ($randNum <= $proCur) {
$result = $key;
break;
} else {
$proSum -= $proCur;
}
}
unset ($proArr);
return $result;
}
$rand_start = $_GET['start'];
//$numbers = getNumberArray($rand_start, 60);
$numbers = getNumberArray($rand_start, 1440);
$obj = [];
$start = $rand_start;
foreach ($numbers as $number) {
// $open = count($obj) === 0 ? $start : $obj[count($obj) - 1]['close'];
// $open = sprintf("%.4f", $open);
$arr = ['open' => count($obj) === 0 ? $start : $obj[count($obj) - 1]['close']];
$arr['close'] = $number;
if (count($obj) === 0) {
// $arr['close'] = $number + ((rand(-100, 100)) * $_GET['fudu']);
$arr['close'] = $number + ((rand(-1, 1)) * $_GET['fudu']);
}
$val = max(array_values($arr));
$minVal = min(array_values($arr));
// $arr['high'] = $val + ((rand(5, 100)) * $_GET['fudu']);
// $arr['low'] = $minVal - ((rand(5, 100)) * $_GET['fudu']);
$arr['high'] = $val + ((rand(-1, 1)) * $_GET['fudu']);
$arr['low'] = $minVal - ((rand(-1, 1)) * $_GET['fudu']);
$arr['change'] = bcmul(($arr['close'] - $arr['open']) /$arr['open'],100,2);
array_walk($arr, function (&$val) {
$val = sprintf('%.6f', $val);
});
$obj[] = $arr;
}
//var_dump($obj);
$rsp = [];
$i = 0;
$timess=$_GET['times'];
if($timess<10){
$timess="0".$timess;
}
foreach ($obj as $v) {
//strtotime("{$i} minutes")
$rsp[] = [date('Y-m-d H:i:s', strtotime($_GET['dates']." ".$timess.":00:00")+$i*60), $v['open'], $v['high'], $v['low'], $v['close'], rand(0, 100000),$v['change']];
//echo strtotime(date('Y-m-d H:i:s', strtotime($_GET['dates']." ".$timess.":00:00")+$i*60)).PHP_EOL;
$i++;
}
//echo $_GET['dates']." ".$timess.":00:00";
/*
//重新排序
foreach($rsp as $k=>$v){
$key_arrays[]=$v[0];
}
array_multisort($key_arrays,SORT_ASC,SORT_NUMERIC,$rsp);
*/
///排序 结束
echo json_encode(['data' => $rsp, 'next' => date('Y-m-d', strtotime('+1 days', strtotime($_GET['dates'])))]);
die;