diff --git a/pkg/exchange/okex/convert.go b/pkg/exchange/okex/convert.go index 29ae720a7..dfd9b8c92 100644 --- a/pkg/exchange/okex/convert.go +++ b/pkg/exchange/okex/convert.go @@ -5,3 +5,12 @@ import "strings" func toGlobalSymbol(symbol string) string { return strings.ReplaceAll(symbol, "-", "") } + +func toLocalSymbol(symbol string) string { + if s, ok := symbolMap[symbol]; ok { + return s + } + + log.Errorf("failed to look up local symbol from %s", symbol) + return symbol +} diff --git a/pkg/exchange/okex/exchange.go b/pkg/exchange/okex/exchange.go index 26e30f94a..24eca2725 100644 --- a/pkg/exchange/okex/exchange.go +++ b/pkg/exchange/okex/exchange.go @@ -9,6 +9,8 @@ import ( "github.com/sirupsen/logrus" ) +//go:generate sh -c "echo \"package okex\nvar symbolMap = map[string]string{\n\" $(curl -s -L 'https://okex.com/api/v5/public/instruments?instType=SPOT' | jq -r '.data[] | \"\\(.instId | sub(\"-\" ; \"\") | tojson ): \\( .instId | tojson),\n\"') \"\n}\" > symbols.go" + // OKB is the platform currency of OKEx, pre-allocate static string here const OKB = "OKB" diff --git a/pkg/exchange/okex/symbols.go b/pkg/exchange/okex/symbols.go new file mode 100644 index 000000000..c140e345d --- /dev/null +++ b/pkg/exchange/okex/symbols.go @@ -0,0 +1,5 @@ +package okex + +var symbolMap = map[string]string{ + "BTCUSDT": "BTC-USDT", "ETHUSDT": "ETH-USDT", "OKBUSDT": "OKB-USDT", "OKTUSDT": "OKT-USDT", "LTCUSDT": "LTC-USDT", "DOTUSDT": "DOT-USDT", "DOGEUSDT": "DOGE-USDT", "XRPUSDT": "XRP-USDT", "EOSUSDT": "EOS-USDT", "ETCUSDT": "ETC-USDT", "MATICUSDT": "MATIC-USDT", "KISHUUSDT": "KISHU-USDT", "AKITAUSDT": "AKITA-USDT", "CSPRUSDT": "CSPR-USDT", "LATUSDT": "LAT-USDT", "ICPUSDT": "ICP-USDT", "SHIBUSDT": "SHIB-USDT", "XCHUSDT": "XCH-USDT", "1INCHUSDT": "1INCH-USDT", "AACUSDT": "AAC-USDT", "AAVEUSDT": "AAVE-USDT", "ABTUSDT": "ABT-USDT", "ACTUSDT": "ACT-USDT", "ADAUSDT": "ADA-USDT", "AEUSDT": "AE-USDT", "AERGOUSDT": "AERGO-USDT", "ALGOUSDT": "ALGO-USDT", "ALPHAUSDT": "ALPHA-USDT", "ALVUSDT": "ALV-USDT", "ANCUSDT": "ANC-USDT", "ANTUSDT": "ANT-USDT", "ANWUSDT": "ANW-USDT", "API3USDT": "API3-USDT", "APIXUSDT": "APIX-USDT", "APMUSDT": "APM-USDT", "ARKUSDT": "ARK-USDT", "ASTUSDT": "AST-USDT", "ATOMUSDT": "ATOM-USDT", "AUCTIONUSDT": "AUCTION-USDT", "AVAXUSDT": "AVAX-USDT", "BADGERUSDT": "BADGER-USDT", "BALUSDT": "BAL-USDT", "BANDUSDT": "BAND-USDT", "BATUSDT": "BAT-USDT", "BCDUSDT": "BCD-USDT", "BCHUSDT": "BCH-USDT", "BCHAUSDT": "BCHA-USDT", "BETHUSDT": "BETH-USDT", "BHPUSDT": "BHP-USDT", "BLOCUSDT": "BLOC-USDT", "BNTUSDT": "BNT-USDT", "BOXUSDT": "BOX-USDT", "BSVUSDT": "BSV-USDT", "BTGUSDT": "BTG-USDT", "BTMUSDT": "BTM-USDT", "BTTUSDT": "BTT-USDT", "CELOUSDT": "CELO-USDT", "CFXUSDT": "CFX-USDT", "CELRUSDT": "CELR-USDT", "CELUSDT": "CEL-USDT", "CHATUSDT": "CHAT-USDT", "CHZUSDT": "CHZ-USDT", "CMTUSDT": "CMT-USDT", "CNTMUSDT": "CNTM-USDT", "COMPUSDT": "COMP-USDT", "CONVUSDT": "CONV-USDT", "COVERUSDT": "COVER-USDT", "CROUSDT": "CRO-USDT", "CRVUSDT": "CRV-USDT", "CTCUSDT": "CTC-USDT", "CTXCUSDT": "CTXC-USDT", "CVCUSDT": "CVC-USDT", "CVPUSDT": "CVP-USDT", "CVTUSDT": "CVT-USDT", "DAIUSDT": "DAI-USDT", "DAOUSDT": "DAO-USDT", "DASHUSDT": "DASH-USDT", "DCRUSDT": "DCR-USDT", "DEPUSDT": "DEP-USDT", "DGBUSDT": "DGB-USDT", "DHTUSDT": "DHT-USDT", "DIAUSDT": "DIA-USDT", "DMDUSDT": "DMD-USDT", "DMGUSDT": "DMG-USDT", "DNAUSDT": "DNA-USDT", "DORAUSDT": "DORA-USDT", "ECUSDT": "EC-USDT", "EGLDUSDT": "EGLD-USDT", "EGTUSDT": "EGT-USDT", "ELFUSDT": "ELF-USDT", "EMUSDT": "EM-USDT", "ENJUSDT": "ENJ-USDT", "ETMUSDT": "ETM-USDT", "EXEUSDT": "EXE-USDT", "FAIRUSDT": "FAIR-USDT", "FILUSDT": "FIL-USDT", "FLMUSDT": "FLM-USDT", "FLOWUSDT": "FLOW-USDT", "FORTHUSDT": "FORTH-USDT", "FRONTUSDT": "FRONT-USDT", "FSNUSDT": "FSN-USDT", "FTMUSDT": "FTM-USDT", "GASUSDT": "GAS-USDT", "GALUSDT": "GAL-USDT", "GHSTUSDT": "GHST-USDT", "GLMUSDT": "GLM-USDT", "GRTUSDT": "GRT-USDT", "GTOUSDT": "GTO-USDT", "GUSDUSDT": "GUSD-USDT", "HBARUSDT": "HBAR-USDT", "HCUSDT": "HC-USDT", "HDAOUSDT": "HDAO-USDT", "HEGICUSDT": "HEGIC-USDT", "ICXUSDT": "ICX-USDT", "INTUSDT": "INT-USDT", "INXUSDT": "INX-USDT", "IOSTUSDT": "IOST-USDT", "IOTAUSDT": "IOTA-USDT", "IQUSDT": "IQ-USDT", "ITCUSDT": "ITC-USDT", "JFIUSDT": "JFI-USDT", "JSTUSDT": "JST-USDT", "KANUSDT": "KAN-USDT", "KCASHUSDT": "KCASH-USDT", "KINEUSDT": "KINE-USDT", "KLAYUSDT": "KLAY-USDT", "KNCUSDT": "KNC-USDT", "KONOUSDT": "KONO-USDT", "KP3RUSDT": "KP3R-USDT", "KSMUSDT": "KSM-USDT", "LAMBUSDT": "LAMB-USDT", "LBAUSDT": "LBA-USDT", "LEOUSDT": "LEO-USDT", "LETUSDT": "LET-USDT", "LINKUSDT": "LINK-USDT", "LMCHUSDT": "LMCH-USDT", "LONUSDT": "LON-USDT", "LOONUSDT": "LOON-USDT", "LPTUSDT": "LPT-USDT", "LRCUSDT": "LRC-USDT", "LSKUSDT": "LSK-USDT", "LUNAUSDT": "LUNA-USDT", "MANAUSDT": "MANA-USDT", "MASKUSDT": "MASK-USDT", "MCOUSDT": "MCO-USDT", "MDAUSDT": "MDA-USDT", "MDTUSDT": "MDT-USDT", "MEMEUSDT": "MEME-USDT", "MITHUSDT": "MITH-USDT", "MIRUSDT": "MIR-USDT", "MKRUSDT": "MKR-USDT", "MLNUSDT": "MLN-USDT", "MOFUSDT": "MOF-USDT", "MXCUSDT": "MXC-USDT", "MXTUSDT": "MXT-USDT", "NANOUSDT": "NANO-USDT", "NASUSDT": "NAS-USDT", "NDNUSDT": "NDN-USDT", "NEARUSDT": "NEAR-USDT", "NEOUSDT": "NEO-USDT", "NMRUSDT": "NMR-USDT", "NUUSDT": "NU-USDT", "NULSUSDT": "NULS-USDT", "OMUSDT": "OM-USDT", "OMGUSDT": "OMG-USDT", "ONTUSDT": "ONT-USDT", "ORBSUSDT": "ORBS-USDT", "ORSUSDT": "ORS-USDT", "OXTUSDT": "OXT-USDT", "PAXUSDT": "PAX-USDT", "PAYUSDT": "PAY-USDT", "PERPUSDT": "PERP-USDT", "PHAUSDT": "PHA-USDT", "PICKLEUSDT": "PICKLE-USDT", "PLGUSDT": "PLG-USDT", "PNKUSDT": "PNK-USDT", "POLSUSDT": "POLS-USDT", "PPTUSDT": "PPT-USDT", "PROPSUSDT": "PROPS-USDT", "PRQUSDT": "PRQ-USDT", "PSTUSDT": "PST-USDT", "QTUMUSDT": "QTUM-USDT", "QUNUSDT": "QUN-USDT", "RENUSDT": "REN-USDT", "REPUSDT": "REP-USDT", "RFUELUSDT": "RFUEL-USDT", "RIOUSDT": "RIO-USDT", "RNTUSDT": "RNT-USDT", "ROADUSDT": "ROAD-USDT", "RSRUSDT": "RSR-USDT", "RVNUSDT": "RVN-USDT", "SANDUSDT": "SAND-USDT", "SCUSDT": "SC-USDT", "SFGUSDT": "SFG-USDT", "SKLUSDT": "SKL-USDT", "SNTUSDT": "SNT-USDT", "SNXUSDT": "SNX-USDT", "SOCUSDT": "SOC-USDT", "SOLUSDT": "SOL-USDT", "SRMUSDT": "SRM-USDT", "STORJUSDT": "STORJ-USDT", "STRKUSDT": "STRK-USDT", "STXUSDT": "STX-USDT", "SUNUSDT": "SUN-USDT", "SUSHIUSDT": "SUSHI-USDT", "SWFTCUSDT": "SWFTC-USDT", "SWRVUSDT": "SWRV-USDT", "TAIUSDT": "TAI-USDT", "TCTUSDT": "TCT-USDT", "THETAUSDT": "THETA-USDT", "TMTGUSDT": "TMTG-USDT", "TOPCUSDT": "TOPC-USDT", "TORNUSDT": "TORN-USDT", "TRADEUSDT": "TRADE-USDT", "TRAUSDT": "TRA-USDT", "TRBUSDT": "TRB-USDT", "TRIOUSDT": "TRIO-USDT", "TRUEUSDT": "TRUE-USDT", "TRXUSDT": "TRX-USDT", "TUSDUSDT": "TUSD-USDT", "UBTCUSDT": "UBTC-USDT", "UMAUSDT": "UMA-USDT", "UNIUSDT": "UNI-USDT", "USDCUSDT": "USDC-USDT", "UTKUSDT": "UTK-USDT", "VALUEUSDT": "VALUE-USDT", "VELOUSDT": "VELO-USDT", "VIBUSDT": "VIB-USDT", "VRAUSDT": "VRA-USDT", "VSYSUSDT": "VSYS-USDT", "WAVESUSDT": "WAVES-USDT", "WBTCUSDT": "WBTC-USDT", "WGRTUSDT": "WGRT-USDT", "WINGUSDT": "WING-USDT", "WNXMUSDT": "WNXM-USDT", "WTCUSDT": "WTC-USDT", "WXTUSDT": "WXT-USDT", "XEMUSDT": "XEM-USDT", "XLMUSDT": "XLM-USDT", "XMRUSDT": "XMR-USDT", "XPOUSDT": "XPO-USDT", "XPRUSDT": "XPR-USDT", "XSRUSDT": "XSR-USDT", "XTZUSDT": "XTZ-USDT", "XUCUSDT": "XUC-USDT", "YEEUSDT": "YEE-USDT", "YFIUSDT": "YFI-USDT", "YFIIUSDT": "YFII-USDT", "YOUUSDT": "YOU-USDT", "YOYOUSDT": "YOYO-USDT", "ZECUSDT": "ZEC-USDT", "ZENUSDT": "ZEN-USDT", "ZILUSDT": "ZIL-USDT", "ZKSUSDT": "ZKS-USDT", "ZRXUSDT": "ZRX-USDT", "ZYROUSDT": "ZYRO-USDT", "ETHBTC": "ETH-BTC", "OKBBTC": "OKB-BTC", "OKTBTC": "OKT-BTC", "LTCBTC": "LTC-BTC", "DOTBTC": "DOT-BTC", "DOGEBTC": "DOGE-BTC", "XRPBTC": "XRP-BTC", "EOSBTC": "EOS-BTC", "ETCBTC": "ETC-BTC", "ICPBTC": "ICP-BTC", "XCHBTC": "XCH-BTC", "AAVEBTC": "AAVE-BTC", "ABTBTC": "ABT-BTC", "ACTBTC": "ACT-BTC", "ADABTC": "ADA-BTC", "AEBTC": "AE-BTC", "AERGOBTC": "AERGO-BTC", "ALGOBTC": "ALGO-BTC", "ALPHABTC": "ALPHA-BTC", "ANTBTC": "ANT-BTC", "ARDRBTC": "ARDR-BTC", "ARKBTC": "ARK-BTC", "ATOMBTC": "ATOM-BTC", "AVAXBTC": "AVAX-BTC", "BADGERBTC": "BADGER-BTC", "BALBTC": "BAL-BTC", "BATBTC": "BAT-BTC", "BCDBTC": "BCD-BTC", "BCHBTC": "BCH-BTC", "BCHABTC": "BCHA-BTC", "BCXBTC": "BCX-BTC", "BHPBTC": "BHP-BTC", "BNTBTC": "BNT-BTC", "BSVBTC": "BSV-BTC", "BTGBTC": "BTG-BTC", "BTMBTC": "BTM-BTC", "BTTBTC": "BTT-BTC", "CELOBTC": "CELO-BTC", "CFXBTC": "CFX-BTC", "CHZBTC": "CHZ-BTC", "CMTBTC": "CMT-BTC", "COMPBTC": "COMP-BTC", "CROBTC": "CRO-BTC", "CRVBTC": "CRV-BTC", "CTCBTC": "CTC-BTC", "CTXCBTC": "CTXC-BTC", "CVCBTC": "CVC-BTC", "CVTBTC": "CVT-BTC", "DASHBTC": "DASH-BTC", "DCRBTC": "DCR-BTC", "DGBBTC": "DGB-BTC", "DNABTC": "DNA-BTC", "EGLDBTC": "EGLD-BTC", "EGTBTC": "EGT-BTC", "ELFBTC": "ELF-BTC", "ENJBTC": "ENJ-BTC", "FILBTC": "FIL-BTC", "FLOWBTC": "FLOW-BTC", "FORTHBTC": "FORTH-BTC", "FUNBTC": "FUN-BTC", "GASBTC": "GAS-BTC", "GLMBTC": "GLM-BTC", "GNXBTC": "GNX-BTC", "GRTBTC": "GRT-BTC", "GTOBTC": "GTO-BTC", "GUSDBTC": "GUSD-BTC", "HBARBTC": "HBAR-BTC", "HCBTC": "HC-BTC", "ICXBTC": "ICX-BTC", "INTBTC": "INT-BTC", "IOSTBTC": "IOST-BTC", "IOTABTC": "IOTA-BTC", "KCASHBTC": "KCASH-BTC", "KLAYBTC": "KLAY-BTC", "KNCBTC": "KNC-BTC", "KSMBTC": "KSM-BTC", "LINKBTC": "LINK-BTC", "LOONBTC": "LOON-BTC", "LRCBTC": "LRC-BTC", "LSKBTC": "LSK-BTC", "LUNABTC": "LUNA-BTC", "MANABTC": "MANA-BTC", "MCOBTC": "MCO-BTC", "MITHBTC": "MITH-BTC", "MKRBTC": "MKR-BTC", "MOFBTC": "MOF-BTC", "NANOBTC": "NANO-BTC", "NASBTC": "NAS-BTC", "NEARBTC": "NEAR-BTC", "NEOBTC": "NEO-BTC", "NUBTC": "NU-BTC", "NULSBTC": "NULS-BTC", "OMGBTC": "OMG-BTC", "ONTBTC": "ONT-BTC", "PAXBTC": "PAX-BTC", "PAYBTC": "PAY-BTC", "PMABTC": "PMA-BTC", "PSTBTC": "PST-BTC", "QTUMBTC": "QTUM-BTC", "QUNBTC": "QUN-BTC", "RENBTC": "REN-BTC", "RSRBTC": "RSR-BTC", "RVNBTC": "RVN-BTC", "SBTCBTC": "SBTC-BTC", "SCBTC": "SC-BTC", "SNCBTC": "SNC-BTC", "SNTBTC": "SNT-BTC", "SOLBTC": "SOL-BTC", "SRMBTC": "SRM-BTC", "STXBTC": "STX-BTC", "SWFTCBTC": "SWFTC-BTC", "TCTBTC": "TCT-BTC", "THETABTC": "THETA-BTC", "TMTGBTC": "TMTG-BTC", "TRIOBTC": "TRIO-BTC", "TRUEBTC": "TRUE-BTC", "TRXBTC": "TRX-BTC", "TUSDBTC": "TUSD-BTC", "UNIBTC": "UNI-BTC", "USDCBTC": "USDC-BTC", "VIBBTC": "VIB-BTC", "VITEBTC": "VITE-BTC", "VSYSBTC": "VSYS-BTC", "WAVESBTC": "WAVES-BTC", "WBTCBTC": "WBTC-BTC", "WTCBTC": "WTC-BTC", "WXTBTC": "WXT-BTC", "XEMBTC": "XEM-BTC", "XLMBTC": "XLM-BTC", "XMRBTC": "XMR-BTC", "XTZBTC": "XTZ-BTC", "YFIBTC": "YFI-BTC", "YOUBTC": "YOU-BTC", "ZECBTC": "ZEC-BTC", "ZENBTC": "ZEN-BTC", "ZILBTC": "ZIL-BTC", "ZRXBTC": "ZRX-BTC", "OKBETH": "OKB-ETH", "OKTETH": "OKT-ETH", "LTCETH": "LTC-ETH", "DOTETH": "DOT-ETH", "DOGEETH": "DOGE-ETH", "XRPETH": "XRP-ETH", "EOSETH": "EOS-ETH", "ETCETH": "ETC-ETH", "1INCHETH": "1INCH-ETH", "AAVEETH": "AAVE-ETH", "ABTETH": "ABT-ETH", "ADAETH": "ADA-ETH", "AEETH": "AE-ETH", "API3ETH": "API3-ETH", "ATOMETH": "ATOM-ETH", "AVAXETH": "AVAX-ETH", "BETHETH": "BETH-ETH", "BTMETH": "BTM-ETH", "CMTETH": "CMT-ETH", "CRVETH": "CRV-ETH", "CTXCETH": "CTXC-ETH", "DASHETH": "DASH-ETH", "DHTETH": "DHT-ETH", "DIAETH": "DIA-ETH", "EGTETH": "EGT-ETH", "FILETH": "FIL-ETH", "FLOWETH": "FLOW-ETH", "FRONTETH": "FRONT-ETH", "GASETH": "GAS-ETH", "GHSTETH": "GHST-ETH", "HEGICETH": "HEGIC-ETH", "INTETH": "INT-ETH", "IOSTETH": "IOST-ETH", "KANETH": "KAN-ETH", "KCASHETH": "KCASH-ETH", "KSMETH": "KSM-ETH", "LINKETH": "LINK-ETH", "LONETH": "LON-ETH", "MANAETH": "MANA-ETH", "MCOETH": "MCO-ETH", "MITHETH": "MITH-ETH", "MKRETH": "MKR-ETH", "NEARETH": "NEAR-ETH", "NEOETH": "NEO-ETH", "NULSETH": "NULS-ETH", "OMETH": "OM-ETH", "ONTETH": "ONT-ETH", "PHAETH": "PHA-ETH", "POLSETH": "POLS-ETH", "PROPSETH": "PROPS-ETH", "QTUMETH": "QTUM-ETH", "REPETH": "REP-ETH", "RFUELETH": "RFUEL-ETH", "RSRETH": "RSR-ETH", "SNXETH": "SNX-ETH", "SOLETH": "SOL-ETH", "SUNETH": "SUN-ETH", "SUSHIETH": "SUSHI-ETH", "SWFTCETH": "SWFTC-ETH", "TORNETH": "TORN-ETH", "TRADEETH": "TRADE-ETH", "TRXETH": "TRX-ETH", "UNIETH": "UNI-ETH", "VALUEETH": "VALUE-ETH", "WBTCETH": "WBTC-ETH", "XEMETH": "XEM-ETH", "XLMETH": "XLM-ETH", "XMRETH": "XMR-ETH", "YFIETH": "YFI-ETH", "ZECETH": "ZEC-ETH", "ZILETH": "ZIL-ETH", "ZRXETH": "ZRX-ETH", "LTCOKB": "LTC-OKB", "XRPOKB": "XRP-OKB", "ETCOKB": "ETC-OKB", "BTCUSDK": "BTC-USDK", "ETHUSDK": "ETH-USDK", "OKBUSDK": "OKB-USDK", "LTCUSDK": "LTC-USDK", "DOGEUSDK": "DOGE-USDK", "XRPUSDK": "XRP-USDK", "EOSUSDK": "EOS-USDK", "ETCUSDK": "ETC-USDK", "ALGOUSDK": "ALGO-USDK", "BCHUSDK": "BCH-USDK", "BSVUSDK": "BSV-USDK", "CROUSDK": "CRO-USDK", "DEPUSDK": "DEP-USDK", "ECUSDK": "EC-USDK", "EMUSDK": "EM-USDK", "FSNUSDK": "FSN-USDK", "FTMUSDK": "FTM-USDK", "HBARUSDK": "HBAR-USDK", "HDAOUSDK": "HDAO-USDK", "LAMBUSDK": "LAMB-USDK", "LEOUSDK": "LEO-USDK", "NDNUSDK": "NDN-USDK", "ORBSUSDK": "ORBS-USDK", "PLGUSDK": "PLG-USDK", "PMAUSDK": "PMA-USDK", "ROADUSDK": "ROAD-USDK", "TRXUSDK": "TRX-USDK", "USDTUSDK": "USDT-USDK", "VSYSUSDK": "VSYS-USDK", "WGRTUSDK": "WGRT-USDK", "WXTUSDK": "WXT-USDK", "BTCDAI": "BTC-DAI", "ETHDAI": "ETH-DAI", "BTCUSDC": "BTC-USDC", "ETHUSDC": "ETH-USDC", "OKBUSDC": "OKB-USDC", "LTCUSDC": "LTC-USDC", "XRPUSDC": "XRP-USDC", "EOSUSDC": "EOS-USDC", "ETCUSDC": "ETC-USDC", "BCHUSDC": "BCH-USDC", "BSVUSDC": "BSV-USDC", "TRXUSDC": "TRX-USDC", +}