mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-22 07:26:50 +00:00
Added currency toggling config support for remaining Exchanges.
This commit is contained in:
@@ -23,7 +23,7 @@ A cryptocurrency trading bot supporting multiple exchanges written in Golang.
|
||||
** NA means not applicable as the Exchange does not support the feature.
|
||||
|
||||
## Current Features
|
||||
+ Support for BTC/LTC primarily, will be expanded to the available exchanges cryptocurrencies.
|
||||
+ Support for all Exchange fiat and digital currencies.
|
||||
+ REST API support for all exchanges.
|
||||
+ Ability to turn off/on certain exchanges.
|
||||
+ Ability to adjust manual polling timer for exchanges.
|
||||
|
||||
@@ -98,8 +98,8 @@
|
||||
},
|
||||
{
|
||||
"Name": "Cryptsy",
|
||||
"AvailablePairs": "42BTC,42XRP,ACBTC,ACXRP,ACOINBTC,ADTLTC,AEROBTC,AEROXRP,AGSBTC,ALFBTC,ALNBTC,ALNXRP,AMCBTC,ANCBTC,ANCLTC,ANCXRP,APEXBTC,APEXXRP,ARCHBTC,ARGBTC,ARGXRP,ARIBTC,ASCLTC,AURBTC,AURLTC,AURXRP,AXRBTC,BATLTC,BCXBTC,BENBTC,BETBTC,BITBBTC,BLKBTC,BLKLTC,BLKXRP,BLUBTC,BLUXRP,BNCRBTC,BOSTBTC,BQCBTC,BTBBTC,BTBXRP,BTCUSD,BTCDBTC,BTCDXRP,BTEBTC,BTGBTC,BTGXRP,BTMBTC,BTMXRP,BUKBTC,CACHBTC,CAIxBTC,CANNBTC,CANNXRP,CAPBTC,CAPXRP,CASHBTC,CATBTC,CBXBTC,CBXLTC,CBXXRP,CCNBTC,CENTXRP,CINBTC,CINNIBTC,CKCBTC,CKCXRP,CLAMBTC,CLOAKBTC,CLOAKLTC,CLOAKXRP,CLRBTC,CLRXRP,CMCBTC,CNCBTC,CNCLTC,CNCXRP,CNLBTC,COLLTC,COLXRP,COMMBTC,COOLBTC,CPRLTC,CRACKBTC,CRACKXRP,CRAIGBTC,CRAIGXRP,CRCBTC,CRYPTBTC,CRYPTLTC,CRYPTXRP,CSCBTC,CTMLTC,DBLLTC,DEMBTC,DEMXRP,DGBBTC,DGBXRP,DGCBTC,DGCLTC,DGCXRP,DIMELTC,DMCLTC,DMDBTC,DMDXRP,DOGEBTC,DOGELTC,DOGEUSD,DOGEXRP,DOGEDBTC,DRKBTC,DRKLTC,DRKUSD,DRKXRP,DRKCBTC,DRKCXRP,DSBBTC,DTBTC,DTXRP,DVCBTC,DVCLTC,DVCXRP,EACBTC,EACLTC,EACXRP,EFLBTC,ELCBTC,ELPLTC,EMC2BTC,EMC2XRP,EMDBTC,EXCLBTC,EXEBTC,EXEXRP,EZCBTC,EZCLTC,FC2BTC,FFCBTC,FFCXRP,FIBREBTC,FIBREXRP,FLAPLTC,FLAPXRP,FLOLTC,FLOXRP,FLTBTC,FLTXRP,FRACBTC,FRCBTC,FRCXRP,FRKBTC,FRKLTC,FRKXRP,FSTBTC,FSTLTC,FTCBTC,FTCLTC,FTCUSD,FTCXRP,GBBTC,GBXRP,GDCBTC,GLCBTC,GLDBTC,GLDLTC,GLDXRP,GLXBTC,GLYPHBTC,GLYPHLTC,GLYPHXRP,GMELTC,GMLBTC,GUEBTC,GUELTC,HALBTC,HALXRP,HBNBTC,HBNXRP,HTML5LTC,HTML5XRP,HUCBTC,HUCXRP,HVCBTC,HVCXRP,HYPBTC,ICBBTC,ICBXRP,IFCBTC,IFCLTC,IFCXRP,IOCBTC,IOCXRP,IXCBTC,IXCXRP,JBSBTC,JKCBTC,JUDGEBTC,JUDGEXRP,KARMLTC,KARMXRP,KDCBTC,KEYBTC,KEYXRP,KGCBTC,LABBTC,LEAFLTC,LEAFXRP,LGDBTC,LK7BTC,LKYBTC,LKYXRP,LOTLTC,LOTXRP,LSDBTC,LSDXRP,LTBBTC,LTBXRP,LTCBTC,LTCUSD,LTCXRP,LTCDBTC,LTCDXRP,LTCXBTC,LTCXLTC,LXCBTC,LXCXRP,LYCBTC,MAXBTC,MAXLTC,MAXXRP,MECBTC,MECLTC,MECXRP,MEDBTC,MEMLTC,MEOWLTC,MEOWXRP,MINBTC,MINTBTC,MINTXRP,MNBTC,MNCBTC,MNCXRP,MNEBTC,MOONLTC,MOONXRP,MRYBTC,MRYXRP,MSTLTC,MYRBTC,MYRXRP,MYSTBTC,MZCBTC,MZCXRP,NANBTC,NAUTBTC,NAUTXRP,NAVBTC,NAVXRP,NBLBTC,NECBTC,NECXRP,NETBTC,NETLTC,NETXRP,NMBBTC,NMBXRP,NMCBTC,NMCXRP,NOBLBTC,NRBBTC,NRSBTC,NVCBTC,NVCXRP,NXTBTC,NXTLTC,NXTUSD,NXTXRP,NYANBTC,NYANLTC,OPALBTC,OPALXRP,ORBBTC,ORBXRP,OSCBTC,OSCXRP,PHSBTC,PHSXRP,PointsBTC,POTBTC,POTXRP,PPCBTC,PPCLTC,PPCUSD,PPCXRP,PSEUDBTC,PTSBTC,PTSXRP,PXCBTC,PXCLTC,PXCXRP,PYCBTC,QRKBTC,QRKLTC,QRKXRP,RBBTLTC,RDDBTC,RDDLTC,RDDUSD,RDDXRP,REDLTC,RIPOBTC,RPCBTC,RT2BTC,RYCBTC,RZRBTC,RZRLTC,RZRXRP,SAT2BTC,SBCBTC,SBCLTC,SDCBTC,SDCXRP,SFRBTC,SFRXRP,SHADEBTC,SHADEXRP,SHLDBTC,SILKBTC,SILKXRP,SLGBTC,SLGXRP,SMCBTC,SOLEBTC,SPABTC,SPAXRP,SPTBTC,SRCBTC,SRCXRP,SSVBTC,SSVXRP,STRBTC,SUPERBTC,SUPERLTC,SUPERXRP,SWIFTBTC,SXCBTC,SXCLTC,SXCXRP,SYNCBTC,SYSBTC,SYSXRP,TAGBTC,TAGXRP,TAKBTC,TEKBTC,TEKXRP,TESBTC,TESLTC,TESXRP,TGCBTC,TIPSLTC,TIPSXRP,TITBTC,TIXLTC,TORBTC,TRCBTC,TRCXRP,TTCBTC,ULTCBTC,UNBBTC,UNBXRP,UNOBTC,UNOXRP,UROBTC,UROXRP,USDeBTC,USDeXRP,UTCBTC,UTCXRP,UTILBTC,VDOBTC,VIABTC,VIAXRP,VOOTBTC,VRCBTC,VRCLTC,VRCXRP,VTCBTC,VTCLTC,VTCXRP,WCBTC,WCXRP,WDCBTC,WDCLTC,WDCXRP,XAIBTC,XBOTBTC,XBOTXRP,XCBTC,XCLTC,XCXRP,XCASHBTC,XCRBTC,XCRXRP,XJOBTC,XLBBTC,XNCLTC,XPMBTC,XPMLTC,XPMXRP,XPYBTC,XPYUSD,XRPBTC,XRPUSD,XSTBTC,XSTXRP,XXXBTC,XXXXRP,YACBTC,YACLTC,YACXRP,YBCBTC,ZCCBTC,ZEDBTC,ZEITLTC,ZEITXRP,ZETBTC,ZETLTC,ZETXRP,ZRCBTC,ZRCUSD",
|
||||
"EnabledPairs": "42BTC,42XRP,ACBTC,ACXRP,ACOINBTC,ADTLTC,AEROBTC,AEROXRP,AGSBTC,ALFBTC,ALNBTC,ALNXRP,AMCBTC,ANCBTC,ANCLTC,ANCXRP,APEXBTC,APEXXRP,ARCHBTC,ARGBTC,ARGXRP,ARIBTC,ASCLTC,AURBTC,AURLTC,AURXRP,AXRBTC,BATLTC,BCXBTC,BENBTC,BETBTC,BITBBTC,BLKBTC,BLKLTC,BLKXRP,BLUBTC,BLUXRP,BNCRBTC,BOSTBTC,BQCBTC,BTBBTC,BTBXRP,BTCUSD,BTCDBTC,BTCDXRP,BTEBTC,BTGBTC,BTGXRP,BTMBTC,BTMXRP,BUKBTC,CACHBTC,CAIxBTC,CANNBTC,CANNXRP,CAPBTC,CAPXRP,CASHBTC,CATBTC,CBXBTC,CBXLTC,CBXXRP,CCNBTC,CENTXRP,CINBTC,CINNIBTC,CKCBTC,CKCXRP,CLAMBTC,CLOAKBTC,CLOAKLTC,CLOAKXRP,CLRBTC,CLRXRP,CMCBTC,CNCBTC,CNCLTC,CNCXRP,CNLBTC,COLLTC,COLXRP,COMMBTC,COOLBTC,CPRLTC,CRACKBTC,CRACKXRP,CRAIGBTC,CRAIGXRP,CRCBTC,CRYPTBTC,CRYPTLTC,CRYPTXRP,CSCBTC,CTMLTC,DBLLTC,DEMBTC,DEMXRP,DGBBTC,DGBXRP,DGCBTC,DGCLTC,DGCXRP,DIMELTC,DMCLTC,DMDBTC,DMDXRP,DOGEBTC,DOGELTC,DOGEUSD,DOGEXRP,DOGEDBTC,DRKBTC,DRKLTC,DRKUSD,DRKXRP,DRKCBTC,DRKCXRP,DSBBTC,DTBTC,DTXRP,DVCBTC,DVCLTC,DVCXRP,EACBTC,EACLTC,EACXRP,EFLBTC,ELCBTC,ELPLTC,EMC2BTC,EMC2XRP,EMDBTC,EXCLBTC,EXEBTC,EXEXRP,EZCBTC,EZCLTC,FC2BTC,FFCBTC,FFCXRP,FIBREBTC,FIBREXRP,FLAPLTC,FLAPXRP,FLOLTC,FLOXRP,FLTBTC,FLTXRP,FRACBTC,FRCBTC,FRCXRP,FRKBTC,FRKLTC,FRKXRP,FSTBTC,FSTLTC,FTCBTC,FTCLTC,FTCUSD,FTCXRP,GBBTC,GBXRP,GDCBTC,GLCBTC,GLDBTC,GLDLTC,GLDXRP,GLXBTC,GLYPHBTC,GLYPHLTC,GLYPHXRP,GMELTC,GMLBTC,GUEBTC,GUELTC,HALBTC,HALXRP,HBNBTC,HBNXRP,HTML5LTC,HTML5XRP,HUCBTC,HUCXRP,HVCBTC,HVCXRP,HYPBTC,ICBBTC,ICBXRP,IFCBTC,IFCLTC,IFCXRP,IOCBTC,IOCXRP,IXCBTC,IXCXRP,JBSBTC,JKCBTC,JUDGEBTC,JUDGEXRP,KARMLTC,KARMXRP,KDCBTC,KEYBTC,KEYXRP,KGCBTC,LABBTC,LEAFLTC,LEAFXRP,LGDBTC,LK7BTC,LKYBTC,LKYXRP,LOTLTC,LOTXRP,LSDBTC,LSDXRP,LTBBTC,LTBXRP,LTCBTC,LTCUSD,LTCXRP,LTCDBTC,LTCDXRP,LTCXBTC,LTCXLTC,LXCBTC,LXCXRP,LYCBTC,MAXBTC,MAXLTC,MAXXRP,MECBTC,MECLTC,MECXRP,MEDBTC,MEMLTC,MEOWLTC,MEOWXRP,MINBTC,MINTBTC,MINTXRP,MNBTC,MNCBTC,MNCXRP,MNEBTC,MOONLTC,MOONXRP,MRYBTC,MRYXRP,MSTLTC,MYRBTC,MYRXRP,MYSTBTC,MZCBTC,MZCXRP,NANBTC,NAUTBTC,NAUTXRP,NAVBTC,NAVXRP,NBLBTC,NECBTC,NECXRP,NETBTC,NETLTC,NETXRP,NMBBTC,NMBXRP,NMCBTC,NMCXRP,NOBLBTC,NRBBTC,NRSBTC,NVCBTC,NVCXRP,NXTBTC,NXTLTC,NXTUSD,NXTXRP,NYANBTC,NYANLTC,OPALBTC,OPALXRP,ORBBTC,ORBXRP,OSCBTC,OSCXRP,PHSBTC,PHSXRP,PointsBTC,POTBTC,POTXRP,PPCBTC,PPCLTC,PPCUSD,PPCXRP,PSEUDBTC,PTSBTC,PTSXRP,PXCBTC,PXCLTC,PXCXRP,PYCBTC,QRKBTC,QRKLTC,QRKXRP,RBBTLTC,RDDBTC,RDDLTC,RDDUSD,RDDXRP,REDLTC,RIPOBTC,RPCBTC,RT2BTC,RYCBTC,RZRBTC,RZRLTC,RZRXRP,SAT2BTC,SBCBTC,SBCLTC,SDCBTC,SDCXRP,SFRBTC,SFRXRP,SHADEBTC,SHADEXRP,SHLDBTC,SILKBTC,SILKXRP,SLGBTC,SLGXRP,SMCBTC,SOLEBTC,SPABTC,SPAXRP,SPTBTC,SRCBTC,SRCXRP,SSVBTC,SSVXRP,STRBTC,SUPERBTC,SUPERLTC,SUPERXRP,SWIFTBTC,SXCBTC,SXCLTC,SXCXRP,SYNCBTC,SYSBTC,SYSXRP,TAGBTC,TAGXRP,TAKBTC,TEKBTC,TEKXRP,TESBTC,TESLTC,TESXRP,TGCBTC,TIPSLTC,TIPSXRP,TITBTC,TIXLTC,TORBTC,TRCBTC,TRCXRP,TTCBTC,ULTCBTC,UNBBTC,UNBXRP,UNOBTC,UNOXRP,UROBTC,UROXRP,USDeBTC,USDeXRP,UTCBTC,UTCXRP,UTILBTC,VDOBTC,VIABTC,VIAXRP,VOOTBTC,VRCBTC,VRCLTC,VRCXRP,VTCBTC,VTCLTC,VTCXRP,WCBTC,WCXRP,WDCBTC,WDCLTC,WDCXRP,XAIBTC,XBOTBTC,XBOTXRP,XCBTC,XCLTC,XCXRP,XCASHBTC,XCRBTC,XCRXRP,XJOBTC,XLBBTC,XNCLTC,XPMBTC,XPMLTC,XPMXRP,XPYBTC,XPYUSD,XRPBTC,XRPUSD,XSTBTC,XSTXRP,XXXBTC,XXXXRP,YACBTC,YACLTC,YACXRP,YBCBTC,ZCCBTC,ZEDBTC,ZEITLTC,ZEITXRP,ZETBTC,ZETLTC,ZETXRP,ZRCBTC,ZRCUSD",
|
||||
"AvailablePairs": "AEROXRP,DBLLTC,GLYPHLTC,GMLBTC,HBNBTC,MNCBTC,MOONXRP,CKCBTC,LGDBTC,PXCLTC,XBSBTC,DMDXRP,ARIBTC,BTCEUR,CINBTC,CLOAKLTC,CRYPTLTC,DGCBTC,DMCLTC,EKNBTC,ICBBTC,NMCBTC,SRCBTC,SXCLTC,SFRBTC,ADTLTC,AGSBTC,DEMXRP,EFLBTC,IOCBTC,PHSBTC,PXCBTC,TITBTC,ZRCBTC,VIABTC,GDCBTC,IFCBTC,JKCBTC,MYRBTC,NBLBTC,STARTBTC,TESBTC,ZEDBTC,ASCLTC,BLKBTC,GLDLTC,LSDBTC,TRCBTC,UROXRP,XPMBTC,SPABTC,BTCUSD,IXCBTC,MNEBTC,MRYBTC,MSTLTC,NXTBTC,PPCXRP,IXCXRP,BENBTC,COLXRP,CRAVEBTC,DGBBTC,EMC2BTC,GMELTC,HALBTC,MECLTC,NMBBTC,NXTXRP,SPAXRP,VRCBTC,UROBTC,CCNBTC,COLLTC,DOGEXRP,KDCBTC,LTCUSD,MINBTC,NXTLTC,DOGEBTC,FSTLTC,IFCXRP,MEMLTC,MYRXRP,PPCLTC,VIAXRP,TESLTC,DEMBTC,DGBXRP,EMC2XRP,IFCLTC,NAUTBTC,NECBTC,RYCBTC,VRCXRP,XAUBTC,NMCXRP,ALFBTC,BTEBTC,CPRLTC,DGCXRP,EACLTC,GLXBTC,ICBXRP,PSEUDBTC,SRCXRP,SUPERLTC,VTCLTC,GLCBTC,ARGBTC,BLKXRP,CLOAKBTC,CRYPTBTC,CYPBTC,DGCLTC,FLOXRP,PYCBTC,SAT2BTC,SXCBTC,TRCXRP,XPMXRP,KGCBTC,LABBTC,MECBTC,RDDUSD,TIXLTC,VRCLTC,EMDBTC,GLYPHBTC,MEDBTC,UTCBTC,LTBXRP,SHLDBTC,XCLTC,SDCBTC,BTBBTC,CATBTC,CKCXRP,CTMLTC,LYCBTC,PPCUSD,RZRLTC,SSVBTC,YBCBTC,AURXRP,NETBTC,SLGXRP,SWIFTBTC,TEKXRP,XSTBTC,TGCBTC,ACOINBTC,AURLTC,BQCBTC,CRCBTC,DOGEUSD,EZCLTC,SBCBTC,XLBBTC,DSBBTC,8BITBTC,ALNBTC,AXRBTC,BCXBTC,BLUBTC,BTMBTC,CADUSD,WBBBTC,EURUSD,JBSBTC,LTCBTC,NETLTC,NVCBTC,SHADEBTC,SYSBTC,UNBXRP,ANCBTC,CAPBTC,CLRXRP,HVCXRP,LKYBTC,MZCBTC,TAGBTC,UNOBTC,WDCBTC,FRKLTC,GUEBTC,KEYBTC,POTBTC,STRBTC,YACBTC,ZETBTC,APEXBTC,BUKBTC,CRACKBTC,MAXBTC,RDDBTC,XAIBTC,SPTBTC,CBXLTC,FRCBTC,LXCBTC,MAXXRP,PTSBTC,RDDXRP,REDLTC,ZRCUSD,EACXRP,HUCBTC,JUDGEXRP,MAXLTC,RDDLTC,TAKBTC,VTCXRP,RPCBTC,CAIxBTC,CAPXRP,CINNIBTC,EACBTC,HTML5XRP,JUDGEBTC,MZCXRP,SUPERBTC,UNOXRP,VTCBTC,WDCXRP,ANCLTC,FLTBTC,FRCXRP,HTML5LTC,NRBBTC,WDCLTC,BATLTC,DVCLTC,FTCLTC,LOTLTC,LTCDBTC,SLGBTC,AURBTC,CRAIGBTC,EXEBTC,EZCBTC,KEYXRP,POTXRP,SBCLTC,TEKBTC,XXXBTC,YACXRP,ZCCBTC,ZETXRP,UNBBTC,BETBTC,BTBXRP,CBXBTC,CLRBTC,HVCBTC,NXTUSD,OSCBTC,VDOBTC,XJOBTC,LTBBTC,RZRBTC,XRPBTC,LTCXBTC,NANBTC,NETXRP,BTCDBTC,SOLEBTC,WCXRP,DRKCBTC,MINTBTC,NYANLTC,BITBBTC,KARMLTC,FIBREBTC,XCBTC,ACBTC,DASHBTC,CASHBTC,DASHXRP,NAVBTC,ZEITXRP,DASHLTC,DVCXRP,EXCLBTC,FTCXRP,OPALBTC,ZEITLTC,XPYBTC,AMCBTC,BTGBTC,CENTXRP,CSCBTC,DVCBTC,FTCBTC,TIPSXRP,DTBTC,FLAPXRP,FRACBTC,NAVXRP,TIPSLTC,ULTCBTC,ELPLTC,MINTXRP,NYANBTC,WCBTC,XCXRP,COOLBTC,FLAPLTC,NOBLBTC,ALNXRP,BLUXRP,LTCXRP,NVCXRP,SYSXRP,XCRBTC,BLKLTC,CMCBTC,DMDBTC,FLOLTC,GLDBTC,NRSBTC,TORBTC,XPMLTC,BTCDXRP,KARMXRP,QRKBTC,RT2BTC,42XRP,AEROBTC,GBBTC,XBOTBTC,XCASHBTC,BOSTBTC,FTCUSD,RBBTLTC,XPYUSD,DIMELTC,MNBTC,MOONLTC,SYNCBTC,DOGEDBTC,FC2BTC,LTCXLTC,MONABTC,MYSTBTC,XRPUSD,CNCBTC,COMMBTC,ELCBTC,UTILBTC,007BTC,CACHBTC,CNCXRP,LEAFXRP,TRONBTC,CNCLTC,LEAFLTC,BNCRBTC,SILKBTC,BTCCAD,CANNBTC,LK7BTC,VOOTBTC,DOGELTC,FFCBTC,FSTBTC,HYPBTC,ORBBTC,PPCBTC,TTCBTC,42BTC,MEOWLTC,NTRNBTC,CLAMBTC,CNLBTC,DASHUSD,QRKXRP,ARCHBTC,QRKLTC,RIPOBTC,XNCLTC,FRKBTC,GUELTC,PointsBTC,SLINGBTC,SMCBTC,USDeBTC,UTCXRP,YACLTC,ZETLTC",
|
||||
"EnabledPairs": "AEROXRP,DBLLTC,GLYPHLTC,GMLBTC,HBNBTC,MNCBTC,MOONXRP,CKCBTC,LGDBTC,PXCLTC,XBSBTC,DMDXRP,ARIBTC,BTCEUR,CINBTC,CLOAKLTC,CRYPTLTC,DGCBTC,DMCLTC,EKNBTC,ICBBTC,NMCBTC,SRCBTC,SXCLTC,SFRBTC,ADTLTC,AGSBTC,DEMXRP,EFLBTC,IOCBTC,PHSBTC,PXCBTC,TITBTC,ZRCBTC,VIABTC,GDCBTC,IFCBTC,JKCBTC,MYRBTC,NBLBTC,STARTBTC,TESBTC,ZEDBTC,ASCLTC,BLKBTC,GLDLTC,LSDBTC,TRCBTC,UROXRP,XPMBTC,SPABTC,BTCUSD,IXCBTC,MNEBTC,MRYBTC,MSTLTC,NXTBTC,PPCXRP,IXCXRP,BENBTC,COLXRP,CRAVEBTC,DGBBTC,EMC2BTC,GMELTC,HALBTC,MECLTC,NMBBTC,NXTXRP,SPAXRP,VRCBTC,UROBTC,CCNBTC,COLLTC,DOGEXRP,KDCBTC,LTCUSD,MINBTC,NXTLTC,DOGEBTC,FSTLTC,IFCXRP,MEMLTC,MYRXRP,PPCLTC,VIAXRP,TESLTC,DEMBTC,DGBXRP,EMC2XRP,IFCLTC,NAUTBTC,NECBTC,RYCBTC,VRCXRP,XAUBTC,NMCXRP,ALFBTC,BTEBTC,CPRLTC,DGCXRP,EACLTC,GLXBTC,ICBXRP,PSEUDBTC,SRCXRP,SUPERLTC,VTCLTC,GLCBTC,ARGBTC,BLKXRP,CLOAKBTC,CRYPTBTC,CYPBTC,DGCLTC,FLOXRP,PYCBTC,SAT2BTC,SXCBTC,TRCXRP,XPMXRP,KGCBTC,LABBTC,MECBTC,RDDUSD,TIXLTC,VRCLTC,EMDBTC,GLYPHBTC,MEDBTC,UTCBTC,LTBXRP,SHLDBTC,XCLTC,SDCBTC,BTBBTC,CATBTC,CKCXRP,CTMLTC,LYCBTC,PPCUSD,RZRLTC,SSVBTC,YBCBTC,AURXRP,NETBTC,SLGXRP,SWIFTBTC,TEKXRP,XSTBTC,TGCBTC,ACOINBTC,AURLTC,BQCBTC,CRCBTC,DOGEUSD,EZCLTC,SBCBTC,XLBBTC,DSBBTC,8BITBTC,ALNBTC,AXRBTC,BCXBTC,BLUBTC,BTMBTC,CADUSD,WBBBTC,EURUSD,JBSBTC,LTCBTC,NETLTC,NVCBTC,SHADEBTC,SYSBTC,UNBXRP,ANCBTC,CAPBTC,CLRXRP,HVCXRP,LKYBTC,MZCBTC,TAGBTC,UNOBTC,WDCBTC,FRKLTC,GUEBTC,KEYBTC,POTBTC,STRBTC,YACBTC,ZETBTC,APEXBTC,BUKBTC,CRACKBTC,MAXBTC,RDDBTC,XAIBTC,SPTBTC,CBXLTC,FRCBTC,LXCBTC,MAXXRP,PTSBTC,RDDXRP,REDLTC,ZRCUSD,EACXRP,HUCBTC,JUDGEXRP,MAXLTC,RDDLTC,TAKBTC,VTCXRP,RPCBTC,CAIxBTC,CAPXRP,CINNIBTC,EACBTC,HTML5XRP,JUDGEBTC,MZCXRP,SUPERBTC,UNOXRP,VTCBTC,WDCXRP,ANCLTC,FLTBTC,FRCXRP,HTML5LTC,NRBBTC,WDCLTC,BATLTC,DVCLTC,FTCLTC,LOTLTC,LTCDBTC,SLGBTC,AURBTC,CRAIGBTC,EXEBTC,EZCBTC,KEYXRP,POTXRP,SBCLTC,TEKBTC,XXXBTC,YACXRP,ZCCBTC,ZETXRP,UNBBTC,BETBTC,BTBXRP,CBXBTC,CLRBTC,HVCBTC,NXTUSD,OSCBTC,VDOBTC,XJOBTC,LTBBTC,RZRBTC,XRPBTC,LTCXBTC,NANBTC,NETXRP,BTCDBTC,SOLEBTC,WCXRP,DRKCBTC,MINTBTC,NYANLTC,BITBBTC,KARMLTC,FIBREBTC,XCBTC,ACBTC,DASHBTC,CASHBTC,DASHXRP,NAVBTC,ZEITXRP,DASHLTC,DVCXRP,EXCLBTC,FTCXRP,OPALBTC,ZEITLTC,XPYBTC,AMCBTC,BTGBTC,CENTXRP,CSCBTC,DVCBTC,FTCBTC,TIPSXRP,DTBTC,FLAPXRP,FRACBTC,NAVXRP,TIPSLTC,ULTCBTC,ELPLTC,MINTXRP,NYANBTC,WCBTC,XCXRP,COOLBTC,FLAPLTC,NOBLBTC,ALNXRP,BLUXRP,LTCXRP,NVCXRP,SYSXRP,XCRBTC,BLKLTC,CMCBTC,DMDBTC,FLOLTC,GLDBTC,NRSBTC,TORBTC,XPMLTC,BTCDXRP,KARMXRP,QRKBTC,RT2BTC,42XRP,AEROBTC,GBBTC,XBOTBTC,XCASHBTC,BOSTBTC,FTCUSD,RBBTLTC,XPYUSD,DIMELTC,MNBTC,MOONLTC,SYNCBTC,DOGEDBTC,FC2BTC,LTCXLTC,MONABTC,MYSTBTC,XRPUSD,CNCBTC,COMMBTC,ELCBTC,UTILBTC,007BTC,CACHBTC,CNCXRP,LEAFXRP,TRONBTC,CNCLTC,LEAFLTC,BNCRBTC,SILKBTC,BTCCAD,CANNBTC,LK7BTC,VOOTBTC,DOGELTC,FFCBTC,FSTBTC,HYPBTC,ORBBTC,PPCBTC,TTCBTC,42BTC,MEOWLTC,NTRNBTC,CLAMBTC,CNLBTC,DASHUSD,QRKXRP,ARCHBTC,QRKLTC,RIPOBTC,XNCLTC,FRKBTC,GUELTC,PointsBTC,SLINGBTC,SMCBTC,USDeBTC,UTCXRP,YACLTC,ZETLTC",
|
||||
"ClientID": "Password",
|
||||
"APIKey": "Key",
|
||||
"APISecret": "Secret",
|
||||
|
||||
127
cryptsyhttp.go
127
cryptsyhttp.go
@@ -1,6 +1,7 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/url"
|
||||
@@ -41,6 +42,10 @@ type Cryptsy struct {
|
||||
BaseCurrencies []string
|
||||
AvailablePairs []string
|
||||
EnabledPairs []string
|
||||
Market map[string]CryptsyMarket
|
||||
Ticker map[string]CryptsyTicker
|
||||
Volume map[string]CryptsyVolume
|
||||
Currencies map[string]CryptsyCurrency
|
||||
}
|
||||
|
||||
type CryptsyMarket struct {
|
||||
@@ -136,6 +141,10 @@ func (c *Cryptsy) SetDefaults() {
|
||||
c.MakerFee = 0.33
|
||||
c.Verbose = false
|
||||
c.RESTPollingDelay = 10
|
||||
c.Market = make(map[string]CryptsyMarket)
|
||||
c.Ticker = make(map[string]CryptsyTicker)
|
||||
c.Volume = make(map[string]CryptsyVolume)
|
||||
c.Currencies = make(map[string]CryptsyCurrency)
|
||||
}
|
||||
|
||||
func (c *Cryptsy) GetName() string {
|
||||
@@ -162,23 +171,26 @@ func (c *Cryptsy) Run() {
|
||||
if c.Verbose {
|
||||
log.Printf("%s Websocket: %s.", c.GetName(), IsEnabled(c.Websocket))
|
||||
log.Printf("%s polling delay: %ds.\n", c.GetName(), c.RESTPollingDelay)
|
||||
log.Printf("%s %d currencies enabled: %s.\n", c.GetName(), len(c.EnabledPairs), c.EnabledPairs)
|
||||
}
|
||||
|
||||
if c.Websocket {
|
||||
go c.PusherClient([]string{"213", "2", "1", "155", "466", "132", "3"})
|
||||
go c.PusherClient()
|
||||
}
|
||||
|
||||
for c.Enabled {
|
||||
go func() {
|
||||
CryptsyBTC := c.GetMarkets("BTCUSD")
|
||||
log.Printf("Cryptsy BTC: Last %f High %f Low %f Volume %f\n", CryptsyBTC[0].LastTrade.Price, CryptsyBTC[0].DayStats.PriceHigh, CryptsyBTC[0].DayStats.PriceLow, CryptsyBTC[0].DayStats.Volume)
|
||||
AddExchangeInfo(c.GetName(), "BTC", CryptsyBTC[0].LastTrade.Price, CryptsyBTC[0].DayStats.Volume)
|
||||
}()
|
||||
go func() {
|
||||
CryptsyLTC := c.GetMarkets("LTCUSD")
|
||||
log.Printf("Cryptsy LTC: Last %f High %f Low %f Volume %f\n", CryptsyLTC[0].LastTrade.Price, CryptsyLTC[0].DayStats.PriceHigh, CryptsyLTC[0].DayStats.PriceLow, CryptsyLTC[0].DayStats.Volume)
|
||||
AddExchangeInfo(c.GetName(), "LTC", CryptsyLTC[0].LastTrade.Price, CryptsyLTC[0].DayStats.Volume)
|
||||
}()
|
||||
err := c.GetMarkets()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
} else {
|
||||
for _, x := range c.EnabledPairs {
|
||||
market := c.Market[x]
|
||||
if market.ID != "" {
|
||||
log.Printf("Cryptsy %s: Last %f High %f Low %f Volume %f\n", x, market.LastTrade.Price, market.DayStats.PriceHigh, market.DayStats.PriceLow, market.DayStats.Volume)
|
||||
AddExchangeInfo(c.GetName(), x, market.LastTrade.Price, market.DayStats.Volume)
|
||||
}
|
||||
}
|
||||
}
|
||||
time.Sleep(time.Second * c.RESTPollingDelay)
|
||||
}
|
||||
}
|
||||
@@ -188,97 +200,77 @@ func (c *Cryptsy) SetAPIKeys(apiKey, apiSecret string) {
|
||||
c.APISecret = apiSecret
|
||||
}
|
||||
|
||||
func (c *Cryptsy) GetMarkets(id string) []CryptsyMarket {
|
||||
func (c *Cryptsy) GetMarkets() error {
|
||||
type Response struct {
|
||||
Data []CryptsyMarket `json:"data"`
|
||||
Success bool `json:"success"`
|
||||
}
|
||||
|
||||
response := Response{}
|
||||
err := SendHTTPGetRequest(CRYPTSY_API_URL+CRYPTSY_MARKETS, true, &response)
|
||||
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return []CryptsyMarket{}
|
||||
return err
|
||||
}
|
||||
|
||||
if !response.Success {
|
||||
return []CryptsyMarket{}
|
||||
return errors.New("Unable to retrieve Cryptsy market data.")
|
||||
}
|
||||
|
||||
if len(id) > 0 {
|
||||
for _, x := range response.Data {
|
||||
label := strings.Replace(x.Label, "/", "", -1)
|
||||
if label == id {
|
||||
result := make([]CryptsyMarket, 0)
|
||||
result = append(result, x)
|
||||
return result
|
||||
}
|
||||
}
|
||||
log.Println("Unable to find market id.")
|
||||
return []CryptsyMarket{}
|
||||
for _, x := range response.Data {
|
||||
label := strings.Replace(x.Label, "/", "", -1)
|
||||
x.Label = label
|
||||
c.Market[label] = x
|
||||
}
|
||||
return response.Data
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Cryptsy) GetVolume(id string) []CryptsyVolume {
|
||||
func (c *Cryptsy) GetVolume(id string) error {
|
||||
type Response struct {
|
||||
Data []CryptsyVolume `json:"data"`
|
||||
Success bool `json:"success"`
|
||||
}
|
||||
|
||||
response := Response{}
|
||||
path := fmt.Sprintf("%s/%s", CRYPTSY_API_URL+CRYPTSY_MARKETS, CRYPTSY_VOLUME)
|
||||
err := SendHTTPGetRequest(path, true, &response)
|
||||
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return []CryptsyVolume{}
|
||||
return err
|
||||
}
|
||||
|
||||
if !response.Success {
|
||||
return []CryptsyVolume{}
|
||||
return errors.New("Unable to retrieve Cryptsy volume data.")
|
||||
}
|
||||
|
||||
if len(id) > 0 {
|
||||
for _, x := range response.Data {
|
||||
if x.ID == id {
|
||||
result := make([]CryptsyVolume, 0)
|
||||
result = append(result, x)
|
||||
return result
|
||||
}
|
||||
}
|
||||
log.Println("Unable to find market id.")
|
||||
return []CryptsyVolume{}
|
||||
for _, x := range response.Data {
|
||||
c.Volume[x.ID] = x
|
||||
}
|
||||
return response.Data
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Cryptsy) GetTicker(id string) []CryptsyTicker {
|
||||
func (c *Cryptsy) GetTickers() error {
|
||||
type Response struct {
|
||||
Data []CryptsyTicker `json:"data"`
|
||||
Success bool `json:"success"`
|
||||
}
|
||||
|
||||
response := Response{}
|
||||
path := fmt.Sprintf("%s/%s", CRYPTSY_API_URL+CRYPTSY_MARKETS, CRYPTSY_TICKER)
|
||||
err := SendHTTPGetRequest(path, true, &response)
|
||||
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return []CryptsyTicker{}
|
||||
return err
|
||||
}
|
||||
|
||||
if !response.Success {
|
||||
return []CryptsyTicker{}
|
||||
return errors.New("Unable to fetch market ticker data.")
|
||||
}
|
||||
|
||||
if len(id) > 0 {
|
||||
for _, x := range response.Data {
|
||||
if x.ID == id {
|
||||
result := make([]CryptsyTicker, 0)
|
||||
result = append(result, x)
|
||||
return result
|
||||
}
|
||||
}
|
||||
log.Println("Unable to find market id.")
|
||||
return []CryptsyTicker{}
|
||||
for _, x := range response.Data {
|
||||
c.Ticker[x.ID] = x
|
||||
}
|
||||
return response.Data
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Cryptsy) GetMarketFees(id string) {
|
||||
@@ -339,7 +331,7 @@ func (c *Cryptsy) GetOHLC(id string) {
|
||||
log.Println(response)
|
||||
}
|
||||
|
||||
func (c *Cryptsy) GetCurrencies(id string) []CryptsyCurrency {
|
||||
func (c *Cryptsy) GetCurrencies() error {
|
||||
type Response struct {
|
||||
Data []CryptsyCurrency `json:"data"`
|
||||
Success bool `json:"success"`
|
||||
@@ -348,26 +340,17 @@ func (c *Cryptsy) GetCurrencies(id string) []CryptsyCurrency {
|
||||
response := Response{}
|
||||
err := SendHTTPGetRequest(CRYPTSY_API_URL+CRYPTSY_CURRENCIES, true, &response)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return []CryptsyCurrency{}
|
||||
return err
|
||||
}
|
||||
|
||||
if !response.Success {
|
||||
return []CryptsyCurrency{}
|
||||
return errors.New("Unable to get Cryptsy currency data.")
|
||||
}
|
||||
|
||||
if len(id) > 0 {
|
||||
for _, x := range response.Data {
|
||||
if x.ID == id {
|
||||
result := make([]CryptsyCurrency, 0)
|
||||
result = append(result, x)
|
||||
return result
|
||||
}
|
||||
}
|
||||
log.Println("Unable to find market id.")
|
||||
return []CryptsyCurrency{}
|
||||
for _, x := range response.Data {
|
||||
c.Currencies[x.ID] = x
|
||||
}
|
||||
return response.Data
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Cryptsy) GetInfo() {
|
||||
|
||||
@@ -3,6 +3,7 @@ package main
|
||||
import (
|
||||
"github.com/toorop/go-pusher"
|
||||
"log"
|
||||
"time"
|
||||
)
|
||||
|
||||
type CryptsyPusherTrade struct {
|
||||
@@ -40,7 +41,7 @@ const (
|
||||
CRYPTSY_PUSHER_KEY = "cb65d0a7a72cd94adf1f"
|
||||
)
|
||||
|
||||
func (c *Cryptsy) PusherClient(marketID []string) {
|
||||
func (c *Cryptsy) PusherClient() {
|
||||
for c.Enabled && c.Websocket {
|
||||
pusherClient, err := pusher.NewClient(CRYPTSY_PUSHER_KEY)
|
||||
if err != nil {
|
||||
@@ -48,7 +49,27 @@ func (c *Cryptsy) PusherClient(marketID []string) {
|
||||
continue
|
||||
}
|
||||
|
||||
if c.Verbose {
|
||||
log.Printf("%s Pusher client connected.\n", c.GetName())
|
||||
}
|
||||
|
||||
for len(c.Market) == 0 {
|
||||
time.Sleep(time.Second * 1)
|
||||
}
|
||||
|
||||
marketID := []string{}
|
||||
for _, x := range c.EnabledPairs {
|
||||
marketID = append(marketID, c.Market[x].ID)
|
||||
}
|
||||
|
||||
if c.Verbose {
|
||||
log.Printf("%s Websocket subscribing to %d channels.\n", c.GetName(), len(marketID))
|
||||
}
|
||||
|
||||
for i := 0; i < len(marketID); i++ {
|
||||
if marketID[i] == "" {
|
||||
continue
|
||||
}
|
||||
err = pusherClient.Subscribe("trade." + marketID[i])
|
||||
|
||||
if err != nil {
|
||||
@@ -66,7 +87,6 @@ func (c *Cryptsy) PusherClient(marketID []string) {
|
||||
log.Printf("%s Websocket Bind error: ", c.GetName(), err)
|
||||
continue
|
||||
}
|
||||
log.Printf("%s Pusher client connected.\n", c.GetName())
|
||||
|
||||
for c.Enabled && c.Websocket {
|
||||
select {
|
||||
|
||||
@@ -115,8 +115,8 @@ func (e *Event) CheckCondition() bool {
|
||||
lastPrice = bot.exchange.bitstamp.GetTicker().Last
|
||||
} else if bot.exchange.coinbase.GetName() == e.Exchange {
|
||||
lastPrice = bot.exchange.coinbase.GetTicker("BTC-USD").Price
|
||||
} else if bot.exchange.coinbase.GetName() == e.Exchange {
|
||||
lastPrice = bot.exchange.cryptsy.GetMarkets("BTCUSD")[0].LastTrade.Price
|
||||
} else if bot.exchange.cryptsy.GetName() == e.Exchange {
|
||||
lastPrice = bot.exchange.cryptsy.Market["BTCUSD"].LastTrade.Price
|
||||
} else if bot.exchange.lakebtc.GetName() == e.Exchange {
|
||||
lastPrice = bot.exchange.lakebtc.GetTicker().CNY.Last
|
||||
} else if bot.exchange.btcchina.GetName() == e.Exchange {
|
||||
|
||||
14
itbithttp.go
14
itbithttp.go
@@ -86,14 +86,18 @@ func (i *ItBit) GetFee(maker bool) float64 {
|
||||
func (i *ItBit) Run() {
|
||||
if i.Verbose {
|
||||
log.Printf("%s polling delay: %ds.\n", i.GetName(), i.RESTPollingDelay)
|
||||
log.Printf("%s %d currencies enabled: %s.\n", i.GetName(), len(i.EnabledPairs), i.EnabledPairs)
|
||||
}
|
||||
|
||||
for i.Enabled {
|
||||
go func() {
|
||||
ItbitBTC := i.GetTicker("XBTUSD")
|
||||
log.Printf("ItBit BTC: Last %f High %f Low %f Volume %f\n", ItbitBTC.LastPrice, ItbitBTC.High24h, ItbitBTC.Low24h, ItbitBTC.Volume24h)
|
||||
AddExchangeInfo(i.GetName(), "BTC", ItbitBTC.LastPrice, ItbitBTC.Volume24h)
|
||||
}()
|
||||
for _, x := range i.EnabledPairs {
|
||||
currency := x
|
||||
go func() {
|
||||
ticker := i.GetTicker(currency)
|
||||
log.Printf("ItBit %s: Last %f High %f Low %f Volume %f\n", currency, ticker.LastPrice, ticker.High24h, ticker.Low24h, ticker.Volume24h)
|
||||
AddExchangeInfo(i.GetName(), currency, ticker.LastPrice, ticker.Volume24h)
|
||||
}()
|
||||
}
|
||||
time.Sleep(time.Second * i.RESTPollingDelay)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -95,18 +95,24 @@ func (l *LakeBTC) Run() {
|
||||
if l.Verbose {
|
||||
log.Printf("%s Websocket: %s. (url: %s).\n", l.GetName(), IsEnabled(l.Websocket), LAKEBTC_WEBSOCKET_URL)
|
||||
log.Printf("%s polling delay: %ds.\n", l.GetName(), l.RESTPollingDelay)
|
||||
log.Printf("%s %d currencies enabled: %s.\n", l.GetName(), len(l.EnabledPairs), l.EnabledPairs)
|
||||
}
|
||||
|
||||
if l.Websocket {
|
||||
l.WebsocketClient()
|
||||
go l.WebsocketClient()
|
||||
}
|
||||
|
||||
for l.Enabled {
|
||||
go func() {
|
||||
LakeBTCTickerResponse := l.GetTicker()
|
||||
log.Printf("LakeBTC USD: Last %f (%f) High %f (%f) Low %f (%f) Volume US %f (CNY %f)\n", LakeBTCTickerResponse.USD.Last, LakeBTCTickerResponse.CNY.Last, LakeBTCTickerResponse.USD.High, LakeBTCTickerResponse.CNY.High, LakeBTCTickerResponse.USD.Low, LakeBTCTickerResponse.CNY.Low, LakeBTCTickerResponse.USD.Volume, LakeBTCTickerResponse.CNY.Volume)
|
||||
AddExchangeInfo(l.GetName(), "BTC", LakeBTCTickerResponse.USD.Last, LakeBTCTickerResponse.USD.Volume)
|
||||
}()
|
||||
ticker := l.GetTicker()
|
||||
for _, x := range l.EnabledPairs {
|
||||
if x == "BTCUSD" {
|
||||
log.Printf("LakeBTC BTC USD: Last %f High %f Low %f Volume %f\n", ticker.USD.Last, ticker.USD.High, ticker.USD.Low, ticker.USD.Volume)
|
||||
AddExchangeInfo(l.GetName(), "BTCUSD", ticker.USD.Last, ticker.USD.Volume)
|
||||
} else if x == "BTCCNY" {
|
||||
log.Printf("LakeBTC BTC CNY: Last %f High %f Low %f Volume %f\n", ticker.CNY.Last, ticker.CNY.High, ticker.CNY.Low, ticker.CNY.Volume)
|
||||
AddExchangeInfo(l.GetName(), "BTCCNY", ticker.CNY.Last, ticker.CNY.Volume)
|
||||
}
|
||||
}
|
||||
time.Sleep(time.Second * l.RESTPollingDelay)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,8 +75,10 @@ func (l *LakeBTC) WebsocketClient() {
|
||||
switch event {
|
||||
case "client_connected":
|
||||
WSRailsSubscribe("ticker", conn)
|
||||
WSRailsSubscribe("orderbook_CNY", conn)
|
||||
WSRailsSubscribe("orderbook_USD", conn)
|
||||
for _, x := range l.EnabledPairs {
|
||||
currency := x[3:]
|
||||
WSRailsSubscribe(fmt.Sprintf("orderbook_%s", currency), conn)
|
||||
}
|
||||
case "websocket_rails.subscribe":
|
||||
case "websocket_rails.ping":
|
||||
WSRailsPong("null", conn)
|
||||
|
||||
@@ -31,6 +31,7 @@ type OKCoin struct {
|
||||
BaseCurrencies []string
|
||||
AvailablePairs []string
|
||||
EnabledPairs []string
|
||||
FuturesValues []string
|
||||
}
|
||||
|
||||
type OKCoinTicker struct {
|
||||
@@ -157,6 +158,7 @@ func (o *OKCoin) SetDefaults() {
|
||||
o.Verbose = false
|
||||
o.Websocket = false
|
||||
o.RESTPollingDelay = 10
|
||||
o.FuturesValues = []string{"this_week", "next_week", "quarter"}
|
||||
}
|
||||
|
||||
func (o *OKCoin) GetName() string {
|
||||
@@ -196,77 +198,40 @@ func (o *OKCoin) Run() {
|
||||
if o.Verbose {
|
||||
log.Printf("%s Websocket: %s. (url: %s).\n", o.GetName(), IsEnabled(o.Websocket), o.WebsocketURL)
|
||||
log.Printf("%s polling delay: %ds.\n", o.GetName(), o.RESTPollingDelay)
|
||||
log.Printf("%s %d currencies enabled: %s.\n", o.GetName(), len(o.EnabledPairs), o.EnabledPairs)
|
||||
}
|
||||
|
||||
if o.Websocket {
|
||||
if o.WebsocketURL == OKCOIN_WEBSOCKET_URL {
|
||||
go o.WebsocketClient([]string{"btcusd", "ltcusd"})
|
||||
} else {
|
||||
go o.WebsocketClient([]string{"btccny", "ltccny"})
|
||||
}
|
||||
go o.WebsocketClient()
|
||||
}
|
||||
|
||||
for o.Enabled {
|
||||
if o.APIUrl == OKCOIN_API_URL {
|
||||
go func() {
|
||||
OKCoinChinaIntlBTC := o.GetTicker("btc_usd")
|
||||
log.Printf("OKCoin Intl BTC: Last %f High %f Low %f Volume %f\n", OKCoinChinaIntlBTC.Last, OKCoinChinaIntlBTC.High, OKCoinChinaIntlBTC.Low, OKCoinChinaIntlBTC.Vol)
|
||||
AddExchangeInfo(o.GetName(), "BTC", OKCoinChinaIntlBTC.Last, OKCoinChinaIntlBTC.Vol)
|
||||
}()
|
||||
|
||||
go func() {
|
||||
OKCoinChinaIntlLTC := o.GetTicker("ltc_usd")
|
||||
log.Printf("OKCoin Intl LTC: Last %f High %f Low %f Volume %f\n", OKCoinChinaIntlLTC.Last, OKCoinChinaIntlLTC.High, OKCoinChinaIntlLTC.Low, OKCoinChinaIntlLTC.Vol)
|
||||
AddExchangeInfo(o.GetName(), "LTC", OKCoinChinaIntlLTC.Last, OKCoinChinaIntlLTC.Vol)
|
||||
}()
|
||||
|
||||
go func() {
|
||||
OKCoinFuturesBTC := o.GetFuturesTicker("btc_usd", "this_week")
|
||||
log.Printf("OKCoin BTC Futures (weekly): Last %f High %f Low %f Volume %f\n", OKCoinFuturesBTC.Last, OKCoinFuturesBTC.High, OKCoinFuturesBTC.Low, OKCoinFuturesBTC.Vol)
|
||||
}()
|
||||
|
||||
go func() {
|
||||
OKCoinFuturesBTC := o.GetFuturesTicker("ltc_usd", "this_week")
|
||||
log.Printf("OKCoin LTC Futures (weekly): Last %f High %f Low %f Volume %f\n", OKCoinFuturesBTC.Last, OKCoinFuturesBTC.High, OKCoinFuturesBTC.Low, OKCoinFuturesBTC.Vol)
|
||||
}()
|
||||
|
||||
go func() {
|
||||
OKCoinFuturesBTC := o.GetFuturesTicker("btc_usd", "next_week")
|
||||
log.Printf("OKCoin BTC Futures (biweekly): Last %f High %f Low %f Volume %f\n", OKCoinFuturesBTC.Last, OKCoinFuturesBTC.High, OKCoinFuturesBTC.Low, OKCoinFuturesBTC.Vol)
|
||||
}()
|
||||
|
||||
go func() {
|
||||
OKCoinFuturesBTC := o.GetFuturesTicker("ltc_usd", "next_week")
|
||||
log.Printf("OKCoin LTC Futures (biweekly): Last %f High %f Low %f Volume %f\n", OKCoinFuturesBTC.Last, OKCoinFuturesBTC.High, OKCoinFuturesBTC.Low, OKCoinFuturesBTC.Vol)
|
||||
}()
|
||||
|
||||
go func() {
|
||||
OKCoinFuturesBTC := o.GetFuturesTicker("btc_usd", "quarter")
|
||||
log.Printf("OKCoin BTC Futures (quarterly): Last %f High %f Low %f Volume %f\n", OKCoinFuturesBTC.Last, OKCoinFuturesBTC.High, OKCoinFuturesBTC.Low, OKCoinFuturesBTC.Vol)
|
||||
}()
|
||||
|
||||
go func() {
|
||||
OKCoinFuturesBTC := o.GetFuturesTicker("ltc_usd", "quarter")
|
||||
log.Printf("OKCoin LTC Futures (quarterly): Last %f High %f Low %f Volume %f\n", OKCoinFuturesBTC.Last, OKCoinFuturesBTC.High, OKCoinFuturesBTC.Low, OKCoinFuturesBTC.Vol)
|
||||
}()
|
||||
} else {
|
||||
go func() {
|
||||
OKCoinChinaBTC := o.GetTicker("btc_cny")
|
||||
OKCoinChinaBTCLastUSD, _ := ConvertCurrency(OKCoinChinaBTC.Last, "CNY", "USD")
|
||||
OKCoinChinaBTCHighUSD, _ := ConvertCurrency(OKCoinChinaBTC.High, "CNY", "USD")
|
||||
OKCoinChinaBTCLowUSD, _ := ConvertCurrency(OKCoinChinaBTC.Low, "CNY", "USD")
|
||||
log.Printf("OKCoin China: Last %f (%f) High %f (%f) Low %f (%f) Volume %f\n", OKCoinChinaBTCLastUSD, OKCoinChinaBTC.Last, OKCoinChinaBTCHighUSD, OKCoinChinaBTC.High, OKCoinChinaBTCLowUSD, OKCoinChinaBTC.Low, OKCoinChinaBTC.Vol)
|
||||
AddExchangeInfo(o.GetName(), "BTC", OKCoinChinaBTCLastUSD, OKCoinChinaBTC.Vol)
|
||||
}()
|
||||
|
||||
go func() {
|
||||
OKCoinChinaLTC := o.GetTicker("ltc_cny")
|
||||
OKCoinChinaLTCLastUSD, _ := ConvertCurrency(OKCoinChinaLTC.Last, "CNY", "USD")
|
||||
OKCoinChinaLTCHighUSD, _ := ConvertCurrency(OKCoinChinaLTC.High, "CNY", "USD")
|
||||
OKCoinChinaLTCLowUSD, _ := ConvertCurrency(OKCoinChinaLTC.Low, "CNY", "USD")
|
||||
log.Printf("OKCoin China: Last %f (%f) High %f (%f) Low %f (%f) Volume %f\n", OKCoinChinaLTCLastUSD, OKCoinChinaLTC.Last, OKCoinChinaLTCHighUSD, OKCoinChinaLTC.High, OKCoinChinaLTCLowUSD, OKCoinChinaLTC.Low, OKCoinChinaLTC.Vol)
|
||||
AddExchangeInfo(o.GetName(), "LTC", OKCoinChinaLTCLastUSD, OKCoinChinaLTC.Vol)
|
||||
}()
|
||||
for _, x := range o.EnabledPairs {
|
||||
currency := StringToLower(x[0:3] + "_" + x[3:])
|
||||
if o.APIUrl == OKCOIN_API_URL {
|
||||
for _, y := range o.FuturesValues {
|
||||
futuresValue := y
|
||||
go func() {
|
||||
ticker := o.GetFuturesTicker(currency, futuresValue)
|
||||
log.Printf("OKCoin Intl Futures %s (%s): Last %f High %f Low %f Volume %f\n", currency, futuresValue, ticker.Last, ticker.High, ticker.Low, ticker.Vol)
|
||||
AddExchangeInfo(o.GetName(), currency, ticker.Last, ticker.Vol)
|
||||
}()
|
||||
}
|
||||
go func() {
|
||||
ticker := o.GetTicker(currency)
|
||||
log.Printf("OKCoin Intl Spot %s: Last %f High %f Low %f Volume %f\n", currency, ticker.Last, ticker.High, ticker.Low, ticker.Vol)
|
||||
AddExchangeInfo(o.GetName(), currency, ticker.Last, ticker.Vol)
|
||||
}()
|
||||
} else {
|
||||
go func() {
|
||||
ticker := o.GetTicker(currency)
|
||||
tickerLastUSD, _ := ConvertCurrency(ticker.Last, "CNY", "USD")
|
||||
tickerHighUSD, _ := ConvertCurrency(ticker.High, "CNY", "USD")
|
||||
tickerLowUSD, _ := ConvertCurrency(ticker.Low, "CNY", "USD")
|
||||
log.Printf("OKCoin China %s: Last %f (%f) High %f (%f) Low %f (%f) Volume %f\n", currency, tickerLastUSD, ticker.Last, tickerHighUSD, ticker.High, tickerLowUSD, ticker.Low, ticker.Vol)
|
||||
AddExchangeInfo(o.GetName(), currency, ticker.Last, ticker.Vol)
|
||||
}()
|
||||
}
|
||||
}
|
||||
time.Sleep(time.Second * o.RESTPollingDelay)
|
||||
}
|
||||
|
||||
@@ -327,6 +327,7 @@ func (o *OKCoin) WebsocketFuturesOrderInfo(symbol, contractType string, orderID
|
||||
values["status"] = strconv.Itoa(orderStatus)
|
||||
values["current_page"] = strconv.Itoa(currentPage)
|
||||
values["page_length"] = strconv.Itoa(pageLength)
|
||||
log.Println(values)
|
||||
o.AddChannelAuthenticated(OKCOIN_WEBSOCKET_FUTURES_ORDER_INFO, values)
|
||||
}
|
||||
|
||||
@@ -384,10 +385,16 @@ func (o *OKCoin) RemoveChannelAuthenticated(conn *websocket.Conn, channel string
|
||||
}
|
||||
}
|
||||
|
||||
func (o *OKCoin) WebsocketClient(currencies []string) {
|
||||
if len(currencies) == 0 {
|
||||
log.Println("No currencies for Websocket client specified.")
|
||||
return
|
||||
func (o *OKCoin) WebsocketClient() {
|
||||
klineValues := []string{"1min", "3min", "5min", "15min", "30min", "1hour", "2hour", "4hour", "6hour", "12hour", "day", "3day", "week"}
|
||||
currencyChan, userinfoChan := "", ""
|
||||
|
||||
if o.WebsocketURL == OKCOIN_WEBSOCKET_URL_CHINA {
|
||||
currencyChan = OKCOIN_WEBSOCKET_CNY_REALTRADES
|
||||
userinfoChan = OKCOIN_WEBSOCKET_SPOTCNY_USERINFO
|
||||
} else {
|
||||
currencyChan = OKCOIN_WEBSOCKET_USD_REALTRADES
|
||||
userinfoChan = OKCOIN_WEBSOCKET_SPOTUSD_USERINFO
|
||||
}
|
||||
|
||||
for o.Enabled && o.Websocket {
|
||||
@@ -400,53 +407,40 @@ func (o *OKCoin) WebsocketClient(currencies []string) {
|
||||
continue
|
||||
}
|
||||
|
||||
log.Printf("%s Connected to Websocket.\n", o.GetName())
|
||||
OKConnWebsocket.SetPingHandler(o.PingHandler)
|
||||
currencyChan, userinfoChan := "", ""
|
||||
futuruesContractValues := []string{"this_week", "next_week", "quarter"}
|
||||
klineValues := []string{"1min", "3min", "5min", "15min", "30min", "1hour", "2hour", "4hour", "6hour", "12hour", "day", "3day", "week"}
|
||||
if o.Verbose {
|
||||
log.Printf("%s Connected to Websocket.\n", o.GetName())
|
||||
}
|
||||
|
||||
if o.WebsocketURL == OKCOIN_WEBSOCKET_URL_CHINA {
|
||||
currencyChan = OKCOIN_WEBSOCKET_CNY_REALTRADES
|
||||
userinfoChan = OKCOIN_WEBSOCKET_SPOTCNY_USERINFO
|
||||
o.WebsocketSpotOrderInfo("btc_cny", -1)
|
||||
o.WebsocketSpotOrderInfo("ltc_cny", -1)
|
||||
} else {
|
||||
currencyChan = OKCOIN_WEBSOCKET_USD_REALTRADES
|
||||
userinfoChan = OKCOIN_WEBSOCKET_SPOTUSD_USERINFO
|
||||
o.WebsocketSpotOrderInfo("btc_usd", -1)
|
||||
o.WebsocketSpotOrderInfo("ltc_usd", -1)
|
||||
OKConnWebsocket.SetPingHandler(o.PingHandler)
|
||||
if o.WebsocketURL == OKCOIN_WEBSOCKET_URL {
|
||||
o.AddChannelAuthenticated(OKCOIN_WEBSOCKET_FUTURES_REALTRADES, map[string]string{})
|
||||
o.AddChannelAuthenticated(OKCOIN_WEBSOCKET_FUTURES_USERINFO, map[string]string{})
|
||||
|
||||
// get all unfilled futures orders for both currencies
|
||||
for _, y := range futuruesContractValues {
|
||||
o.WebsocketFuturesOrderInfo("btc_usd", y, -1, 1, 1, 50)
|
||||
o.WebsocketFuturesOrderInfo("ltc_usd", y, -1, 1, 1, 50)
|
||||
}
|
||||
}
|
||||
o.AddChannelAuthenticated(currencyChan, map[string]string{})
|
||||
o.AddChannelAuthenticated(userinfoChan, map[string]string{})
|
||||
//spot
|
||||
for _, x := range currencies {
|
||||
o.AddChannel(fmt.Sprintf("ok_%s_ticker", x))
|
||||
o.AddChannel(fmt.Sprintf("ok_%s_depth60", x))
|
||||
o.AddChannel(fmt.Sprintf("ok_%s_trades_v1", x))
|
||||
|
||||
for _, y := range klineValues {
|
||||
o.AddChannel(fmt.Sprintf("ok_%s_kline_%s", x, y))
|
||||
}
|
||||
}
|
||||
for _, x := range o.EnabledPairs {
|
||||
currency := StringToLower(x)
|
||||
currencyUL := currency[0:3] + "_" + currency[3:]
|
||||
o.WebsocketSpotOrderInfo(currencyUL, -1)
|
||||
if o.WebsocketURL == OKCOIN_WEBSOCKET_URL {
|
||||
o.AddChannel(fmt.Sprintf("ok_%s_future_index", currency))
|
||||
for _, y := range o.FuturesValues {
|
||||
o.WebsocketFuturesOrderInfo(currencyUL, y, -1, 1, 1, 50)
|
||||
o.AddChannel(fmt.Sprintf("ok_%s_future_ticker_%s", currency, y))
|
||||
o.AddChannel(fmt.Sprintf("ok_%s_future_depth_%s_60", currency, y))
|
||||
o.AddChannel(fmt.Sprintf("ok_%s_future_trade_v1_%s", currency, y))
|
||||
for _, z := range klineValues {
|
||||
o.AddChannel(fmt.Sprintf("ok_future_%s_kline_%s_%s", currency, y, z))
|
||||
}
|
||||
}
|
||||
} else {
|
||||
o.AddChannel(fmt.Sprintf("ok_%s_ticker", currency))
|
||||
o.AddChannel(fmt.Sprintf("ok_%s_depth60", currency))
|
||||
o.AddChannel(fmt.Sprintf("ok_%s_trades_v1", currency))
|
||||
|
||||
//futures
|
||||
for _, x := range currencies {
|
||||
o.AddChannel(fmt.Sprintf("ok_%s_future_index", x))
|
||||
for _, y := range futuruesContractValues {
|
||||
o.AddChannel(fmt.Sprintf("ok_%s_future_ticker_%s", x, y))
|
||||
o.AddChannel(fmt.Sprintf("ok_%s_future_depth_%s_60", x, y))
|
||||
o.AddChannel(fmt.Sprintf("ok_%s_future_trade_v1_%s", x, y))
|
||||
for _, z := range klineValues {
|
||||
o.AddChannel(fmt.Sprintf("ok_future_%s_kline_%s_%s", x, y, z))
|
||||
for _, y := range klineValues {
|
||||
o.AddChannel(fmt.Sprintf("ok_%s_kline_%s", currency, y))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user