mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-13 23:16:45 +00:00
* update acccount ratelimits and added missing endpoints * completed mapping missing trade accoung REST endpoints and Rate Limit * added orderbook trading missing REST endpoints * Added few missing endpoints and unit tests * Completed grid trading and signal bot trading with unit tests * Added Recurring Buy endpoints and corresponding unit tests * Added copy trading endpoints and unit tests * added newly added block trading and spread endpoints * completed mapping spread endpoints * Added new endpoints and unit tests * Added round 1: Okx types and converts update. * Update endpoints handling and types update * Removed constants, updated unit tests, and updated endpoint methods * Slight endpoint and unit test update * Added spread and other websocket endpoints and update * completed Spread WS Orderbook handler * Added missing spread channels and handlers * Adding Bussinss websocket and missing subscriptions, update unit tests, and endpoints * Added spread endpoints to wrapper and unit tests update * Added missing websocket subscriptions and copy trading endpoints * Added missing endpoints and re-organize business websocket handlers * Docs update * Endpoints code updates * types, unit test and endpoints update * Minor unit tests update * spelling fix * fix unit test issues * Updating unit tests error handling * Updating unit tests error handling * Unit tests assertion handling update * Unit tests update * Resolve linter issues * linter issues fix * Orderbook unit test error fix * Minor fixes * Change on test handling and types * Updating unit tests and cleanups * Fix unit test issues * Add ratelimit test and update unit tests and methods * Update method parameters and error declarations * Added lending endpoints, unit tests, and update endpoint methods and error declarations * Update ratelimiters, add missing lending and trading endpoints and unit tests * Update websocket authentication and subscription handling * Minor update to unit test and types * Types, error handling, and other minor updates * Update unit tests and endpoint functions * error declarations update and unit tests * Overall update on unit endpoint, unit tests, and types * Adding review fixes * Update on endpoints, order types, and unit tests * Update unit tests and endpoint functions * Update on endpoint and update missing parameters * Implemented and tested newly added trading endpoints * endpoints update and unit tests * Update missing endpoints and update overall code * added and testing funding and fiat related endpoints * Update on convert and fiat related endpoints * linter fix, types, endpoints, and unit tests update * linter issues fix * revert changes on tempos * Fix Panic and update websocket auth calls handling * config linter issue fix * Fix panic issues and update unit tests * Fix race condition, TestAllExchangeWrappers unit test issues * Fix withdrawal manager test issue * Rename ClosePositionForContractrID --> ClosePositionForContractID * Rename ClosePositionForContractrID --> ClosePositionForContractID * Fix error * endpoints update and fix unit test issues * added unit tests, updated comments, and code sections * revert change in defaultSubscriptions * few types comments update * Minor changes * remove lending endpoints * rm mistakenly added code * fix unit test * minor unit test fix * Adding offline error tests, update endpoints function, config update * Update unit test coverage for offline error handliing * Updating wrapper algo order coverage, endpoint calls, and unit tests * Updating wrapper trade functions to accomodate algo orders * update wrapper unit tests * Fix wrapper order functions offline errors handling * Tested and updated wrapper order functions * Address review comments * update order unit tests, and okx endpoint functions * finalize affected order, endpoint, and margin endpoints * Slight change on margin unit test * fix margin unit test issues * Minor change on unit test * updates on contract settlement and future contract wrapper function * add test coverage for contract functions and minor fix on wrapper * Overall update and unit testing * codespell, unit tests, type declaration and naming, and code-structure updates * margin types value and validation function fix * Update tests and helper funcs * Improve test coverage * helper functions and unit tests update * Fix margin unit test * Minor review updates * minor fix on if statement * Update helper functions * error handling and functions naming update * update comment * minor error return fixes * minor unit test fix * Minor fix on spread websocket orders handling * codespell fix * skip orderbook depth with incomplete price * skip orderbook depth with incomplete price
525 lines
40 KiB
Go
525 lines
40 KiB
Go
package okx
|
||
|
||
import "errors"
|
||
|
||
// ErrorCodes and their corresponding error messages
|
||
var (
|
||
ErrorCodes = map[string]error{
|
||
"60001": errors.New("\"OK_ACCESS_KEY\" can not be empty"),
|
||
"60002": errors.New("\"OK_ACCESS_SIGN\" can not be empty"),
|
||
"60003": errors.New("\"OK_ACCESS_PASSPHRASE\" can not be empty"),
|
||
"60004": errors.New("invalid OK_ACCESS_TIMESTAMP"),
|
||
"60005": errors.New("invalid OK_ACCESS_KEY"),
|
||
"60006": errors.New("timestamp request expired"),
|
||
"60007": errors.New("invalid sign"),
|
||
"60008": errors.New("public websocket services do not support subscribing to private channels"),
|
||
"60009": errors.New("login failed"),
|
||
"60011": errors.New("please log in"),
|
||
"60012": errors.New("illegal request"),
|
||
"60013": errors.New("invalid args"),
|
||
"60014": errors.New("requests too frequent"),
|
||
"60015": errors.New("connection closed as there was no data transmission in the last 30 seconds"),
|
||
"60016": errors.New("buffer is full, cannot write data"),
|
||
"60017": errors.New("invalid url path"),
|
||
"60018": errors.New("the {0} {1} {2} {3} {4} does not exist"),
|
||
"60019": errors.New("invalid op {op}"),
|
||
"60020": errors.New("apikey subscription amount exceeds the limit {0}"),
|
||
"60021": errors.New("this operation does not support multiple accounts login"),
|
||
"60022": errors.New("bulk login partially succeeded"),
|
||
"60023": errors.New("bulk login requests too frequent"),
|
||
"60024": errors.New("wrong passphrase"),
|
||
"60025": errors.New("token subscription amount exceeds the limit {0}"),
|
||
"60026": errors.New("batch login by apikey and token simultaneously is not supported"),
|
||
"60027": errors.New("parameter {0} can not be empty"),
|
||
"60028": errors.New("private websocket services do not support subscribing to public channels"),
|
||
"60029": errors.New("only users who're VIP5 and above can subscribe to books-l2-tbt order book channels"),
|
||
"60030": errors.New("only users who're VIP4 and above can subscribe to books50-l2-tbt order book channels"),
|
||
"63999": errors.New("internal system error"),
|
||
"70000": errors.New("rFQ does not exist"),
|
||
"70001": errors.New("quote does not exist"),
|
||
"70002": errors.New("block trade does not exist"),
|
||
"70003": errors.New("public block trade does not exist"),
|
||
"70004": errors.New("invalid instrument {0}"),
|
||
"70005": errors.New("the number of legs in RFQ cannot exceed maximum value"),
|
||
"70006": errors.New("does not meet the minimum asset requirement"),
|
||
"70007": errors.New("underlying index {0} does not exist under instType {1}"),
|
||
"70008": errors.New("operation failed under MMP status, the frozen window is {0} seconds"),
|
||
"70009": errors.New("data must have at least 1 valid element"),
|
||
"70011": errors.New("duplicate setting for instType {0}"),
|
||
"70100": errors.New("duplicate instruments in legs array"),
|
||
"70101": errors.New("duplicate clRfqId"),
|
||
"70102": errors.New("no counterparties specified"),
|
||
"70103": errors.New("invalid counterparty"),
|
||
"70105": errors.New("the total value should be greater than the min notional value {0}"),
|
||
"70106": errors.New("the trading amount does not meet the min tradable amount requirement"),
|
||
"70107": errors.New("the number of counterparties cannot exceed maximum value"),
|
||
"70109": errors.New("counterparties for selected instruments are currently unavailable"),
|
||
"70200": errors.New("the RFQ with {0} status cannot be canceled"),
|
||
"70203": errors.New("cancellation failed as rfq count exceeds the limit {0}"),
|
||
"70207": errors.New("cancellation failed as you do not have any active RFQs"),
|
||
"70208": errors.New("cancellation failed as service is unavailable now, please try again later"),
|
||
"70301": errors.New("duplicate clQuoteId"),
|
||
"70303": errors.New("the RFQ with {0} status cannot be quoted"),
|
||
"70304": errors.New("price should be an integer multiple of the tick size"),
|
||
"70305": errors.New("bid price cannot be higher than offer price"),
|
||
"70306": errors.New("the legs of quote do not match the legs of {0}"),
|
||
"70307": errors.New("size should be in integral multiples of the lot size"),
|
||
"70308": errors.New("quote to your own RFQ is not allowed"),
|
||
"70309": errors.New("quote to the same RFQ with the same side is not allowed"),
|
||
"70310": errors.New("quoted price of instId {0} cannot exceed your preset price limit"),
|
||
"70400": errors.New("the quote with {0} status cannot be canceled"),
|
||
"70408": errors.New("cancellation failed as quote count exceeds the limit {0}"),
|
||
"70409": errors.New("cancellation failed as you do not have any active quotes"),
|
||
"70501": errors.New("RFQ {0} is not quoted by {1}"),
|
||
"70502": errors.New("the legs do not match the legs of {0}"),
|
||
"70503": errors.New("the legs of execution do not match the legs of {0}"),
|
||
"70504": errors.New("execution failed as the RFQ status is {0}"),
|
||
"70505": errors.New("execution failed as the quote status is {0}"),
|
||
"70511": errors.New("execution is being processed"),
|
||
"56000": errors.New("block trade does not exist"),
|
||
"56001": errors.New("the number of multi-legs cannot exceed {0}"),
|
||
"56002": errors.New("the number of multi-legs does not match with the verified one"),
|
||
"56003": errors.New("duplicated clBlockTdId"),
|
||
"56004": errors.New("trade with yourself is not allowed"),
|
||
"56005": errors.New("\"clBlockTdId\" should be the same as the verified one"),
|
||
"56006": errors.New("the role should be different from the verified one"),
|
||
"56007": errors.New("leg no.{0} does not match with the verified one"),
|
||
"56008": errors.New("duplicate instruments in legs array"),
|
||
"59000": errors.New("your settings failed as you have positions or open orders"),
|
||
"59001": errors.New("switching unavailable as you have borrowings"),
|
||
"59004": errors.New("only IDs with the same instrument type are supported"),
|
||
"59005": errors.New("when users transfer the margin by themselves in isolated mode, the value of the asset allocated to the position for the first time must be greater than 10,000 USDT"),
|
||
"59100": errors.New("you have open positions. please cancel all open positions before changing the leverage"),
|
||
"59101": errors.New("you have pending orders with isolated positions. please cancel all the pending isolated margin orders and adjust the leverage"),
|
||
"59102": errors.New("leverage exceeds the maximum leverage. please adjust the leverage"),
|
||
"59103": errors.New("leverage is too low and no sufficient margin in your account. please adjust the leverage"),
|
||
"59104": errors.New("the leverage is too high. the borrowed position has exceeded the maximum position of this leverage. please adjust the leverage"),
|
||
"59105": errors.New("leverage can not be less than {0}. please adjust the leverage"),
|
||
"59106": errors.New("the max available margin corresponding to your order tier please adjust your margin and place a new order"),
|
||
"59107": errors.New("you have pending cross margin orders under the service, please modify the leverage after canceling all pending cross margin orders"),
|
||
"59108": errors.New("low leverage and insufficient margin, please adjust the leverage"),
|
||
"59109": errors.New("account equity less than the required margin amount after adjustment. please adjust the leverage "),
|
||
"59110": errors.New("the instrument type corresponding to this {0} does not support the tgtCcy parameter"),
|
||
"59111": errors.New("you cannot query the leverage of cross derivatives positions under a PM account"),
|
||
"59112": errors.New("you have isolated/cross pending orders. please cancel them before adjusting your leverage"),
|
||
"59200": errors.New("insufficient account balance"),
|
||
"59201": errors.New("negative account balance"),
|
||
"59300": errors.New("margin call failed. position does not exist"),
|
||
"59301": errors.New("margin adjustment failed for exceeding the max limit"),
|
||
"59302": errors.New("you have pending close orders, please modify the margin after canceling the orders"),
|
||
"59303": errors.New("insufficient available margin, add margin or reduce the borrowing amount"),
|
||
"59304": errors.New("insufficient equity for borrowing, keep enough funds to pay interest for at least one day"),
|
||
"59305": errors.New("use VIP loan first to set the VIP loan priority"),
|
||
"59306": errors.New("your borrowing amount exceeds the max limit"),
|
||
"59307": errors.New("you are not eligible for VIP loans"),
|
||
"59308": errors.New("unable to repay VIP loan due to insufficient borrow limit"),
|
||
"59309": errors.New("unable to repay an amount that exceeds the borrowed amount"),
|
||
"59310": errors.New("your account does not support VIP loan"),
|
||
"59311": errors.New("unable to set up as there is VIP loan"),
|
||
"59312": errors.New("{currency} does not support VIP loans"),
|
||
"59401": errors.New("holdings already reached the limit"),
|
||
"59402": errors.New("none of the passed instId is in live state, please check them separately"),
|
||
"59500": errors.New("only the APIKey of the main account has permission"),
|
||
"59501": errors.New("only 50 APIKeys can be created per account"),
|
||
"59502": errors.New("note name cannot be duplicate with the currently created APIKey note name"),
|
||
"59503": errors.New("each APIKey can bind up to 20 IP addresses"),
|
||
"59504": errors.New("the sub account does not support the withdrawal function"),
|
||
"59505": errors.New("the passphrase format is incorrect"),
|
||
"59506": errors.New("apikey does not exist"),
|
||
"59507": errors.New("the two accounts involved in a transfer must be two different sub accounts under the same parent account"),
|
||
"59508": errors.New("the sub account of {0} is suspended"),
|
||
"59509": errors.New("account does not have permission to reset MMP status"),
|
||
"59510": errors.New("sub-account does not exist"),
|
||
"59512": errors.New("unable to set up this permission for 'ND' brokers sub accounts"),
|
||
"59601": errors.New("this sub-account name already exists, try another name"),
|
||
"59602": errors.New("number of API keys exceeds the limit"),
|
||
"59603": errors.New("number of sub accounts exceeds the limit"),
|
||
"59604": errors.New("only the main account APIkey can access this API"),
|
||
"59605": errors.New("this API key does not exist in your sub-account, try another API key"),
|
||
"59606": errors.New("transfer funds to your main account before deleting your sub-account"),
|
||
"59608": errors.New("only the broker account has permission to operate this API"),
|
||
"59609": errors.New("broker already exists"),
|
||
"59610": errors.New("broker does not exist"),
|
||
"59611": errors.New("broker unverified"),
|
||
"59612": errors.New("cannot convert time format"),
|
||
"59613": errors.New("there is currently no escrow relationship established with the sub account"),
|
||
"59614": errors.New("managed sub account do not support this operation"),
|
||
"59615": errors.New("the time interval between the begin date and end date cannot exceed 180 days"),
|
||
"59616": errors.New("begin date cannot be greater than end date"),
|
||
"59617": errors.New("sub-account created. failed to set up account level"),
|
||
"59618": errors.New("failed to create sub-account"),
|
||
"58000": errors.New("account type {0} does not supported when getting the sub-account balance"),
|
||
"58001": errors.New("incorrect trade password"),
|
||
"58002": errors.New("please activate savings account first"),
|
||
"58003": errors.New("currency type is not supported by savings account"),
|
||
"58004": errors.New("account blocked (transfer & withdrawal endpoint: either end of the account does not authorize the transfer)"),
|
||
"58005": errors.New("the purchase/redeemed amount must be no greater than {0}"),
|
||
"58006": errors.New("service unavailable for token {0}"),
|
||
"58007": errors.New("abnormal assets interface. please try again later"),
|
||
"58008": errors.New("you do not have assets in this currency"),
|
||
"58009": errors.New("currency pair do not exist"),
|
||
"58010": errors.New("the chain {0} is not supported"),
|
||
"58011": errors.New("sorry, we are unable to provide services to unverified users in {Region} due to local laws and regulations. please verify your account in order to use the services"),
|
||
"58012": errors.New("sorry, you can't transfer assets to this recipient as OKX are unable to provide services to unverified users in {region} due to local laws and regulations"),
|
||
"58100": errors.New("the trading product triggers risk control, and the platform has suspended the fund transfer-out function with related users. please wait patiently"),
|
||
"58101": errors.New("transfer suspended (transfer endpoint: either end of the account does not authorize the transfer)"),
|
||
"58102": errors.New("too frequent transfer (transfer too frequently)"),
|
||
"58104": errors.New("since your P2P transaction is abnormal, you are restricted from making fund transfers. please contact customer support to remove the restriction"),
|
||
"58105": errors.New(`since your P2P transaction is abnormal, you are restricted from making fund transfers. please transfer funds on our website or app to complete identity verification`),
|
||
"58106": errors.New("please enable the account for spot contract"),
|
||
"58107": errors.New("please enable the account for futures contract"),
|
||
"58108": errors.New("please enable the account for option contract"),
|
||
"58109": errors.New("please enable the account for swap contract"),
|
||
"58110": errors.New("the contract triggers risk control, and the platform has suspended the fund transfer function of it. please wait patiently"),
|
||
"58111": errors.New("funds transfer unavailable as the perpetual contract is charging the funding fee. please try again later"),
|
||
"58112": errors.New("your fund transfer failed. please try again later"),
|
||
"58114": errors.New("transfer amount must be more than 0"),
|
||
"58115": errors.New("sub-account does not exist"),
|
||
"58116": errors.New("transfer amount exceeds the limit"),
|
||
"58117": errors.New("account assets are abnormal, please deal with negative assets before transferring"),
|
||
"58119": errors.New("{0} sub-account has no permission to transfer out, please set first"),
|
||
"58120": errors.New("the transfer service is temporarily unavailable, please try again later"),
|
||
"58121": errors.New("this transfer will result in a high-risk level of your position, which may lead to forced liquidation. You need to re-adjust the transfer amount to make sure the position is at a safe level before proceeding with the transfer"),
|
||
"58122": errors.New("a portion of your spot is being used for delta offset between positions. if the transfer amount exceeds the available amount, it may affect current spot-derivatives risk offset structure, which will result in an increased maintenance margin requirement (MMR) rate. please be aware of your risk level"),
|
||
"58123": errors.New("parameter from can not equal to parameter to"),
|
||
"58200": errors.New("withdrawal from {0} to {1} is unavailable for this currency"),
|
||
"58201": errors.New("withdrawal amount exceeds the daily limit"),
|
||
"58202": errors.New("the minimum withdrawal amount for NEO is 1, and the amount must be an integer"),
|
||
"58203": errors.New("please add a withdrawal address"),
|
||
"58204": errors.New("withdrawal suspended"),
|
||
"58205": errors.New("withdrawal amount exceeds the upper limit"),
|
||
"58206": errors.New("withdrawal amount is lower than the lower limit"),
|
||
"58207": errors.New("withdrawal address is not in the verification-free whitelist"),
|
||
"58208": errors.New("withdrawal failed. please link your email"),
|
||
"58209": errors.New("sub-accounts cannot be deposits or withdrawals"),
|
||
"58210": errors.New("withdrawal fee exceeds the upper limit"),
|
||
"58211": errors.New("withdrawal fee is lower than the lower limit (withdrawal endpoint: incorrect fee)"),
|
||
"58212": errors.New("withdrawal fee should be {0} of the withdrawal amount"),
|
||
"58214": errors.New("withdrawals suspended due to {chainName} maintenance"),
|
||
"58215": errors.New("withdrawal ID does not exist"),
|
||
"58216": errors.New("operation not allowed"),
|
||
"58217": errors.New("you cannot withdraw your asset at the moment due to a risk detected in your withdrawal address, contact customer support for details"),
|
||
"58218": errors.New("your saved withdrawal account has expired"),
|
||
"58220": errors.New("the withdrawal order is already canceled"),
|
||
"58221": errors.New("missing label of withdrawal address"),
|
||
"58222": errors.New("illegal withdrawal address"),
|
||
"58224": errors.New("this type of crypto does not support on-chain withdrawing to OKX addresses. please withdraw through internal transfers"),
|
||
"58225": errors.New("sorry, you can't transfer assets to this recipient as OKX are unable to provide services to unverified users in {region} due to local laws and regulations"),
|
||
"58300": errors.New("deposit-address count exceeds the limit"),
|
||
"58301": errors.New("deposit-address not exist"),
|
||
"58302": errors.New("deposit-address needs tag"),
|
||
"58303": errors.New("deposit for the chain {0} is closed now"),
|
||
"58304": errors.New("failed to create invoice"),
|
||
"58350": errors.New("insufficient balance"),
|
||
"58351": errors.New("invoice expired"),
|
||
"58352": errors.New("invalid invoice"),
|
||
"58353": errors.New("deposit amount must be within limits"),
|
||
"58354": errors.New("you have reached the limit of 10000 invoices per day"),
|
||
"58355": errors.New("permission denied. please contact your account manager"),
|
||
"58356": errors.New("the accounts of the same node do not support the lightning network deposit or withdrawal"),
|
||
"58357": errors.New("{0} is not allowed to create a deposit address"),
|
||
"58358": errors.New("fromCcy should not be the same as toCcy"),
|
||
"58370": errors.New("the daily usage of small assets convert exceeds the limit"),
|
||
"58371": errors.New("small assets exceed the maximum limit"),
|
||
"58372": errors.New("insufficient small assets"),
|
||
"55000": errors.New("cannot be transferred out within 30 minutes after delivery"),
|
||
"54000": errors.New("margin transactions unavailable"),
|
||
"54001": errors.New("only multi-currency margin account can be set to borrow coins automatically"),
|
||
"52900": errors.New("general Invalid request"),
|
||
"52901": errors.New("invalid base asset"),
|
||
"52902": errors.New("invalid quote asset"),
|
||
"52903": errors.New("invalid quote amount"),
|
||
"52904": errors.New("invalid quote side"),
|
||
"52905": errors.New("invalid quote price"),
|
||
"52907": errors.New("order not found"),
|
||
"52908": errors.New("invalid order ID"),
|
||
"52909": errors.New("duplicated client order ID"),
|
||
"52910": errors.New("service unavailable, please try again later"),
|
||
"52911": errors.New("RFQ service unavailable, please try again later"),
|
||
"52912": errors.New("server timeout"),
|
||
"52913": errors.New("trade rejected"),
|
||
"52915": errors.New("cannot quote due to large amounts of RFQ and insufficient liquidity, please try again later"),
|
||
"52916": errors.New("insufficient balance in funding account"),
|
||
"52917": errors.New("RFQ quantity cannot be less than the lower limit"),
|
||
"52918": errors.New("insufficient balance in funding account"),
|
||
"52919": errors.New("parameter {param} of convert trading is inconsistent with the quotation"),
|
||
"52920": errors.New("quantity of convert trading cannot exceed the quotation quantity"),
|
||
"52921": errors.New("quote traded, please ask for quote again"),
|
||
"52922": errors.New("quote expired, please ask for quote again"),
|
||
"52923": errors.New("service unavailable, please try again later"),
|
||
"51720": errors.New("redeem error"),
|
||
"51721": errors.New("cancel redeem error"),
|
||
"51722": errors.New("redeem already complete"),
|
||
"51723": errors.New("early redemption is not supported"),
|
||
"51724": errors.New("redemption is currently not supported"),
|
||
"51725": errors.New("cancellation is currently not supported"),
|
||
"51726": errors.New("cancellation of subscriptions/redemptions is not supported"),
|
||
"51727": errors.New("the subscription quantity is below the minimum requirement"),
|
||
"51728": errors.New("the subscription quantity is above the maximum limit"),
|
||
"51729": errors.New("this project has not reached the redemption date"),
|
||
"51730": errors.New("sold out"),
|
||
"52000": errors.New("no market data found"),
|
||
"51000": errors.New("parameter {0} error"),
|
||
"51001": errors.New("instrument ID does not exist"),
|
||
"51002": errors.New("instrument ID does not match underlying index"),
|
||
"51003": errors.New("either client order ID or order ID is required"),
|
||
"51004": errors.New("order amount exceeds current tier limit, please lower the leverage"),
|
||
"51005": errors.New("order amount exceeds the limit"),
|
||
"51006": errors.New("order price is not within the price limit (max buy price: {0} min sell price: {1})"),
|
||
"51007": errors.New("order placement failed. order amount should be at least 1 contract (showing up when placing an order with less than 1 contract)"),
|
||
"51008": errors.New("delegate failed. Insufficient {0} balance in account"),
|
||
"51009": errors.New("order placement function is blocked by the platform"),
|
||
"51010": errors.New("operation is not supported under the current account mode"),
|
||
"51011": errors.New("duplicated order ID"),
|
||
"51012": errors.New("token does not exist"),
|
||
"51014": errors.New("index does not exist"),
|
||
"51015": errors.New("instrument ID does not match instrument type"),
|
||
"51016": errors.New("duplicated client order ID"),
|
||
"51017": errors.New("borrow amount exceeds the limit"),
|
||
"51018": errors.New("user with option account can not hold net short positions"),
|
||
"51019": errors.New("no net long positions can be held under cross margin mode in options"),
|
||
"51020": errors.New("order amount should be greater than the min available amount"),
|
||
"51021": errors.New("contract to be listed"),
|
||
"51022": errors.New("contract suspended"),
|
||
"51023": errors.New("position does not exist"),
|
||
"51024": errors.New("trading account is blocked"),
|
||
"51025": errors.New("order count exceeds the limit"),
|
||
"51026": errors.New("instrument type does not match underlying index"),
|
||
"51027": errors.New("contract expired"),
|
||
"51028": errors.New("contract under delivery"),
|
||
"51029": errors.New("contract is being settled"),
|
||
"51030": errors.New("funding fee is being settled"),
|
||
"51031": errors.New("this order price is not within the closing price range"),
|
||
"51032": errors.New("closing all positions at market price"),
|
||
"51033": errors.New("the total amount per order for this pair has reached the upper limit"),
|
||
"51037": errors.New("the current account risk status only supports you to place IOC orders that can reduce the risk of your account"),
|
||
"51038": errors.New("there is already an IOC order under the current risk module that reduces the risk of the account"),
|
||
"51039": errors.New("leverage cannot be adjusted for the cross positions of futures and perpetual swap under the PM account"),
|
||
"51040": errors.New("cannot adjust margins for long isolated options positions"),
|
||
"51041": errors.New("portfolio margin account only supports net mode"),
|
||
"51044": errors.New("the order type {0}, {1} is not allowed to set stop loss and take profit"),
|
||
"51046": errors.New("the take profit trigger price should be higher than the order price"),
|
||
"51047": errors.New("the stop loss trigger price should be lower than the order price"),
|
||
"51048": errors.New("the take profit trigger price should be lower than the order price"),
|
||
"51049": errors.New("the stop loss trigger price should be higher than the order price"),
|
||
"51050": errors.New("the take profit trigger price should be higher than the best ask price"),
|
||
"51051": errors.New("the stop loss trigger price should be lower than the best ask price"),
|
||
"51052": errors.New("the take profit trigger price should be lower than the best bid price"),
|
||
"51053": errors.New("the stop loss trigger price should be higher than the best bid price"),
|
||
"51054": errors.New("getting information timed out, please try again later"),
|
||
"51055": errors.New("futures grid is not available in portfolio margin mode"),
|
||
"51056": errors.New("action not allowed"),
|
||
"51057": errors.New("futures grid is not available in simple trading mode"),
|
||
"51058": errors.New("no position"),
|
||
"51059": errors.New("strategy for the current state does not support this operation"),
|
||
"51101": errors.New("entered amount exceeds the max pending order amount per transaction"),
|
||
"51102": errors.New("entered amount exceeds the max pending count"),
|
||
"51103": errors.New("entered amount exceeds the max pending order count of the underlying asset"),
|
||
"51104": errors.New("entered amount exceeds the max pending order amount of the underlying asset"),
|
||
"51105": errors.New("entered amount exceeds the max order amount of the contract"),
|
||
"51106": errors.New("entered amount exceeds the max order amount of the underlying asset"),
|
||
"51107": errors.New("entered amount exceeds the max holding amount"),
|
||
"51108": errors.New("positions exceed the limit for closing out with the market price"),
|
||
"51109": errors.New("no available offer"),
|
||
"51110": errors.New("you can only place a limit order after call auction has started"),
|
||
"51111": errors.New("maximum {0} orders can be placed in bulk"),
|
||
"51112": errors.New("close order size exceeds your available size"),
|
||
"51113": errors.New("market-price liquidation requests too frequent"),
|
||
"51115": errors.New("cancel all pending close-orders before liquidation"),
|
||
"51116": errors.New("order price or trigger price exceeds {0}"),
|
||
"51117": errors.New("pending close-orders count exceeds limit"),
|
||
"51120": errors.New("order quantity is less than {0}, please try again"),
|
||
"51121": errors.New("order count should be the integer multiples of the lot size"),
|
||
"51122": errors.New("order price should be higher than the min price {0}"),
|
||
"51124": errors.New("you can only place limit orders during call auction"),
|
||
"51125": errors.New("currently there are reduce + reverse position pending orders in margin trading. please cancel all reduce + reverse position pending orders and continue"),
|
||
"51126": errors.New("currently there are reduce only pending orders in margin trading. please cancel all reduce only pending orders and continue"),
|
||
"51127": errors.New("available balance is 0"),
|
||
"51128": errors.New("multi-currency margin account can not do cross-margin trading"),
|
||
"51129": errors.New("the value of the position and buy order has reached the position limit, and no further buying is allowed"),
|
||
"51130": errors.New("fixed margin currency error"),
|
||
"51131": errors.New("insufficient balance"),
|
||
"51132": errors.New("your position amount is negative and less than the minimum trading amount"),
|
||
"51133": errors.New("reduce-only feature is unavailable for the spot transactions by multi-currency margin account"),
|
||
"51134": errors.New("closing failed. please check your holdings and pending orders"),
|
||
"51135": errors.New("your closing price has triggered the limit price, and the max buy price is {0}"),
|
||
"51136": errors.New("your closing price has triggered the limit price, and the min sell price is {0}"),
|
||
"51137": errors.New("your opening price has triggered the limit price, and the max buy price is {0}"),
|
||
"51138": errors.New("your opening price has triggered the limit price, and the min sell price is {0}"),
|
||
"51139": errors.New("reduce-only feature is unavailable for the spot transactions by simple account"),
|
||
"51145": errors.New("when users transfer the margin by themselves in isolated mode, it’s not supported to place orders in advance"),
|
||
"51147": errors.New("the total value of assets in your trading account needs to be greater than 50,000 USD to trade options"),
|
||
"51148": errors.New("reduceOnly cannot increase the position quantity"),
|
||
"51149": errors.New("order timed out, please try again later"),
|
||
"51150": errors.New("the precision of the number of trades or the price exceeds the limit"),
|
||
"51201": errors.New("value of per market order cannot exceed 1,000,000 USDT"),
|
||
"51202": errors.New("market - order amount exceeds the max amount"),
|
||
"51203": errors.New("order amount exceeds the limit {0}"),
|
||
"51204": errors.New("the price for the limit order can not be empty"),
|
||
"51205": errors.New("reduce-only is not available"),
|
||
"51206": errors.New("please cancel the reduce only order before placing the current {0} order to avoid opening a reverse position"),
|
||
"51250": errors.New("algo order price is out of the available range"),
|
||
"51251": errors.New("algo order type error (when user place an iceberg order)"),
|
||
"51252": errors.New("algo order price is out of the available range"),
|
||
"51253": errors.New("average amount exceeds the limit of per iceberg order"),
|
||
"51254": errors.New("iceberg average amount error (when user place an iceberg order)"),
|
||
"51255": errors.New("limit of per iceberg order: total amount/1000 < x <= total amount"),
|
||
"51256": errors.New("iceberg order price variance error"),
|
||
"51257": errors.New("trail order callback rate error"),
|
||
"51258": errors.New("trail - order placement failed. the trigger price of a sell order should be higher than the last transaction price"),
|
||
"51259": errors.New("trail - order placement failed. the trigger price of a buy order should be lower than the last transaction price"),
|
||
"51260": errors.New("maximum {0} pending trail - orders can be held at the same time"),
|
||
"51261": errors.New("each user can hold up to {0} pending stop - orders at the same time"),
|
||
"51262": errors.New("maximum {0} pending iceberg orders can be held at the same time"),
|
||
"51263": errors.New("maximum {0} pending time-weighted orders can be held at the same time"),
|
||
"51264": errors.New("average amount exceeds the limit of per time-weighted order"),
|
||
"51265": errors.New("time-weighted order limit error"),
|
||
"51267": errors.New("time-weighted order strategy initiative rate error"),
|
||
"51268": errors.New("time-weighted order strategy initiative range error"),
|
||
"51269": errors.New("time-weighted order interval error, the interval should be {0}<= x<={1}"),
|
||
"51270": errors.New("the limit of time-weighted order price variance is 0 < x <= 1%"),
|
||
"51271": errors.New("sweep ratio should be 0 < x <= 100%"),
|
||
"51272": errors.New("price variance should be 0 < x <= 1%"),
|
||
"51273": errors.New("total amount should be more than {0}"),
|
||
"51274": errors.New("total quantity of time-weighted order must be larger than single order limit"),
|
||
"51275": errors.New("the amount of single stop-market order can not exceed the upper limit"),
|
||
"51276": errors.New("stop - market orders cannot specify a price"),
|
||
"51277": errors.New("TP trigger price can not be higher than the last price"),
|
||
"51278": errors.New("SL trigger price can not be lower than the last price"),
|
||
"51279": errors.New("TP trigger price can not be lower than the last price"),
|
||
"51280": errors.New("SL trigger price can not be higher than the last price"),
|
||
"51281": errors.New("trigger not support the tgtCcy parameter"),
|
||
"51282": errors.New("the range of price variance is {0}~{1}"),
|
||
"51283": errors.New("the range of time interval is {0}~{1}"),
|
||
"51284": errors.New("the range of average amount is {0}~{1}"),
|
||
"51285": errors.New("the range of total amount is {0}~{1}"),
|
||
"51286": errors.New("the total amount should not be less than {0}"),
|
||
"51287": errors.New("contract not supported"),
|
||
"51288": errors.New("we are stopping the bot. please do not click it multiple times"),
|
||
"51289": errors.New("bot configuration does not exist. please try again later"),
|
||
"51290": errors.New("the bot engine is being upgraded. please try again later"),
|
||
"51291": errors.New("this bot does not exist or has been stopped"),
|
||
"51292": errors.New("this bot type does not exist"),
|
||
"51293": errors.New("this bot does not exist"),
|
||
"51294": errors.New("this bot cannot be created temporarily. please try again later"),
|
||
"51295": errors.New("portfolio margin account does not support ordType {0} in trading bot mode"),
|
||
"51298": errors.New("trigger orders are not available in the net mode of futures and perpetual swaps"),
|
||
"51299": errors.New("order did not go through. you can hold maximum {0} orders of this type"),
|
||
"51300": errors.New("TP trigger price can not be higher than the mark price"),
|
||
"51302": errors.New("SL trigger price can not be lower than the mark price"),
|
||
"51303": errors.New("TP trigger price can not be lower than the mark price"),
|
||
"51304": errors.New("SL trigger price can not be higher than the mark price"),
|
||
"51305": errors.New("TP trigger price can not be higher than the index price"),
|
||
"51306": errors.New("SL trigger price can not be lower than the index price"),
|
||
"51307": errors.New("TP trigger price can not be lower than the index price"),
|
||
"51308": errors.New("SL trigger price can not be higher than the index price"),
|
||
"51309": errors.New("cannot create trading bot during call auction"),
|
||
"51310": errors.New("when users transfer the margin by themselves in isolated mode, strategic orders with ordType iceberg and twap will not be supported"),
|
||
"51311": errors.New("failed to place trailing stop order. callback rate should be within {0}<x<={1}"),
|
||
"51312": errors.New("failed to place trailing stop order. order amount should be within {0}<x<={1}"),
|
||
"51313": errors.New("manual transfer in isolated mode does not support bot trading"),
|
||
"51317": errors.New("trigger orders are not available by margin"),
|
||
"51340": errors.New("used margin must be greater than {0}{1}"),
|
||
"51341": errors.New("position closing not allowed"),
|
||
"51342": errors.New("closing order already exists.please try again later"),
|
||
"51343": errors.New("TP price must be less than the lower price"),
|
||
"51344": errors.New("SL price must be greater than the upper price"),
|
||
"51345": errors.New("policy type is not grid policy"),
|
||
"51346": errors.New("the highest price cannot be lower than the lowest price"),
|
||
"51347": errors.New("no profit available"),
|
||
"51348": errors.New("stop price should be less than the lowest price in the range"),
|
||
"51349": errors.New("stop profit price should be greater than the highest price in the range"),
|
||
"51350": errors.New("no recommended parameters"),
|
||
"51351": errors.New("single income must be greater than 0"),
|
||
"51370": errors.New("the range of lever is {0}~{1}"),
|
||
"51400": errors.New("cancellation failed as the order does not exist"),
|
||
"51401": errors.New("cancellation failed as the order is already canceled"),
|
||
"51402": errors.New("cancellation failed as the order is already completed"),
|
||
"51403": errors.New("cancellation failed as the order type does not support cancellation"),
|
||
"51404": errors.New("order cancellation unavailable during the second phase of call auction"),
|
||
"51405": errors.New("cancellation failed as you do not have any pending orders"),
|
||
"51406": errors.New("canceled - order count exceeds the limit {0}"),
|
||
"51407": errors.New("either order ID or client order ID is required"),
|
||
"51408": errors.New("pair ID or name does not match the order info"),
|
||
"51409": errors.New("either pair ID or pair name ID is required"),
|
||
"51410": errors.New("cancellation failed as the order is already under cancelling status"),
|
||
"51411": errors.New("account does not have permission for mass cancellation"),
|
||
"51412": errors.New("the order has been triggered and cannot be cancelled"),
|
||
"51413": errors.New("cancellation failed as the order type is not supported by endpoint"),
|
||
"51415": errors.New("unable to place order. spot trading only supports using the last price as trigger price. please select \"Last\" and try again"),
|
||
"51500": errors.New("either order price or amount is required"),
|
||
"51501": errors.New("maximum {0} orders can be modified"),
|
||
"51502": errors.New("order modification failed for insufficient margin"),
|
||
"51503": errors.New("order modification failed as the order does not exist"),
|
||
"51506": errors.New("order modification unavailable for the order type"),
|
||
"51508": errors.New("orders are not allowed to be modified during the call auction"),
|
||
"51509": errors.New("modification failed as the order has been canceled"),
|
||
"51510": errors.New("modification failed as the order has been completed"),
|
||
"51511": errors.New("operation failed as the order price did not meet the requirement for post only"),
|
||
"51512": errors.New("failed to amend bulk orders. you cannot add duplicate batch orders in your portfolio margin account"),
|
||
"51513": errors.New("number of modification requests that are currently in progress for an order cannot exceed 3"),
|
||
"51600": errors.New("status not found"),
|
||
"51601": errors.New("order status and order ID cannot exist at the same time"),
|
||
"51602": errors.New("either order status or order ID is required"),
|
||
"51603": errors.New("order does not exist"),
|
||
"51607": errors.New("the file is generating"),
|
||
"50100": errors.New("API frozen, please contact customer service"),
|
||
"50101": errors.New("APIKey does not match current environment"),
|
||
"50102": errors.New("timestamp request expired"),
|
||
"50103": errors.New("request header \"OK_ACCESS_KEY\" can not be empty"),
|
||
"50104": errors.New("request header \"OK_ACCESS_PASSPHRASE\" can not be empty"),
|
||
"50105": errors.New("request header \"OK_ACCESS_PASSPHRASE\" incorrect"),
|
||
"50106": errors.New("request header \"OK_ACCESS_SIGN\" can not be empty"),
|
||
"50107": errors.New("request header \"OK_ACCESS_TIMESTAMP\" can not be empty"),
|
||
"50108": errors.New("exchange ID does not exist"),
|
||
"50109": errors.New("exchange domain does not exist"),
|
||
"50110": errors.New("your IP {0} is not in linking trusted IP addresses.(You can add your IP in linking trusted IP addresses)"),
|
||
"50111": errors.New("invalid OK_ACCESS_KEY"),
|
||
"50112": errors.New("invalid OK_ACCESS_TIMESTAMP"),
|
||
"50113": errors.New("invalid signature"),
|
||
"50114": errors.New("invalid authorization"),
|
||
"50115": errors.New("invalid request method"),
|
||
"1": errors.New("operation failed"),
|
||
"2": errors.New("bulk operation partially succeeded"),
|
||
"50000": errors.New("body can not be empty"),
|
||
"50001": errors.New("service temporarily unavailable, please try again later"),
|
||
"50002": errors.New("json data format error"),
|
||
"50004": errors.New("endpoint request timeout (does not mean that the request was successful or failed, please check the request result)"),
|
||
"50005": errors.New("API is offline or unavailable"),
|
||
"50006": errors.New("invalid Content_Type, please use \"application/json\" format"),
|
||
"50007": errors.New("account blocked"),
|
||
"50008": errors.New("user does not exist"),
|
||
"50009": errors.New("account is suspended due to ongoing liquidation"),
|
||
"50010": errors.New("user ID can not be empty"),
|
||
"50011": errors.New("requests too frequent"),
|
||
"50012": errors.New("account status invalid"),
|
||
"50013": errors.New("system is busy, please try again later"),
|
||
"50014": errors.New("parameter {0} can not be empty"),
|
||
"50015": errors.New("either parameter {0} or {1} is required"),
|
||
"50016": errors.New("parameter {0} does not match parameter {1}"),
|
||
"50017": errors.New("the position is frozen due to ADL. operation restricted"),
|
||
"50018": errors.New("currency {0} is frozen due to ADL. operation restricted"),
|
||
"50019": errors.New("the account is frozen due to ADL. operation restricted"),
|
||
"50020": errors.New("the position is frozen due to liquidation. operation restricted"),
|
||
"50021": errors.New("currency {0} is frozen due to liquidation. operation restricted"),
|
||
"50022": errors.New("the account is frozen due to liquidation. operation restricted"),
|
||
"50023": errors.New("funding fee frozen. operation restricted"),
|
||
"50024": errors.New("parameter {0} and {1} can not exist at the same time"),
|
||
"50025": errors.New("parameter {0} count exceeds the limit {1}"),
|
||
"50026": errors.New("system error, please try again later"),
|
||
"50027": errors.New("the account is restricted from trading"),
|
||
"50028": errors.New("unable to take the order, please reach out to support center for details"),
|
||
"50029": errors.New(`this instrument ({0}) is unavailable at present due to risk management. please contact customer service for help`),
|
||
"50030": errors.New("no permission to use this API"),
|
||
"50031": errors.New("amount cannot exceed 100"),
|
||
"50032": errors.New("this asset is blocked, allow its trading and try again"),
|
||
"50033": errors.New("this instrument is blocked, allow its trading and try again"),
|
||
"50034": errors.New("you are not currently on the whitelist, please contact customer service"),
|
||
"50035": errors.New("this endpoint requires that APIKey must be bound to IP"),
|
||
"50036": errors.New("invalid expTime"),
|
||
"50037": errors.New("order expired"),
|
||
"50038": errors.New("this feature is temporarily unavailable in demo trading"),
|
||
"50039": errors.New("the before parameter is not available for implementing timestamp pagination"),
|
||
}
|
||
)
|