public function getHistoricalData($symbol, $interval, \DateTime $startDate, \DateTime $endDate)
    {
        $allowedIntervals = [self::INTERVAL_1_DAY, self::INTERVAL_1_WEEK, self::INTERVAL_1_MONTH];
        if (!in_array($interval, $allowedIntervals)) {
            throw new \InvalidArgumentException('Interval must be one of: '.implode(', ', $allowedIntervals));
        }

        if ($startDate > $endDate) {
            throw new \InvalidArgumentException('Start date must be before end date');
        }

        $cookieJar = new CookieJar();

        $initialUrl = 'https://finance.yahoo.com/quote/'.urlencode($symbol).'/history?p='.urlencode($symbol);
        $responseBody = (string) $this->client->request('GET', $initialUrl, ['cookies' => $cookieJar])->getBody();
        $crumb = $this->resultDecoder->extractCrumb($responseBody);

        $dataUrl = 'https://query1.finance.yahoo.com/v7/finance/download/'.urlencode($symbol).'?period1='.$startDate->getTimestamp().'&period2='.$endDate->getTimestamp().'&interval='.$interval.'&events=history&crumb='.urlencode($crumb);
        $responseBody = (string) $this->client->request('GET', $dataUrl, ['cookies' => $cookieJar])->getBody();

        return $this->resultDecoder->transformHistoricalDataResult($responseBody);
    }
public function getHistoricalData($symbol, $interval, \DateTime $startDate, \DateTime $endDate)
    {
        $allowedIntervals = [self::INTERVAL_1_DAY, self::INTERVAL_1_WEEK, self::INTERVAL_1_MONTH];
        if (!in_array($interval, $allowedIntervals)) {
            throw new \InvalidArgumentException('Interval must be one of: '.implode(', ', $allowedIntervals));
        }

        if ($startDate > $endDate) {
            throw new \InvalidArgumentException('Start date must be before end date');
        }

        $cookieJar = new CookieJar();

        $initialUrl = 'https://finance.yahoo.com/quote/'.urlencode($symbol).'/history?p='.urlencode($symbol);
        $responseBody = (string) $this->client->request('GET', $initialUrl, ['cookies' => $cookieJar])->getBody();
        $crumb = $this->resultDecoder->extractCrumb($responseBody);

        $dataUrl = 'https://query1.finance.yahoo.com/v7/finance/download/'.urlencode($symbol).'?period1='.$startDate->getTimestamp().'&period2='.$endDate->getTimestamp().'&interval='.$interval.'&events=history&crumb='.urlencode($crumb);
        $responseBody = (string) $this->client->request('GET', $dataUrl, ['cookies' => $cookieJar])->getBody();

        return $this->resultDecoder->transformHistoricalDataResult($responseBody);
    }
public function getHistoricalData ( $ symbol , $ interval , \ DateTime $ startDate , \ DateTime $ endDate ) { $ allowedIntervals = [ self :: INTERVAL_1_DAY , self :: INTERVAL_1_WEEK , self :: INTERVAL_1_MONTH ] ; if ( ! in_array ( $ interval , $ allowedIntervals ) ) { throw new \ InvalidArgumentException ( 'Interval must be one of: ' . implode ( ', ' , $ allowedIntervals ) ) ; } if ( $ startDate > $ endDate ) { throw new \ InvalidArgumentException ( 'Start date must be before end date' ) ; } $ cookieJar = new CookieJar ( ) ; $ initialUrl = 'https://finance.yahoo.com/quote/' . urlencode ( $ symbol ) . '/history?p=' . urlencode ( $ symbol ) ; $ responseBody = ( string ) $ this -> client -> request ( 'GET' , $ initialUrl , [ 'cookies' => $ cookieJar ] ) -> getBody ( ) ; $ crumb = $ this -> resultDecoder -> extractCrumb ( $ responseBody ) ; $ dataUrl = 'https://query1.finance.yahoo.com/v7/finance/download/' . urlencode ( $ symbol ) . '?period1=' . $ startDate -> getTimestamp ( ) . '&period2=' . $ endDate -> getTimestamp ( ) . '&interval=' . $ interval . '&events=history&crumb=' . urlencode ( $ crumb ) ; $ responseBody = ( string ) $ this -> client -> request ( 'GET' , $ dataUrl , [ 'cookies' => $ cookieJar ] ) -> getBody ( ) ; return $ this -> resultDecoder -> transformHistoricalDataResult ( $ responseBody ) ; }
Get historical data for a symbol.

@param string    $symbol
@param string    $interval
@param \DateTime $startDate
@param \DateTime $endDate

@return array|HistoricalData[]

@throws ApiException
Get historical data for a symbol .