當前位置: 首頁>>代碼示例>>Python>>正文


Python ccxt.exchanges方法代碼示例

本文整理匯總了Python中ccxt.exchanges方法的典型用法代碼示例。如果您正苦於以下問題:Python ccxt.exchanges方法的具體用法?Python ccxt.exchanges怎麽用?Python ccxt.exchanges使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在ccxt的用法示例。


在下文中一共展示了ccxt.exchanges方法的10個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。

示例1: cancel_order

# 需要導入模塊: import ccxt [as 別名]
# 或者: from ccxt import exchanges [as 別名]
def cancel_order(self, order_param,
                     asset_or_symbol=None, params={}):
        order_id = order_param.id \
            if isinstance(order_param, Order) else order_param

        if asset_or_symbol is None:
            log.debug(
                'order not found in memory, cancelling order might fail '
                'on some exchanges.'
            )
        try:
            symbol = self.get_symbol(asset_or_symbol) \
                if asset_or_symbol is not None else None
            self.api.cancel_order(id=order_id,
                                  symbol=symbol, params=params)

        except (ExchangeError, NetworkError) as e:
            log.warn(
                'unable to cancel order {} / {}: {}'.format(
                    self.name, order_id, e
                )
            )
            raise ExchangeRequestError(error=e) 
開發者ID:enigmampc,項目名稱:catalyst,代碼行數:25,代碼來源:ccxt_exchange.py

示例2: fetch_ticks

# 需要導入模塊: import ccxt [as 別名]
# 或者: from ccxt import exchanges [as 別名]
def fetch_ticks(exchange_str, pairs=None):
    if not pairs:
        df = get_security_list(security_type=SECURITY_TYPE_CRYPTO, exchanges=exchange_str)
        pairs = set(df.loc[:, 'name'].tolist()) & set(CRYPTOCURRENCY_PAIR)
        if not pairs:
            logger.warning("{} not support pair:{}".format(exchange_str, CRYPTOCURRENCY_PAIR))
            return
        else:
            logger.info("{} get tick for paris:{}".format(exchange_str, pairs))

    exchange = eval("ccxt.{}()".format(exchange_str))
    if exchange.has['fetchTrades']:
        # verify one trade at first
        pairs = [pair for pair in pairs if _check_fetch_trades(exchange, pair)]

        logger.info("after check {} get tick for paris:{}".format(exchange_str, pairs))

        while True:

            for pair in pairs:
                trades = exchange.fetch_trades(symbol=pair)

                trade = trades[-1]

                code = pair.replace('/', '-')
                tick = {
                    'securityId': "{}_{}_{}".format("cryptocurrency", exchange_str, code),
                    'code': code,
                    'name': pair,
                    'timestamp': int(trade['timestamp'] / 1000),
                    'id': trade['id'],
                    'price': trade['price'],
                    'volume': trade['amount']
                }
                yield tick

            rate_limit = 5
            time.sleep(rate_limit)

            logger.info("fetch_tickers exchange:{} pairs:{} sleep:{}".format(exchange_str, pairs, rate_limit)) 
開發者ID:foolcage,項目名稱:fooltrader,代碼行數:42,代碼來源:ccxt_wrapper.py

示例3: diversify

# 需要導入模塊: import ccxt [as 別名]
# 或者: from ccxt import exchanges [as 別名]
def diversify():
        #Diversify to do (Diversify will diversify portfolio):
            #Collect Amounts in Wallets (available for trading)
    for exch2 in ccxt.exchanges:
        #Change to incorporate requiring API's keys & phrases (from Keys Python Script)
        exch = getattr (ccxt, exch2) ()
        print(exch.fetchBalance())
    #Diversify into pre-described amounts
        # 50% BTC, 5% Each of 8 next-top coins, 10x 1% of micro-caps
    pass 
開發者ID:Roibal,項目名稱:Cryptocurrency-Trading-Bots-Python-Beginner-Advance,代碼行數:12,代碼來源:Advanced_Cryptocurrency_Trading_Bot.py

示例4: __init__

# 需要導入模塊: import ccxt [as 別名]
# 或者: from ccxt import exchanges [as 別名]
def __init__(self):
        """Initializes the Configuration class
        """

        with open('defaults.yml', 'r') as config_file:
            default_config = yaml.load(config_file)

        if os.path.isfile('config.yml'):
            with open('config.yml', 'r') as config_file:
                user_config = yaml.load(config_file)
        else:
            user_config = dict()

        if 'settings' in user_config:
            self.settings = {**default_config['settings'], **user_config['settings']}
        else:
            self.settings = default_config['settings']

        if 'notifiers' in user_config:
            self.notifiers = {**default_config['notifiers'], **user_config['notifiers']}
        else:
            self.notifiers = default_config['notifiers']

        if 'indicators' in user_config:
            self.indicators = {**default_config['indicators'], **user_config['indicators']}
        else:
            self.indicators = default_config['indicators']

        if 'informants' in user_config:
            self.informants = {**default_config['informants'], **user_config['informants']}
        else:
            self.informants = default_config['informants']

        if 'crossovers' in user_config:
            self.crossovers = {**default_config['crossovers'], **user_config['crossovers']}
        else:
            self.crossovers = default_config['crossovers']

        if 'exchanges' in user_config:
            self.exchanges = user_config['exchanges']
        else:
            self.exchanges = dict()

        for exchange in ccxt.exchanges:
            if exchange not in self.exchanges:
                self.exchanges[exchange] = {
                    'required': {
                        'enabled': False
                    }
                } 
開發者ID:CryptoSignal,項目名稱:crypto-signal,代碼行數:52,代碼來源:conf.py

示例5: init_markets

# 需要導入模塊: import ccxt [as 別名]
# 或者: from ccxt import exchanges [as 別名]
def init_markets(exchanges=CRYPTOCURRENCY_EXCHANGES):
    for exchange_str in set(ccxt.exchanges) & set(exchanges):
        exchange_dir = get_exchange_dir(security_type='cryptocurrency', exchange=exchange_str)

        # 創建交易所目錄
        if not os.path.exists(exchange_dir):
            os.makedirs(exchange_dir)

        exchange = eval("ccxt.{}()".format(exchange_str))
        try:
            markets = exchange.fetch_markets()
            df = pd.DataFrame()

            # markets有些為key=symbol的dict,有些為list
            markets_type = type(markets)
            if markets_type != dict and markets_type != list:
                logger.exception("unknown return markets type {}".format(markets_type))
                return

            for market in markets:
                if markets_type == dict:
                    name = market
                    code = name.replace('/', "-")

                if markets_type == list:
                    name = market['symbol']
                    code = name.replace('/', "-")

                security_item = generate_security_item(security_type='cryptocurrency', exchange=exchange_str,
                                                       code=code,
                                                       name=name, list_date=None)

                kdata_dir = get_kdata_dir(security_item)

                if not os.path.exists(kdata_dir):
                    os.makedirs(kdata_dir)

                df = df.append(security_item, ignore_index=True)

                logger.info("init_markets,exchange:{} security:{}".format(exchange_str, security_item))

                if markets_type == dict:
                    security_info = markets[market]

                if markets_type == list:
                    security_info = market

                # 存儲數字貨幣的meta信息
                if security_info:
                    with open(get_security_meta_path(security_type='cryptocurrency', exchange=exchange_str,
                                                     code=code), "w") as f:
                        json.dump(security_info, f, ensure_ascii=False)

            # 存儲該交易所的數字貨幣列表
            if not df.empty:
                df.to_csv(get_security_list_path(security_type='cryptocurrency', exchange=exchange_str),
                          index=False)
            logger.exception("init_markets for {} success".format(exchange_str))
        except Exception as e:
            logger.exception("init_markets for {} failed".format(exchange_str), e) 
開發者ID:foolcage,項目名稱:fooltrader,代碼行數:62,代碼來源:ccxt_wrapper.py

示例6: fetch_kdata

# 需要導入模塊: import ccxt [as 別名]
# 或者: from ccxt import exchanges [as 別名]
def fetch_kdata(exchange_str='bitstamp'):
    ccxt_exchange = eval("ccxt.{}()".format(exchange_str))
    if ccxt_exchange.has['fetchOHLCV']:
        for _, security_item in get_security_list(security_type='cryptocurrency', exchanges=[exchange_str]).iterrows():
            try:
                if security_item['name'] not in CRYPTOCURRENCY_PAIR:
                    continue

                start_date, df = get_latest_download_trading_date(security_item)
                # 日K線隻抓到昨天
                end_date = pd.Timestamp.today() - pd.DateOffset(1)

                if start_date and (start_date > end_date):
                    logger.info("{} kdata is ok".format(security_item['code']))
                    continue

                try:
                    kdatas = ccxt_exchange.fetch_ohlcv(security_item['name'], timeframe='1d')
                    # for rateLimit
                    time.sleep(5)
                except Exception as e:
                    logger.exception("fetch_kdata for {} {} failed".format(exchange_str, security_item['name']), e)
                    continue

                for kdata in kdatas:
                    timestamp = pd.Timestamp.fromtimestamp(int(kdata[0] / 1000))
                    if is_same_date(timestamp, pd.Timestamp.today()):
                        continue
                    kdata_json = {
                        'timestamp': to_time_str(timestamp),
                        'code': security_item['code'],
                        'name': security_item['name'],
                        'open': kdata[1],
                        'high': kdata[2],
                        'low': kdata[3],
                        'close': kdata[4],
                        'volume': kdata[5],
                        'securityId': security_item['id'],
                        'preClose': None,
                        'change': None,
                        'changePct': None
                    }
                    df = df.append(kdata_json, ignore_index=True)
                if not df.empty:
                    df = df.loc[:, KDATA_COMMON_COL]
                    kdata_df_save(df, get_kdata_path(security_item), calculate_change=True)
                    logger.info(
                        "fetch_kdata for exchange:{} security:{} success".format(exchange_str, security_item['name']))
            except Exception as e:
                logger.info(
                    "fetch_kdata for exchange:{} security:{} failed".format(exchange_str, security_item['name'], e))
    else:
        logger.warning("exchange:{} not support fetchOHLCV".format(exchange_str))


# not used 
開發者ID:foolcage,項目名稱:fooltrader,代碼行數:58,代碼來源:ccxt_wrapper.py

示例7: __init__

# 需要導入模塊: import ccxt [as 別名]
# 或者: from ccxt import exchanges [as 別名]
def __init__(self, exchange_name, key,
                 secret, password, quote_currency):
        log.debug(
            'finding {} in CCXT exchanges:\n{}'.format(
                exchange_name, ccxt.exchanges
            )
        )
        try:
            # Making instantiation as explicit as possible for code tracking.
            if exchange_name in SUPPORTED_EXCHANGES:
                exchange_attr = SUPPORTED_EXCHANGES[exchange_name]

            else:
                exchange_attr = getattr(ccxt, exchange_name)

            self.api = exchange_attr({
                'apiKey': key,
                'secret': secret,
                'password': password,
            })
            self.api.enableRateLimit = True

        except Exception:
            raise ExchangeNotFoundError(exchange_name=exchange_name)

        self._symbol_maps = [None, None]

        self.name = exchange_name

        self.quote_currency = quote_currency
        self.transactions = defaultdict(list)

        self.num_candles_limit = 2000
        self.max_requests_per_minute = 60
        self.low_balance_threshold = 0.1
        self.request_cpt = dict()
        self._common_symbols = dict()

        # Operations with retry features
        self.attempts = dict(
            missing_order_attempts=5,
            retry_sleeptime=5,
        )

        self.bundle = ExchangeBundle(self.name)
        self.markets = None
        self._is_init = False 
開發者ID:enigmampc,項目名稱:catalyst,代碼行數:49,代碼來源:ccxt_exchange.py

示例8: find_exchanges

# 需要導入模塊: import ccxt [as 別名]
# 或者: from ccxt import exchanges [as 別名]
def find_exchanges(features=None, is_authenticated=False):
        ccxt_features = []
        if features is not None:
            for feature in features:
                if not feature.endswith('Bundle'):
                    ccxt_features.append(feature)

        exchange_names = []
        for exchange_name in ccxt.exchanges:
            if is_authenticated:
                exchange_auth = get_exchange_auth(exchange_name)

                has_auth = (exchange_auth['key'] != ''
                            and exchange_auth['secret'] != '')

                if not has_auth:
                    continue

            log.debug('loading exchange: {}'.format(exchange_name))
            exchange = getattr(ccxt, exchange_name)()

            if ccxt_features is None:
                has_feature = True

            else:
                try:
                    has_feature = all(
                        [exchange.has[feature] for feature in ccxt_features]
                    )

                except Exception:
                    has_feature = False

            if has_feature:
                try:
                    log.info('initializing {}'.format(exchange_name))
                    exchange_names.append(exchange_name)

                except Exception as e:
                    log.warn(
                        'unable to initialize exchange {}: {}'.format(
                            exchange_name, e
                        )
                    )

        return exchange_names 
開發者ID:enigmampc,項目名稱:catalyst,代碼行數:48,代碼來源:ccxt_exchange.py

示例9: _process_order_fallback

# 需要導入模塊: import ccxt [as 別名]
# 或者: from ccxt import exchanges [as 別名]
def _process_order_fallback(self, order):
        """
        Fallback method for exchanges which do not play nice with
        fetch-my-trades. Apparently, about 60% of exchanges will return
        the correct executed values with this method. Others will support
        fetch-my-trades.

        Parameters
        ----------
        order: Order

        Returns
        -------
        float

        """
        exc_order, price = self.get_order(
            order.id, order.asset, return_price=True
        )
        order.status = exc_order.status
        order.commission = exc_order.commission
        order.filled = exc_order.filled

        transactions = []
        if exc_order.status == ORDER_STATUS.FILLED:
            if order.amount > exc_order.amount:
                log.warn(
                    'executed order amount {} differs '
                    'from original'.format(
                        exc_order.amount, order.amount
                    )
                )

            order.check_triggers(
                price=price,
                dt=exc_order.dt,
            )
            transaction = Transaction(
                asset=order.asset,
                amount=order.amount,
                dt=pd.Timestamp.utcnow(),
                price=price,
                order_id=order.id,
                commission=order.commission,
            )
            transactions.append(transaction)

        return transactions 
開發者ID:enigmampc,項目名稱:catalyst,代碼行數:50,代碼來源:ccxt_exchange.py

示例10: get_order

# 需要導入模塊: import ccxt [as 別名]
# 或者: from ccxt import exchanges [as 別名]
def get_order(self, order_id, asset_or_symbol=None,
                  return_price=False, params={}):
        """Lookup an order based on the order id returned from one of the
        order functions.

        Parameters
        ----------
        order_id : str
            The unique identifier for the order.
        asset_or_symbol: Asset or str
            The asset or the tradingPair symbol of the order.
        return_price: bool
            get the trading price in addition to the order
        params: dict, optional
            Extra parameters to pass to the exchange

        Returns
        -------
        order : Order
            The order object.
        execution_price: float
            The execution price per unit of the order if return_price is True
        """
        if asset_or_symbol is None:
            log.debug(
                'order not found in memory, the request might fail '
                'on some exchanges.'
            )
        try:
            symbol = self.get_symbol(asset_or_symbol) \
                if asset_or_symbol is not None else None
            order_status = self.api.fetch_order(id=order_id,
                                                symbol=symbol,
                                                params=params)
            order, executed_price = self._create_order(order_status)

            if return_price:
                return order, executed_price

            else:
                return order

        except (ExchangeError, NetworkError) as e:
            log.warn(
                'unable to fetch order {} / {}: {}'.format(
                    self.name, order_id, e
                )
            )
            raise ExchangeRequestError(error=e) 
開發者ID:enigmampc,項目名稱:catalyst,代碼行數:51,代碼來源:ccxt_exchange.py


注:本文中的ccxt.exchanges方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。