stable/freqtrade/dataprovider.py

66 lines
1.6 KiB
Python

"""
Dataprovider
Responsible to provide data to the bot
including Klines, tickers, historic data
Common Interface for bot and strategy to access data.
"""
import logging
from typing import List, Dict
from pandas import DataFrame
from freqtrade.exchange import Exchange
logger = logging.getLogger(__name__)
class DataProvider(object):
def __init__(self, config: dict, exchange: Exchange) -> None:
self._config = config
self._exchange = exchange
def refresh(self, pairlist: List[str]) -> None:
"""
Refresh data, called with each cycle
"""
self._exchange.refresh_tickers(pairlist, self._config['ticker_interval'])
def ohlcv(self, pair: str) -> List[str]:
"""
get ohlcv data for the given pair as DataFrame
"""
# TODO: Should not be stored in exchange but in this class
# TODO: should return dataframe, not list
return self._exchange.klines.get(pair)
def historic_ohlcv(self, pair: str) -> DataFrame:
"""
get historic ohlcv data stored for backtesting
"""
pass
def ticker(self, pair: str):
"""
Return last ticker data
"""
pass
def orderbook(self, pair: str, max: int):
"""
return latest orderbook data
"""
pass
def balance(self, pair):
# TODO: maybe use wallet directly??
pass
@property
def runmode(self) -> str:
"""
Get runmode of the bot
can be "live", "dry-run", "backtest", "edgecli", "hyperopt".
"""
return self._config.get['runmode']