application/controllers/Analysis.php
/**
     * Get waves from array of values
     * 
     * @param array $values     Contains array of values
     * @return array
     */
Get waves from array of values


Get waves from array of values
private function _getWaves($values) {
        $waves = array();
        if ($values) {
            $wIndex = 0;
            $startValue = $values[0]['bid'];
            $waves[$wIndex] = array('start_value' => $startValue, 'end_value' => $startValue, 'values' => array($values[0]), 'direction' => 0);
            $cnt = count($values);
            for ($i = 1; $i < $cnt; $i++) {
                $value = $values[$i]['bid'];
                if ($waves[$wIndex]['direction'] == 0) {
                    if ($value > $waves[$wIndex]['end_value']) {
                        $waves[$wIndex]['direction'] = 1;
                    } elseif ($value < $waves[$wIndex]['end_value']) {
                        $waves[$wIndex]['direction'] = -1;
                    }
                    $waves[$wIndex]['end_value'] = $value;
                    $waves[$wIndex]['values'][] = $values[$i];
                } elseif ($waves[$wIndex]['direction'] == 1) {
                    if ($value >= $waves[$wIndex]['end_value']) {
                        $waves[$wIndex]['end_value'] = $value;
                        $waves[$wIndex]['values'][] = $values[$i];
                    } else {
                        $waves[++$wIndex] = array('start_value' => $value, 'end_value' => $value, 'values' => array($values[$i]), 'direction' => -1);
                    }
                } elseif ($waves[$wIndex]['direction'] == -1) {
                    if ($value <= $waves[$wIndex]['end_value']) {
                        $waves[$wIndex]['end_value'] = $value;
                        $waves[$wIndex]['values'][] = $values[$i];
                    } else {
                        $waves[++$wIndex] = array('start_value' => $value, 'end_value' => $value, 'values' => array($values[$i]), 'direction' => 1);
                    }
                }
            }
        }
        return $waves;
    }
private function _getWaves ( $ values ) { $ waves = array ( ) ; if ( $ values ) { $ wIndex = 0 ; $ startValue = $ values [ 0 ] [ 'bid' ] ; $ waves [ $ wIndex ] = array ( 'start_value' => $ startValue , 'end_value' => $ startValue , 'values' => array ( $ values [ 0 ] ) , 'direction' => 0 ) ; $ cnt = count ( $ values ) ; for ( $ i = 1 ; $ i < $ cnt ; $ i ++ ) { $ value = $ values [ $ i ] [ 'bid' ] ; if ( $ waves [ $ wIndex ] [ 'direction' ] == 0 ) { if ( $ value > $ waves [ $ wIndex ] [ 'end_value' ] ) { $ waves [ $ wIndex ] [ 'direction' ] = 1 ; } elseif ( $ value < $ waves [ $ wIndex ] [ 'end_value' ] ) { $ waves [ $ wIndex ] [ 'direction' ] = - 1 ; } $ waves [ $ wIndex ] [ 'end_value' ] = $ value ; $ waves [ $ wIndex ] [ 'values' ] [ ] = $ values [ $ i ] ; } elseif ( $ waves [ $ wIndex ] [ 'direction' ] == 1 ) { if ( $ value >= $ waves [ $ wIndex ] [ 'end_value' ] ) { $ waves [ $ wIndex ] [ 'end_value' ] = $ value ; $ waves [ $ wIndex ] [ 'values' ] [ ] = $ values [ $ i ] ; } else { $ waves [ ++ $ wIndex ] = array ( 'start_value' => $ value , 'end_value' => $ value , 'values' => array ( $ values [ $ i ] ) , 'direction' => - 1 ) ; } } elseif ( $ waves [ $ wIndex ] [ 'direction' ] == - 1 ) { if ( $ value <= $ waves [ $ wIndex ] [ 'end_value' ] ) { $ waves [ $ wIndex ] [ 'end_value' ] = $ value ; $ waves [ $ wIndex ] [ 'values' ] [ ] = $ values [ $ i ] ; } else { $ waves [ ++ $ wIndex ] = array ( 'start_value' => $ value , 'end_value' => $ value , 'values' => array ( $ values [ $ i ] ) , 'direction' => 1 ) ; } } } } return $ waves ; }
Get waves from array of values
Get waves from array of values
// start of first wave // wave up // wave down // continue first wave // wave up // continue wave up // new wave down // wave down // continue wave down // new wave up