PublicFunctions/Get-FMPStockPriceAndVolume.ps1
function Get-FMPStockPriceAndVolume { <# .SYNOPSIS Retrieves comprehensive stock price and volume data for a specified stock symbol using the Financial Modeling Prep API. .DESCRIPTION The Get-FMPStockPriceAndVolume function fetches detailed historical data for a given stock symbol. Data retrieved includes open, high, low, close prices, trading volume, price changes, percentage changes, and the volume-weighted average price (VWAP). Users can optionally filter the data by a date range using the "from" and "to" parameters. If no API key is provided, the function will attempt to retrieve it using the Get-FMPCredential function and prompt the user if necessary. .PARAMETER Symbol Specifies the stock symbol for which to retrieve price and volume data (e.g., AAPL). This parameter is mandatory. .PARAMETER FromDate (Optional) Specifies the start date (inclusive) for data retrieval. The date is formatted as "yyyy-MM-dd". .PARAMETER ToDate (Optional) Specifies the end date (inclusive) for data retrieval. The date is formatted as "yyyy-MM-dd". .PARAMETER ApiKey Specifies your Financial Modeling Prep API key. If omitted, the function attempts to retrieve it using Get-FMPCredential. .EXAMPLE Get-FMPStockPriceAndVolume -Symbol AAPL -FromDate (Get-Date "2025-01-08") -ToDate (Get-Date "2025-04-08") This example retrieves the comprehensive historical price and volume data for Apple Inc. between January 8, 2025 and April 8, 2025. .NOTES This function utilizes the Financial Modeling Prep API's full historical price and volume endpoint. For more information, visit: https://financialmodelingprep.com #> [CmdletBinding()] Param ( [Parameter(Mandatory = $true)] [string] $Symbol, [Parameter(Mandatory = $false)] [datetime] $FromDate, [Parameter(Mandatory = $false)] [datetime] $ToDate, [Parameter(Mandatory = $false)] [string] $ApiKey = (Get-FMPCredential) ) Begin { if (-not $ApiKey) { $ApiKey = Read-Host "Please enter your Financial Modeling Prep API key" } $baseUrl = "https://financialmodelingprep.com/stable/historical-price-eod/full" } Process { $url = "{0}?symbol={1}&apikey={2}" -f $baseUrl, $Symbol, $ApiKey if ($FromDate) { $url += "&from=" + $FromDate.ToString("yyyy-MM-dd") } if ($ToDate) { $url += "&to=" + $ToDate.ToString("yyyy-MM-dd") } $headers = @{ "Upgrade-Insecure-Requests" = "1" } try { $response = Invoke-RestMethod -Uri $url -Method Get -Headers $headers -ErrorAction Stop return $response } catch { throw "Error retrieving stock price and volume data: $_" } } }; |