예제 #1
0
    def __init__(self,
                 exchange_name: str = 'binance',
                 symbol_pair: str = 'BTC/USDT',
                 timeframe: str = '1h',
                 start_date: datetime = None,
                 date_format: ProviderDateFormat = ProviderDateFormat.TIMESTAMP_MS,
                 **kwargs):
        BaseDataProvider.__init__(self, date_format, **kwargs)

        self.exchange_name = exchange_name
        self.symbol_pair = symbol_pair
        self.timeframe = timeframe

        self.data_frame = None
        self.start_date = start_date

        get_exchange_fn = getattr(ccxt, self.exchange_name)

        try:
            self.exchange = get_exchange_fn()
        except AttributeError:
            raise ModuleNotFoundError(
                f'Exchange {self.exchange_name} not found. Please check if the exchange is supported.')

        if not self.exchange.has['fetchOHLCV']:
            raise AttributeError(
                f'Exchange {self.exchange_name} does not support fetchOHLCV')

        self.exchange.load_markets()
        self.exchange.enableRateLimit = True

        if self.symbol_pair not in self.exchange.symbols:
            raise ModuleNotFoundError(
                f'The requested symbol {self.symbol_pair} is not available from {self.exchange_name}')
예제 #2
0
    def __init__(self,
                 date_format: ProviderDateFormat,
                 data_frame: pd.DataFrame = None,
                 csv_data_path: str = None,
                 skip_prepare_data: bool = True,
                 **kwargs):
        BaseDataProvider.__init__(self, date_format, **kwargs)

        self.kwargs = kwargs

        if data_frame is not None:
            self.data_frame = data_frame
        elif csv_data_path is not None:
            if not os.path.isfile(csv_data_path):
                raise ValueError(
                    'Invalid "csv_data_path" argument passed to StaticDataProvider, file could not be found.'
                )

            self.data_frame = pd.read_csv(csv_data_path,
                                          names=[
                                              'Date', 'Time', 'Open', 'High',
                                              'Low', 'Close', 'Volume'
                                          ])
            self.data_frame = self.data_frame.drop(['Time'], axis=1)
            self.data_frame = self.data_frame.sort_values(['Date'])
            print(self.data_frame.head())
            self.data_frame = add_indicators(self.data_frame.reset_index())
            print(self.data_frame.head())
        else:
            raise ValueError(
                'StaticDataProvider requires either a "data_frame" or "csv_data_path argument".'
            )

        if not skip_prepare_data:
            self.data_frame = self.prepare_data(self.data_frame)
예제 #3
0
    def __init__(self,
                 date_format: ProviderDateFormat = ProviderDateFormat.TIMESTAMP_MS,
                 data_frame: pd.DataFrame = None,
                 csv_data_path: str = None,
                 skip_prepare_data: bool = False, 
                 variety: str = 'RB', **kwargs):
        BaseDataProvider.__init__(self, date_format, **kwargs)

        self.kwargs = kwargs

        if data_frame is not None:
            self.data_frame = data_frame
        elif variety is not None:
            self.data_frame = self.process_data(variety)
        elif csv_data_path is not None:
            if not os.path.isfile(csv_data_path):
                raise ValueError(
                    'Invalid "csv_data_path" argument passed to StaticDataProvider, file could not be found.')

            self.data_frame = pd.read_csv(csv_data_path)
        else:
            raise ValueError(
                'StaticDataProvider requires either a "data_frame" or "csv_data_path argument".')

        if not skip_prepare_data:
            self.data_frame = self.prepare_data(self.data_frame)
예제 #4
0
    def __init__(
            self,
            exchange_name: str = 'binance',
            symbol_pair: str = 'BTC/USDT',
            timeframe: str = '1m',
            start_date: datetime = None,
            date_format: ProviderDateFormat = ProviderDateFormat.TIMESTAMP_MS,
            data_frame: pd.DataFrame = None,
            **kwargs):
        BaseDataProvider.__init__(self, date_format, **kwargs)

        self.exchange_name = exchange_name
        self.symbol_pair = symbol_pair
        self.timeframe = timeframe
        self.data_frame = data_frame
        self.start_date = start_date

        self.kwargs = kwargs

        self.kline_stream = deque(maxlen=10)
        api_key = ''
        api_secret = ''
        self.client = Client(api_key, api_secret)
        self.bm = BinanceSocketManager(self.client)
        # start any sockets here, i.e a trade socket
        pr = lambda x: print("msg received")
        self.conn_key = self.bm.start_kline_socket(
            'BTCUSDT', self.process_message, interval=KLINE_INTERVAL_1MINUTE)
        # then start the socket manager
        self.bm.start()

        get_exchange_fn = getattr(ccxt, self.exchange_name)

        try:
            self.exchange = get_exchange_fn()
        except AttributeError:
            raise ModuleNotFoundError(
                f'Exchange {self.exchange_name} not found. Please check if the exchange is supported.'
            )

        if not self.exchange.has['fetchOHLCV']:
            raise AttributeError(
                f'Exchange {self.exchange_name} does not support fetchOHLCV')
예제 #5
0
    def __init__(self,
                 date_format: ProviderDateFormat,
                 data_frame: pd.DataFrame = None,
                 csv_data_path: str = None,
                 skip_prepare_data: bool = False,
                 **kwargs):
        BaseDataProvider.__init__(self, date_format, **kwargs)

        self.kwargs = kwargs

        if data_frame is not None:
            self.data_frame = data_frame
        elif csv_data_path is not None:
            self.data_frame = pd.read_csv(csv_data_path)
        else:
            raise ValueError(
                'StaticDataProvider requires either a data_frame or csv_data_path argument.'
            )

        if not skip_prepare_data:
            self.data_frame = self.prepare_data(self.data_frame)