def METHOD_NAME(self, pair: str, timeframe: str,
                timerange: Optional[TimeRange], candle_type: CandleType
                ) -> DataFrame:
    """
    Internal method used to load data for one pair from disk.
    Implements the loading and conversion to a Pandas dataframe.
    Timerange trimming and dataframe validation happens outside of this method.
    :param pair: Pair to load data
    :param timeframe: Timeframe (e.g. "5m")
    :param timerange: Limit data to be loaded to this timerange.
                    Optionally implemented by subclasses to avoid loading
                    all data where possible.
    :param candle_type: Any of the enum CandleType (must match trading mode!)
    :return: DataFrame with ohlcv data, or empty DataFrame
    """
    filename = self._pair_data_filename(
        self._datadir, pair, timeframe, candle_type=candle_type)
    if not filename.exists():
        # Fallback mode for 1M files
        filename = self._pair_data_filename(
            self._datadir, pair, timeframe, candle_type=candle_type, no_timeframe_modify=True)
        if not filename.exists():
            return DataFrame(columns=self._columns)
    pairdata = read_feather(filename)
    pairdata.columns = self._columns
    pairdata = pairdata.astype(dtype={'open': 'float', 'high': 'float',
                                      'low': 'float', 'close': 'float', 'volume': 'float'})
    pairdata['date'] = to_datetime(pairdata['date'], unit='ms', utc=True)
    return pairdata