Ejemplo n.º 1
0
 /**
  * Получает изображение графика за период - -0+
  * @param  $period - период расчета в сек.
  * @param $name - buy, sell
  */
 public function getGraphImage($curtime, $period, $name, $imp_dif)
 {
     // @todo переделать - диапазоны расчитывать более точно
     $step = round($period / 3);
     $from_tm = $curtime - $period;
     $from = date('Y-m-d H:i:s', $from_tm);
     $to = date('Y-m-d H:i:s', $curtime);
     $track = "";
     $prev = false;
     for ($i = 0; $i <= 3; $i++) {
         $step_ut = $from_tm + $step * $i;
         $step_dt = date('Y-m-d H:i:s', $step_ut);
         // Делим период на 4 точки
         $step_ut_f = date('Y-m-d H:i:s', $step_ut - $step / 2);
         // Вокруг каждой точки отмеряем назад и вперед половину шага
         $step_ut_t = date('Y-m-d H:i:s', $step_ut + $step / 2);
         //$val=Exchange::NOSQL_getAvg($name, $step_ut_f, $step_ut_t);
         $val = Exchange::getAvg($name, $step_ut_f, $step_ut_t);
         if (!$val) {
             //Log::Add('Не нашел данных за период с'.$step_ut_f.' по '.$step_ut_t);
             continue;
         }
         $list[] = array('dtm' => $step_dt, 'val' => $val);
         if (!$prev) {
             $prev = $val;
             continue;
         }
         // Определяем направление
         $dif = 1 - $prev / $val;
         if ($dif < -1 * $imp_dif) {
             $track .= "-";
         } elseif ($dif > $imp_dif) {
             $track .= "+";
         } else {
             $track .= "0";
         }
         $prev = $val;
     }
     $result = array('track' => $track, 'from' => $from, 'step' => $step, 'period' => $period, 'items' => $list);
     return $result;
 }