scrtlabs / catalyst

An Algorithmic Trading Library for Crypto-Assets in Python
http://enigma.co
Apache License 2.0
2.49k stars 725 forks source link

can't find BCC/USDT symbol on bittrex #120

Closed caioaao closed 6 years ago

caioaao commented 6 years ago

Dear Catalyst Maintainers,

Before I tell you about my issue, let me describe my environment:

Environment

Now that you know a little about me, let me tell you about the issue I am having:

Description of Issue

$ python project/broken.py                                                                                                                                          *[master] 
[2017-12-26 15:04:14.889864] INFO: run_algo: running algo in paper-trading mode
[2017-12-26 15:04:15.295666] WARNING: Loader: Refusing to download new treasury data because a download succeeded at 2017-12-26 14:27:20.799999+00:00.
[2017-12-26 15:04:15.298364] INFO: exchange_algorithm: initialized trading algorithm in live mode
[2017-12-26 15:04:15.393710] INFO: exchange_algorithm: got totals from exchanges, cash: 100.0 positions: 0.0
Traceback (most recent call last):
  File "project/broken.py", line 28, in <module>
    live=True)
  File "/home/anaconda3/envs/catalyst/lib/python2.7/site-packages/catalyst/utils/run_algo.py", line 573, in run_algorithm
    stats_output=stats_output
  File "/home/anaconda3/envs/catalyst/lib/python2.7/site-packages/catalyst/utils/run_algo.py", line 356, in _run
    overwrite_sim_params=False,
  File "/home/anaconda3/envs/catalyst/lib/python2.7/site-packages/catalyst/algorithm.py", line 724, in run
    for perf in self.get_generator():
  File "/home/anaconda3/envs/catalyst/lib/python2.7/site-packages/catalyst/gens/tradesimulation.py", line 224, in transform
    for capital_change_packet in every_bar(dt):
  File "/home/anaconda3/envs/catalyst/lib/python2.7/site-packages/catalyst/gens/tradesimulation.py", line 137, in every_bar
    handle_data(algo, current_data, dt_to_use)
  File "/home/anaconda3/envs/catalyst/lib/python2.7/site-packages/catalyst/utils/events.py", line 216, in handle_data
    dt,
  File "/home/anaconda3/envs/catalyst/lib/python2.7/site-packages/catalyst/utils/events.py", line 235, in handle_data
    self.callback(context, data)
  File "/home/anaconda3/envs/catalyst/lib/python2.7/site-packages/catalyst/exchange/exchange_algorithm.py", line 666, in handle_data
    self._handle_data(self, data)
  File "project/broken.py", line 10, in handle_data
    data.history(context.asset, ['close'], bar_count=100, frequency='5m')
  File "catalyst/_protocol.pyx", line 120, in catalyst._protocol.check_parameters.__call__.assert_keywords_and_call
  File "catalyst/_protocol.pyx", line 679, in catalyst._protocol.BarData.history
  File "/home/anaconda3/envs/catalyst/lib/python2.7/site-packages/catalyst/exchange/exchange_data_portal.py", line 114, in get_history_window
    ffill)
  File "/home/anaconda3/envs/catalyst/lib/python2.7/site-packages/catalyst/exchange/exchange_data_portal.py", line 73, in _get_history_window
    ffill)
  File "/home/anaconda3/envs/catalyst/lib/python2.7/site-packages/catalyst/exchange/exchange_data_portal.py", line 248, in get_exchange_history_window
    False)
  File "/home/anaconda3/envs/catalyst/lib/python2.7/site-packages/catalyst/exchange/exchange.py", line 511, in get_history_window
    end_dt=end_dt if not is_current else None,
  File "/home/anaconda3/envs/catalyst/lib/python2.7/site-packages/catalyst/exchange/ccxt/ccxt_exchange.py", line 386, in get_candles
    params={}
  File "/home/anaconda3/envs/catalyst/lib/python2.7/site-packages/ccxt/bittrex.py", line 384, in fetch_ohlcv
    market = self.market(symbol)
  File "/home/anaconda3/envs/catalyst/lib/python2.7/site-packages/ccxt/base/exchange.py", line 1010, in market
    raise ExchangeError(self.id + ' does not have market symbol ' + str(symbol))
ccxt.base.errors.ExchangeError: bittrex does not have market symbol BCC/USDT

To reproduce the error, run this with python broken.py:

from catalyst.api import symbol
from catalyst.utils.run_algo import run_algorithm

def initialize(context):
    context.asset = symbol('bcc_usdt')

def handle_data(context, data):
    data.history(context.asset, ['close'], bar_count=100, frequency='5m')

def analyze(context=None, results=None):
    pass

if __name__ == '__main__':
    run_algorithm(
        capital_base=100,
        initialize=initialize,
        handle_data=handle_data,
        analyze=analyze,
        exchange_name='bittrex',
        algo_namespace="bittrex_is_broken",
        base_currency='usdt',
        data_frequency='minute',
        simulate_orders=True,
        live=True)

The issue only happens with bitcoin cash/tether pair. When testing other symbols, issue #119 is reproduced.

blitzarx1 commented 6 years ago

Try "bcc_usd" pair instead of "bcc_usdt".

caioaao commented 6 years ago

@bl17zar it gives another error:

Error traceback: /home/anaconda3/envs/catalyst/lib/python2.7/site-packages/catalyst/exchange/exchange.py (line 281)
SymbolNotFoundOnExchange:  Symbol BCC_USD not found on exchange Bittrex. Choose from: [u'1st_btc', u'1st_eth', u'2give_btc', u'aby_btc', u'ada_btc', u'ada_eth', u'adt_btc', u'adt_eth', u'adx_btc', u'adx_eth', u'aeon_btc', u'agrs_btc', u'amp_btc', u'ant_btc', u'ant_eth', u'apx_btc', u'ardr_btc', u'ark_btc', u'aur_btc', u'bat_btc', u'bat_eth', u'bay_btc', u'bcc_btc', u'bcc_eth', u'bcc_usdt', u'bcy_btc', u'bitb_btc', u'blitz_btc', u'blk_btc', u'block_btc', u'bnt_btc', u'bnt_eth', u'brk_btc', u'brx_btc', u'bsd_btc', u'btc_usdt', u'btcd_btc', u'btg_btc', u'btg_eth', u'btg_usdt', u'burst_btc', u'byc_btc', u'cann_btc', u'cfi_btc', u'cfi_eth', u'clam_btc', u'cloak_btc', u'club_btc', u'coval_btc', u'cpc_btc', u'crb_btc', u'crb_eth', u'crw_btc', u'cure_btc', u'cvc_btc', u'cvc_eth', u'dash_btc', u'dash_eth', u'dash_usdt', u'dcr_btc', u'dct_btc', u'dgb_btc', u'dgb_eth', u'dgd_btc', u'dgd_eth', u'dmd_btc', u'dnt_btc', u'dnt_eth', u'doge_btc', u'dope_btc', u'dtb_btc', u'dyn_btc', u'ebst_btc', u'edg_btc', u'efl_btc', u'egc_btc', u'emc2_btc', u'emc_btc', u'eng_btc', u'eng_eth', u'enrg_btc', u'erc_btc', u'etc_btc', u'etc_eth', u'etc_usdt', u'eth_btc', u'eth_usdt', u'excl_btc', u'exp_btc', u'fair_btc', u'fct_btc', u'fct_eth', u'fldc_btc', u'flo_btc', u'ftc_btc', u'fun_btc', u'fun_eth', u'gam_btc', u'game_btc', u'gbg_btc', u'gbyte_btc', u'gcr_btc', u'geo_btc', u'gld_btc', u'gno_btc', u'gno_eth', u'gnt_btc', u'gnt_eth', u'golos_btc', u'grc_btc', u'grs_btc', u'gup_btc', u'gup_eth', u'hmq_btc', u'hmq_eth', u'incnt_btc', u'infx_btc', u'ioc_btc', u'ion_btc', u'iop_btc', u'kmd_btc', u'kore_btc', u'lbc_btc', u'lgd_btc', u'lgd_eth', u'lmc_btc', u'lsk_btc', u'ltc_btc', u'ltc_eth', u'ltc_usdt', u'lun_btc', u'lun_eth', u'maid_btc', u'mana_btc', u'mana_eth', u'mco_btc', u'mco_eth', u'meme_btc', u'mer_btc', u'mln_btc', u'mona_btc', u'mtl_btc', u'mtl_eth', u'mue_btc', u'music_btc', u'myst_btc', u'myst_eth', u'nav_btc', u'nbt_btc', u'neo_btc', u'neo_eth', u'neo_usdt', u'neos_btc', u'nlg_btc', u'nmr_btc', u'nmr_eth', u'nxc_btc', u'nxs_btc', u'nxt_btc', u'ok_btc', u'omg_btc', u'omg_eth', u'omg_usdt', u'omni_btc', u'part_btc', u'pay_btc', u'pay_eth', u'pdc_btc', u'pink_btc', u'pivx_btc', u'pkb_btc', u'pot_btc', u'powr_btc', u'powr_eth', u'ppc_btc', u'ptc_btc', u'ptoy_btc', u'ptoy_eth', u'qrl_btc', u'qrl_eth', u'qtum_btc', u'qtum_eth', u'qwark_btc', u'rads_btc', u'rby_btc', u'rcn_btc', u'rcn_eth', u'rdd_btc', u'rep_btc', u'rep_eth', u'rise_btc', u'rlc_btc', u'rlc_eth', u'salt_btc', u'salt_eth', u'sbd_btc', u'sc_btc', u'sc_eth', u'seq_btc', u'shift_btc', u'sib_btc', u'slr_btc', u'sls_btc', u'snrg_btc', u'snt_btc', u'snt_eth', u'sphr_btc', u'spr_btc', u'start_btc', u'steem_btc', u'storj_btc', u'storj_eth', u'strat_btc', u'strat_eth', u'swift_btc', u'swt_btc', u'synx_btc', u'sys_btc', u'thc_btc', u'tix_btc', u'tix_eth', u'tks_btc', u'trig_btc', u'trst_btc', u'trst_eth', u'trust_btc', u'tx_btc', u'ubq_btc', u'unb_btc', u'via_btc', u'vib_btc', u'vib_eth', u'vox_btc', u'vrc_btc', u'vrm_btc', u'vtc_btc', u'vtr_btc', u'waves_btc', u'waves_eth', u'wings_btc', u'wings_eth', u'xcp_btc', u'xdn_btc', u'xel_btc', u'xem_btc', u'xem_eth', u'xlm_btc', u'xlm_eth', u'xmg_btc', u'xmr_btc', u'xmr_eth', u'xmr_usdt', u'xmy_btc', u'xrp_btc', u'xrp_eth', u'xrp_usdt', u'xst_btc', u'xvc_btc', u'xvg_btc', u'xwc_btc', u'xzc_btc', u'zcl_btc', u'zec_btc', u'zec_eth', u'zec_usdt', u'zen_btc']

looks like my only choice is to use the bcc_usdt pair as it's what's listed on the available symbols list

blitzarx1 commented 6 years ago

Yes, looks like a bug to me. Sorry, have nothing to advice anymore.

fredfortier commented 6 years ago

Sometimes, it does not find something because the data is not available in our repository. For example, we don’t have Bittrex minute data yet. We’ve improved this error message in the develop branch which we will release soon. On Tue, Dec 26, 2017 at 8:50 AM bl17zar notifications@github.com wrote:

Yes, looks like a bug to me. Sorry, have nothing to advice anymore.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/enigmampc/catalyst/issues/120#issuecomment-353988779, or mute the thread https://github.com/notifications/unsubscribe-auth/ABZ-QtrS5pgzVzLDbJk7bWjWV1MFGOyzks5tESPJgaJpZM4RM0zv .

caioaao commented 6 years ago

@fredfortier but in this case I'm running the algorithm live. shouldn't it fetch the 5min bars from bittrex API?

fredfortier commented 6 years ago

Yes, in live mode it should. I will take a closer look now. On Tue, Dec 26, 2017 at 11:11 AM Caio Oliveira notifications@github.com wrote:

@fredfortier https://github.com/fredfortier but in this case I'm running the algorithm live. shouldn't it fetch the 5min bars from bittrex API?

— You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub https://github.com/enigmampc/catalyst/issues/120#issuecomment-354002486, or mute the thread https://github.com/notifications/unsubscribe-auth/ABZ-QpXZHbqcJW56hFyZv4BDT5cNZ_K3ks5tEUT4gaJpZM4RM0zv .

kroitor commented 6 years ago

Hi!

Here's a list of symbols supported for Bittrex in CCXT:

mbp:ccxt igorkroitor$ python examples/py/symbols.py bittrex

id              symbol          base            quote          
BTC-1ST         1ST/BTC         1ST             BTC            
ETH-1ST         1ST/ETH         1ST             ETH            
BTC-2GIVE       2GIVE/BTC       2GIVE           BTC            
BTC-ABY         ABY/BTC         ABY             BTC            
BTC-ADA         ADA/BTC         ADA             BTC            
ETH-ADA         ADA/ETH         ADA             ETH            
BTC-ADT         ADT/BTC         ADT             BTC            
ETH-ADT         ADT/ETH         ADT             ETH            
BTC-ADX         ADX/BTC         ADX             BTC            
ETH-ADX         ADX/ETH         ADX             ETH            
BTC-AEON        AEON/BTC        AEON            BTC            
BTC-AGRS        AGRS/BTC        AGRS            BTC            
BTC-AMP         AMP/BTC         AMP             BTC            
BTC-ANT         ANT/BTC         ANT             BTC            
ETH-ANT         ANT/ETH         ANT             ETH            
BTC-APX         APX/BTC         APX             BTC            
BTC-ARDR        ARDR/BTC        ARDR            BTC            
BTC-ARK         ARK/BTC         ARK             BTC            
BTC-AUR         AUR/BTC         AUR             BTC            
BTC-BAT         BAT/BTC         BAT             BTC            
ETH-BAT         BAT/ETH         BAT             ETH            
BTC-BAY         BAY/BTC         BAY             BTC            
BTC-BCC         BCH/BTC         BCH             BTC            
ETH-BCC         BCH/ETH         BCH             ETH            
USDT-BCC        BCH/USDT        BCH             USDT           
BTC-BCY         BCY/BTC         BCY             BTC            
BTC-BITB        BITB/BTC        BITB            BTC            
BTC-BLITZ       BLITZ/BTC       BLITZ           BTC            
BTC-BLK         BLK/BTC         BLK             BTC            
BTC-BLOCK       BLOCK/BTC       BLOCK           BTC            
BTC-BNT         BNT/BTC         BNT             BTC            
ETH-BNT         BNT/ETH         BNT             ETH            
BTC-BRK         BRK/BTC         BRK             BTC            
BTC-BRX         BRX/BTC         BRX             BTC            
BTC-BSD         BSD/BTC         BSD             BTC            
USDT-BTC        BTC/USDT        BTC             USDT           
BTC-BTCD        BTCD/BTC        BTCD            BTC            
BTC-BTG         BTG/BTC         BTG             BTC            
ETH-BTG         BTG/ETH         BTG             ETH            
USDT-BTG        BTG/USDT        BTG             USDT           
BTC-BURST       BURST/BTC       BURST           BTC            
BTC-BYC         BYC/BTC         BYC             BTC            
BTC-CANN        CANN/BTC        CANN            BTC            
BTC-CFI         CFI/BTC         CFI             BTC            
ETH-CFI         CFI/ETH         CFI             ETH            
BTC-CLAM        CLAM/BTC        CLAM            BTC            
BTC-CLOAK       CLOAK/BTC       CLOAK           BTC            
BTC-CLUB        CLUB/BTC        CLUB            BTC            
BTC-COVAL       COVAL/BTC       COVAL           BTC            
BTC-CPC         CPC/BTC         CPC             BTC            
BTC-CRB         CRB/BTC         CRB             BTC            
ETH-CRB         CRB/ETH         CRB             ETH            
BTC-CRW         CRW/BTC         CRW             BTC            
BTC-CURE        CURE/BTC        CURE            BTC            
BTC-CVC         CVC/BTC         CVC             BTC            
ETH-CVC         CVC/ETH         CVC             ETH            
BTC-DASH        DASH/BTC        DASH            BTC            
ETH-DASH        DASH/ETH        DASH            ETH            
USDT-DASH       DASH/USDT       DASH            USDT           
BTC-DCR         DCR/BTC         DCR             BTC            
BTC-DCT         DCT/BTC         DCT             BTC            
BTC-DGB         DGB/BTC         DGB             BTC            
ETH-DGB         DGB/ETH         DGB             ETH            
BTC-DGD         DGD/BTC         DGD             BTC            
ETH-DGD         DGD/ETH         DGD             ETH            
BTC-DMD         DMD/BTC         DMD             BTC            
BTC-DNT         DNT/BTC         DNT             BTC            
ETH-DNT         DNT/ETH         DNT             ETH            
BTC-DOGE        DOGE/BTC        DOGE            BTC            
BTC-DOPE        DOPE/BTC        DOPE            BTC            
BTC-DTB         DTB/BTC         DTB             BTC            
BTC-DYN         DYN/BTC         DYN             BTC            
BTC-EBST        EBST/BTC        EBST            BTC            
BTC-EDG         EDG/BTC         EDG             BTC            
BTC-EFL         EFL/BTC         EFL             BTC            
BTC-EGC         EGC/BTC         EGC             BTC            
BTC-EMC         EMC/BTC         EMC             BTC            
BTC-EMC2        EMC2/BTC        EMC2            BTC            
BTC-ENG         ENG/BTC         ENG             BTC            
ETH-ENG         ENG/ETH         ENG             ETH            
BTC-ENRG        ENRG/BTC        ENRG            BTC            
BTC-ERC         ERC/BTC         ERC             BTC            
BTC-ETC         ETC/BTC         ETC             BTC            
ETH-ETC         ETC/ETH         ETC             ETH            
USDT-ETC        ETC/USDT        ETC             USDT           
BTC-ETH         ETH/BTC         ETH             BTC            
USDT-ETH        ETH/USDT        ETH             USDT           
BTC-EXCL        EXCL/BTC        EXCL            BTC            
BTC-EXP         EXP/BTC         EXP             BTC            
BTC-FAIR        FAIR/BTC        FAIR            BTC            
BTC-FCT         FCT/BTC         FCT             BTC            
ETH-FCT         FCT/ETH         FCT             ETH            
BTC-FLDC        FLDC/BTC        FLDC            BTC            
BTC-FLO         FLO/BTC         FLO             BTC            
BTC-FTC         FTC/BTC         FTC             BTC            
BTC-FUN         FUN/BTC         FUN             BTC            
ETH-FUN         FUN/ETH         FUN             ETH            
BTC-GAM         GAM/BTC         GAM             BTC            
BTC-GAME        GAME/BTC        GAME            BTC            
BTC-GBG         GBG/BTC         GBG             BTC            
BTC-GBYTE       GBYTE/BTC       GBYTE           BTC            
BTC-GCR         GCR/BTC         GCR             BTC            
BTC-GEO         GEO/BTC         GEO             BTC            
BTC-GLD         GLD/BTC         GLD             BTC            
BTC-GNO         GNO/BTC         GNO             BTC            
ETH-GNO         GNO/ETH         GNO             ETH            
BTC-GNT         GNT/BTC         GNT             BTC            
ETH-GNT         GNT/ETH         GNT             ETH            
BTC-GOLOS       GOLOS/BTC       GOLOS           BTC            
BTC-GRC         GRC/BTC         GRC             BTC            
BTC-GRS         GRS/BTC         GRS             BTC            
BTC-GUP         GUP/BTC         GUP             BTC            
ETH-GUP         GUP/ETH         GUP             ETH            
BTC-HMQ         HMQ/BTC         HMQ             BTC            
ETH-HMQ         HMQ/ETH         HMQ             ETH            
BTC-INCNT       INCNT/BTC       INCNT           BTC            
BTC-INFX        INFX/BTC        INFX            BTC            
BTC-IOC         IOC/BTC         IOC             BTC            
BTC-ION         ION/BTC         ION             BTC            
BTC-IOP         IOP/BTC         IOP             BTC            
BTC-KMD         KMD/BTC         KMD             BTC            
BTC-KORE        KORE/BTC        KORE            BTC            
BTC-LBC         LBC/BTC         LBC             BTC            
BTC-LGD         LGD/BTC         LGD             BTC            
ETH-LGD         LGD/ETH         LGD             ETH            
BTC-LMC         LMC/BTC         LMC             BTC            
BTC-LSK         LSK/BTC         LSK             BTC            
BTC-LTC         LTC/BTC         LTC             BTC            
ETH-LTC         LTC/ETH         LTC             ETH            
USDT-LTC        LTC/USDT        LTC             USDT           
BTC-LUN         LUN/BTC         LUN             BTC            
ETH-LUN         LUN/ETH         LUN             ETH            
BTC-MAID        MAID/BTC        MAID            BTC            
BTC-MANA        MANA/BTC        MANA            BTC            
ETH-MANA        MANA/ETH        MANA            ETH            
BTC-MCO         MCO/BTC         MCO             BTC            
ETH-MCO         MCO/ETH         MCO             ETH            
BTC-MEME        MEME/BTC        MEME            BTC            
BTC-MER         MER/BTC         MER             BTC            
BTC-MLN         MLN/BTC         MLN             BTC            
BTC-MONA        MONA/BTC        MONA            BTC            
BTC-MTL         MTL/BTC         MTL             BTC            
ETH-MTL         MTL/ETH         MTL             ETH            
BTC-MUE         MUE/BTC         MUE             BTC            
BTC-MUSIC       MUSIC/BTC       MUSIC           BTC            
BTC-MYST        MYST/BTC        MYST            BTC            
ETH-MYST        MYST/ETH        MYST            ETH            
BTC-NAV         NAV/BTC         NAV             BTC            
BTC-NBT         NBT/BTC         NBT             BTC            
BTC-NEO         NEO/BTC         NEO             BTC            
ETH-NEO         NEO/ETH         NEO             ETH            
USDT-NEO        NEO/USDT        NEO             USDT           
BTC-NEOS        NEOS/BTC        NEOS            BTC            
BTC-NLG         NLG/BTC         NLG             BTC            
BTC-NMR         NMR/BTC         NMR             BTC            
ETH-NMR         NMR/ETH         NMR             ETH            
BTC-NXC         NXC/BTC         NXC             BTC            
BTC-NXS         NXS/BTC         NXS             BTC            
BTC-NXT         NXT/BTC         NXT             BTC            
BTC-OK          OK/BTC          OK              BTC            
BTC-OMG         OMG/BTC         OMG             BTC            
ETH-OMG         OMG/ETH         OMG             ETH            
USDT-OMG        OMG/USDT        OMG             USDT           
BTC-OMNI        OMNI/BTC        OMNI            BTC            
BTC-PART        PART/BTC        PART            BTC            
BTC-PAY         PAY/BTC         PAY             BTC            
ETH-PAY         PAY/ETH         PAY             ETH            
BTC-PDC         PDC/BTC         PDC             BTC            
BTC-PINK        PINK/BTC        PINK            BTC            
BTC-PIVX        PIVX/BTC        PIVX            BTC            
BTC-PKB         PKB/BTC         PKB             BTC            
BTC-POT         POT/BTC         POT             BTC            
BTC-POWR        POWR/BTC        POWR            BTC            
ETH-POWR        POWR/ETH        POWR            ETH            
BTC-PPC         PPC/BTC         PPC             BTC            
BTC-PTC         PTC/BTC         PTC             BTC            
BTC-PTOY        PTOY/BTC        PTOY            BTC            
ETH-PTOY        PTOY/ETH        PTOY            ETH            
BTC-QRL         QRL/BTC         QRL             BTC            
ETH-QRL         QRL/ETH         QRL             ETH            
BTC-QTUM        QTUM/BTC        QTUM            BTC            
ETH-QTUM        QTUM/ETH        QTUM            ETH            
BTC-QWARK       QWARK/BTC       QWARK           BTC            
BTC-RADS        RADS/BTC        RADS            BTC            
BTC-RBY         RBY/BTC         RBY             BTC            
BTC-RCN         RCN/BTC         RCN             BTC            
ETH-RCN         RCN/ETH         RCN             ETH            
BTC-RDD         RDD/BTC         RDD             BTC            
BTC-REP         REP/BTC         REP             BTC            
ETH-REP         REP/ETH         REP             ETH            
BTC-RISE        RISE/BTC        RISE            BTC            
BTC-RLC         RLC/BTC         RLC             BTC            
ETH-RLC         RLC/ETH         RLC             ETH            
BTC-SALT        SALT/BTC        SALT            BTC            
ETH-SALT        SALT/ETH        SALT            ETH            
BTC-SBD         SBD/BTC         SBD             BTC            
BTC-SC          SC/BTC          SC              BTC            
ETH-SC          SC/ETH          SC              ETH            
BTC-SEQ         SEQ/BTC         SEQ             BTC            
BTC-SHIFT       SHIFT/BTC       SHIFT           BTC            
BTC-SIB         SIB/BTC         SIB             BTC            
BTC-SLR         SLR/BTC         SLR             BTC            
BTC-SLS         SLS/BTC         SLS             BTC            
BTC-SNRG        SNRG/BTC        SNRG            BTC            
BTC-SNT         SNT/BTC         SNT             BTC            
ETH-SNT         SNT/ETH         SNT             ETH            
BTC-SPHR        SPHR/BTC        SPHR            BTC            
BTC-SPR         SPR/BTC         SPR             BTC            
BTC-START       START/BTC       START           BTC            
BTC-STEEM       STEEM/BTC       STEEM           BTC            
BTC-STORJ       STORJ/BTC       STORJ           BTC            
ETH-STORJ       STORJ/ETH       STORJ           ETH            
BTC-STRAT       STRAT/BTC       STRAT           BTC            
ETH-STRAT       STRAT/ETH       STRAT           ETH            
BTC-SWIFT       SWIFT/BTC       SWIFT           BTC            
BTC-SWT         SWT/BTC         SWT             BTC            
BTC-SYNX        SYNX/BTC        SYNX            BTC            
BTC-SYS         SYS/BTC         SYS             BTC            
BTC-THC         THC/BTC         THC             BTC            
BTC-TIX         TIX/BTC         TIX             BTC            
ETH-TIX         TIX/ETH         TIX             ETH            
BTC-TKS         TKS/BTC         TKS             BTC            
BTC-TRIG        TRIG/BTC        TRIG            BTC            
BTC-TRST        TRST/BTC        TRST            BTC            
ETH-TRST        TRST/ETH        TRST            ETH            
BTC-TRUST       TRUST/BTC       TRUST           BTC            
BTC-TX          TX/BTC          TX              BTC            
BTC-UBQ         UBQ/BTC         UBQ             BTC            
BTC-UNB         UNB/BTC         UNB             BTC            
BTC-VIA         VIA/BTC         VIA             BTC            
BTC-VIB         VIB/BTC         VIB             BTC            
ETH-VIB         VIB/ETH         VIB             ETH            
BTC-VOX         VOX/BTC         VOX             BTC            
BTC-VRC         VRC/BTC         VRC             BTC            
BTC-VRM         VRM/BTC         VRM             BTC            
BTC-VTC         VTC/BTC         VTC             BTC            
BTC-VTR         VTR/BTC         VTR             BTC            
BTC-WAVES       WAVES/BTC       WAVES           BTC            
ETH-WAVES       WAVES/ETH       WAVES           ETH            
BTC-WINGS       WINGS/BTC       WINGS           BTC            
ETH-WINGS       WINGS/ETH       WINGS           ETH            
BTC-XCP         XCP/BTC         XCP             BTC            
BTC-XDN         XDN/BTC         XDN             BTC            
BTC-XEL         XEL/BTC         XEL             BTC            
BTC-XEM         XEM/BTC         XEM             BTC            
ETH-XEM         XEM/ETH         XEM             ETH            
BTC-XLM         XLM/BTC         XLM             BTC            
ETH-XLM         XLM/ETH         XLM             ETH            
BTC-XMG         XMG/BTC         XMG             BTC            
BTC-XMR         XMR/BTC         XMR             BTC            
ETH-XMR         XMR/ETH         XMR             ETH            
USDT-XMR        XMR/USDT        XMR             USDT           
BTC-XMY         XMY/BTC         XMY             BTC            
BTC-XRP         XRP/BTC         XRP             BTC            
ETH-XRP         XRP/ETH         XRP             ETH            
USDT-XRP        XRP/USDT        XRP             USDT           
BTC-XST         XST/BTC         XST             BTC            
BTC-XVC         XVC/BTC         XVC             BTC            
BTC-XVG         XVG/BTC         XVG             BTC            
BTC-XWC         XWC/BTC         XWC             BTC            
BTC-XZC         XZC/BTC         XZC             BTC            
BTC-ZCL         ZCL/BTC         ZCL             BTC            
BTC-ZEC         ZEC/BTC         ZEC             BTC            
ETH-ZEC         ZEC/ETH         ZEC             ETH            
USDT-ZEC        ZEC/USDT        ZEC             USDT           
BTC-ZEN         ZEN/BTC         ZEN             BTC            
mbp:ccxt igorkroitor$ 

The list is generated by running this script: https://github.com/ccxt/ccxt/blob/master/examples/py/symbols.py

In CCXT the BCC is substituted for a more common BCH (which is also the coinmarketcap "standard" for Bitcoin Cash).

If you don't want CCXT to do that substitution, you can override the default exchange.commonCurrencyCode(currency) method or set the exchange.substituteCommonCurrencyCodes = False.

Bittrex uses the inherited implementation of that method from the ccxt.Exchange base class:

    def common_currency_code(self, currency):
        if not self.substituteCommonCurrencyCodes:
            return currency
        if currency == 'XBT':
            return 'BTC'
        if currency == 'BCC':
            return 'BCH'
        if currency == 'DRK':
            return 'DASH'
        return currency

↑ These substitutions are common for most of exchanges. The above logic is described here: https://github.com/ccxt/ccxt/wiki/Manual#naming-consistency

Hope it helps!

fredfortier commented 6 years ago

Thanks @kroitor ! I was just about to check on your side when I noticed your answer. We'll include the same substitution in Catalyst ASAP. Currently, requesting bch_usdt fails the catalyst safeguard but we are currently working on better integrating our pricing data repository with CCXT. We'll update this issue very shortly.

fredfortier commented 6 years ago

I'm improving the structure of Catalyst symbol.json to more thoroughly integrate with CCXT. Basically, we'll create a config.json file for each exchange on the server based on the CCXT markets and availability of historical data in our repository, we'll update it periodically. Each Catalyst client will download and de-serialize this file only instead having to download symbols.json then merge with the CCXT markets. This simplifies the code and helps with performance by minimizing "markets" queries to each exchange.

We've also created a some unit tests to determine which exchanges have the required feature to work with Catalyst which we are incorporating in the config.

This approach also gives us sufficient separation of concerns to add non-CCXT exchanges to Catalyst if needed for pragmatic reasons.

fredfortier commented 6 years ago

We've simplified this a lot. It will take care of this issue. We'll do a release today without this, then another one shortly thereafter when we have tested sufficiently.

kroitor commented 6 years ago

@fredfortier great! ) Let us know if we can help with anything on behalf of ccxt. We are also doing some improvements for stability and fixing the inconsistencies. Please, make sure to update dependencies regularly. Thank you! Happy holidays!)

fredfortier commented 6 years ago

@kroitor appreciated as usual. This particular change is related to unifying the CCXT market data with you Catalyst repository. We have a repository of daily and minute price data integrated with Catalyst which people can use to backtest. Integrating with CCXT gives us an opportunity to refine this component. I'll make sure to update the CCXT lib and re-run unit tests.

fredfortier commented 6 years ago

Implemented with substitution mapping for now. We will clean this up soon when better integrating CCXT to data ingestion components.

kroitor commented 6 years ago

@fredfortier that's great news! Thx!

fredfortier commented 6 years ago

Fixed on 0.4.6 please re-open if you still notice an issue.