Upbit 参数详解
Upbit 作为韩国领先的加密货币交易所之一,提供了丰富的交易功能和数据API。理解Upbit的各种参数对于进行高效的交易和数据分析至关重要。本文将深入探讨 Upbit 的关键参数,帮助用户更好地利用该平台。
1. 市场代码(Market Code)
Upbit 使用市场代码来唯一标识交易对。市场代码遵循标准的
QUOTE-BASE
格式,由两部分组成,分别是基础货币(Base Currency)和报价货币(Quote Currency),两者之间使用短横线 "-" 连接。这种设计使得用户和应用程序能够清晰地识别交易对的构成,例如,明确知道用哪种货币购买哪种资产。
- 基础货币(Base Currency) : 指交易的标的物,也就是你想要买入的数字资产。常见的例子包括比特币 (BTC)、以太坊 (ETH)、瑞波币 (XRP) 等。基础货币代表了交易的核心目标。
- 报价货币(Quote Currency) : 指用于购买基础货币的货币,也称为交易媒介。报价货币通常是法币,比如韩元 (KRW)、美元 (USD),或者其他主流加密货币,如 USDT (泰达币) 和 BTC (比特币)。选择合适的报价货币直接影响交易成本和便利性。
例如,
KRW-BTC
表示使用韩元(KRW)购买比特币(BTC)的交易对,这通常是韩国用户常用的交易方式。
USDT-ETH
则表示使用美元稳定币 USDT 购买以太坊(ETH)的交易对,为全球用户提供了参与 ETH 交易的途径。
BTC-ETH
表示使用比特币购买以太坊的交易对,是一种加密货币之间的直接兑换。
Upbit 提供的不同类型的市场代码反映了不同的市场交易深度、交易成本以及用户群体。KRW 交易对通常具有较高的交易深度,尤其是在韩国交易时段,但可能仅限于韩国境内用户参与。USDT 交易对则允许全球用户参与,提供了更广泛的流动性,但可能需要考虑额外的交易费用或汇率转换成本。选择合适的市场代码需要综合考虑交易需求、地理位置和风险承受能力。
通过 Upbit API 的
GET /markets
接口,可以获取 Upbit 平台支持的所有市场代码及其详细信息。该接口返回一个 JSON 数组,其中每个元素代表一个市场代码,并包含市场代码本身、韩文名称 (
korean_name
) 和英文名称 (
english_name
) 等信息。这使得开发者可以轻松地集成 Upbit 的市场数据到自己的应用程序中。
返回的 JSON 数据示例如下:
[ { "market": "KRW-BTC", "korean_name": "비트코인", "english_name": "Bitcoin" }, { "market": "KRW-ETH", "korean_name": "이더리움", "english_name": "Ethereum" }, { "market": "BTC-ETH", "korean_name": "이더리움", "english_name": "Ethereum" }, ... ]
2. 订单类型 (Order Type)
Upbit 提供了多种订单类型,以满足不同交易策略和风险偏好的用户需求。理解和选择合适的订单类型对于成功的加密货币交易至关重要。常见的订单类型包括:
- 指定价 (Limit Order) : 用户设定一个期望的买入或卖出价格。只有当市场价格达到或优于该指定价格时,订单才会被执行。指定价订单允许交易者控制成交价格,但不能保证一定成交,尤其是在价格快速变动时。例如,买入时,你设定一个低于当前市场价的价格;卖出时,你设定一个高于当前市场价的价格。
- 市价 (Market Order) : 用户以当前市场上最优的价格立即买入或卖出。市价订单的优点是保证迅速成交,但缺点是最终成交价格具有不确定性,尤其是在市场深度不足或波动性较高的情况下,实际成交价格可能与下单时的价格相差较大。交易者需承担一定的滑点风险。
- 限价止损 (Stop Limit Order) : 结合了止损单和限价单的特性。用户需要设置两个价格:止损价 (Stop Price) 和限价 (Limit Price)。当市场价格达到止损价时,系统会触发一个限价订单,其价格被设定为用户指定的限价。这种订单类型旨在限制潜在损失,同时尽量保证以期望的价格成交。但是,如果触发后市场价格迅速变化,限价订单可能无法成交。止损价通常设为劣于当前市场价的价格,买入时高于当前市场价,卖出时低于当前市场价。
- 市价止损 (Stop Market Order) : 同样需要设置一个止损价 (Stop Price)。当市场价格达到止损价时,系统会立即触发一个市价订单。与限价止损订单不同,市价止损订单旨在保证立即成交,但牺牲了价格控制。最终成交价格可能远低于止损价,尤其是在市场剧烈波动的情况下。适用于希望尽快止损的交易者。止损价通常设为劣于当前市场价的价格,买入时高于当前市场价,卖出时低于当前市场价。
在 Upbit API 中,
ord_type
参数用于指定订单类型,这是进行自动化交易和策略执行的关键参数。以下是各种订单类型对应的参数值:
-
limit
: 指定价订单。需要指定想要买入或卖出的价格。 -
price
: 市价订单 (买入时)。与其它交易所不同,Upbit 在使用市价买单时,需要提供希望花费的总韩元金额(volume
参数可以忽略或设置为null
),而不是想要购买的数字货币数量。系统会根据当前市场最优价格,使用指定的韩元金额尽可能多地购买数字货币。 -
market
: 市价订单 (卖出时)。卖出时,则直接指定要卖出的数字货币数量。系统会根据当前市场最优价格,卖出指定数量的数字货币。 -
stop_limit
: 限价止损订单。需要同时提供止损价和限价。 -
stop_market
: 市价止损订单。只需要提供止损价。
3. 订单方向 (Order Side)
订单方向(Order Side)定义了交易的意图,明确了交易者是希望购买(Bid)还是出售(Ask)特定加密货币。订单方向是执行交易的关键参数,直接影响交易的执行和市场的价格动态。
- 买入 (Bid) : 用户向市场发出购买指定数量加密货币的意愿。买入订单通常会以一定的价格挂单,等待市场上的卖出订单与之成交。买入订单的执行会增加市场上的需求,可能推动价格上涨。
- 卖出 (Ask) : 用户向市场发出出售指定数量加密货币的意愿。卖出订单同样会以一定的价格挂单,等待市场上的买入订单与之成交。卖出订单的执行会增加市场上的供给,可能导致价格下跌。
在 Upbit API 中,
side
参数是构建订单请求时必不可少的参数,用于明确指定订单的交易方向。正确的设置
side
参数是确保交易按照预期执行的前提。
-
bid
: 指定订单为买入订单,即用户希望购买加密货币。 -
ask
: 指定订单为卖出订单,即用户希望出售加密货币。
例如,如果用户希望以市价购买 1 ETH,则
side
参数应设置为
bid
。相反,如果用户希望以市价出售 1 ETH,则
side
参数应设置为
ask
。理解并正确使用
side
参数对于在 Upbit 交易所进行有效交易至关重要。需要注意的是,不同的订单类型(例如市价单、限价单等)在与
side
参数结合使用时,其执行逻辑和对市场的影响也会有所不同。
4. 数量 (Volume) 和 价格 (Price)
- Volume (数量) : 指用户希望买入或卖出的加密货币的数量单位,例如,希望买入1个比特币,那么Volume就是1。在交易API中,Volume通常以加密货币的最小可分割单位来表示,需要根据具体的交易平台和加密货币的精度进行计算。
- Price (价格) : 指用户希望买入或卖出的加密货币的单价,通常以法币(如美元、韩元)或者其他加密货币(如以太坊)计价。价格反映了市场对该加密货币价值的评估,是交易决策的关键因素。价格波动受到供需关系、市场情绪、宏观经济因素等多种因素的影响。
需要注意的是,在一些交易所的API设计中,对于市价买入订单,传递参数的方式有所不同。以Upbit API为例,如果用户希望以当前市场最优价格立即买入一定价值的加密货币,需要将
volume
参数设置为
null
。此时,需要通过
price
参数来指定用户愿意支付的总韩元金额。系统将根据当前市场价格,自动计算出可以购买到的最大数量的加密货币,并完成交易。这种方式允许用户方便地指定购买的总预算,而无需手动计算具体数量。
5. 交易费用 (Fee)
Upbit 对每笔成功的加密货币交易收取交易费用,这是交易所维持运营和提供服务的重要收入来源。交易费用的计算方式通常是按照交易金额的一定百分比收取,这意味着交易额越大,产生的交易费用也越高。Upbit 的交易费用结构并非固定不变,它会根据用户的会员等级以及所交易的特定交易对而有所不同。因此,了解当前的交易费用对于优化交易策略和最大化投资回报至关重要。
用户可以通过多种途径获取关于 Upbit 最新交易费用的信息。最直接的方式是访问 Upbit 官方网站,通常在“费用”或“帮助中心”等相关页面可以找到详细的费用说明。Upbit 也提供了 API (应用程序编程接口) 文档,开发者和高级用户可以通过 API 查询实时的交易费用信息,并将这些数据集成到自己的交易工具或策略中。务必在进行交易前查阅最新的费用信息,避免不必要的成本增加。
6. 账户余额 (Balance)
为了高效地进行数字资产交易,用户需要实时掌握其账户余额情况。Upbit API 提供了一个专门用于获取账户余额的接口:
GET /accounts
。此接口的响应为一个 JSON 数组,详细列出了用户账户中所有已持有币种的余额信息,包括可用余额和锁定余额等关键数据。
以下是一个从
GET /accounts
接口返回的 JSON 响应示例:
[
{
"currency": "KRW",
"balance": "1000000.0",
"locked": "0.0",
"avg_buy_price": "0",
"avg_buy_price_modified": false,
"unit_currency": "KRW"
},
{
"currency": "BTC",
"balance": "0.1",
"locked": "0.0",
"avg_buy_price": "60000000",
"avg_buy_price_modified": false,
"unit_currency": "KRW"
},
...
]
该 JSON 数组中的每个元素代表一种特定的数字货币或法币,并包含以下关键字段:
-
currency
: 币种代码,采用标准符号表示。例如,KRW
代表韩元,BTC
代表比特币,ETH
代表以太坊。此字段标识了余额对应的币种类型。 -
balance
: 可用余额,表示用户可以立即用于交易的币种数量。这是一个数值型的字符串,需要进行适当的类型转换才能用于计算。 -
locked
: 锁定余额,指由于未完成的订单或其他原因而被暂时冻结的币种数量。这部分余额无法立即用于交易。 例如挂单中的买单或卖单所占用的资金。理解锁定余额对于避免重复下单至关重要。 -
avg_buy_price
: 平均购买价格,表示用户购买该币种的平均成本。 此字段可以帮助用户评估投资回报和制定交易策略。 其计算方式通常是所有购买价格的加权平均值。 -
avg_buy_price_modified
: 平均购买价格是否被修改。该字段为布尔值,标识平均购买价格是否被手动调整过。如果为true,则表明该平均价格并非系统自动计算,而是经过人工干预。 -
unit_currency
: 计价货币,表示用于衡量币种价值的货币单位。在 Upbit 交易所中,通常使用KRW
作为计价货币。例如,BTC 的价值以 KRW 来衡量。
正确解析和利用
GET /accounts
接口返回的数据,对于开发自动化交易策略、监控账户盈亏以及进行风险管理至关重要。开发者应充分理解每个字段的含义,并根据实际需求进行相应的处理。
7. API 密钥 (API Key)
为了与 Upbit API 进行交互并执行诸如交易、查询账户信息等操作,用户必须生成 API 密钥。 API 密钥由两部分组成:访问密钥 (Access Key) 和安全密钥 (Secret Key)。 访问密钥 (Access Key) 类似于用户名,用于标识特定的用户或应用程序,而安全密钥 (Secret Key) 则相当于密码,用于对请求进行签名和验证,确保请求的安全性。
用户需要在 Upbit 官方网站的安全设置页面创建 API 密钥。创建成功后,务必妥善保管安全密钥 (Secret Key)。 由于安全密钥具有极高的权限,一旦泄露,可能导致账户资金损失或其他安全风险。请务必采取必要的安全措施,例如将安全密钥存储在安全的地方,切勿以明文形式存储在代码或配置文件中,更不能通过电子邮件或聊天工具发送给他人。 Upbit 官方建议定期更换 API 密钥,以提高账户的安全性。如果怀疑 API 密钥已泄露,请立即禁用并重新生成新的 API 密钥。
8. WebSocket API 参数
除了 REST API,Upbit 还提供了 WebSocket API,用于实时获取市场数据。WebSocket API 采用 JSON 格式进行数据传递,这使得数据交换更加高效和结构化,非常适合需要快速响应的市场数据更新。
常见的 WebSocket 参数,用于建立连接和订阅特定类型的市场数据,详细说明如下:
-
ticket
: 用于身份验证的唯一标识符,旨在防止API滥用和未授权访问。每个请求都需要有效的 ticket,以确保安全性。 -
type
: 订阅类型,决定了你需要接收哪种市场数据。常见的类型包括ticker
(当前市场价格快照),trade
(最新的交易记录),orderbook
(订单簿的当前状态)。 -
codes
: 订阅的市场代码列表,指定了你需要接收哪些交易对的数据。例如,["KRW-BTC", "KRW-ETH"]
表示订阅韩元计价的比特币和以太坊的数据。 -
format
: 数据格式,通常设置为SIMPLE
或DEFAULT
。SIMPLE
格式通常提供精简的数据,而DEFAULT
格式提供更详细的信息。选择哪种格式取决于你的应用场景和对数据详细程度的需求。 -
isOnlyRealtime
: 指示是否只接收实时数据更新。设置为true
时,仅接收最新的市场活动,而不会接收历史数据。
例如,要订阅 KRW-BTC 和 KRW-ETH 的实时交易和 Ticker 数据,可以发送以下 JSON 消息:
[
{
"ticket": "UNIQUE_TICKET"
},
{
"type": "trade",
"codes": [
"KRW-BTC",
"KRW-ETH"
],
"isOnlyRealtime": true
},
{
"type": "ticker",
"codes": [
"KRW-BTC",
"KRW-ETH"
],
"isOnlyRealtime": true
}
]
上述示例展示了如何使用 WebSocket API 订阅多种类型的市场数据。通过调整
type
和
codes
参数,你可以灵活地定制需要接收的数据,从而构建实时监控和交易系统。
9. Candles API 参数详解
Upbit 交易所提供强大的 Candles API,用于获取特定交易对的历史 K 线(OHLCV)数据。 这些数据对于技术分析、量化交易策略和历史趋势研究至关重要。以下详细解释了 Candles API 的关键参数:
-
market
: 市场代码(Market Identifier) 。 这是指定要查询的交易对的唯一标识符。例如,"KRW-BTC"
代表韩元 (KRW) 计价的比特币 (BTC) 交易对。 其他有效的市场代码可能包括"BTC-ETH"
(比特币计价的以太坊) 或"USDT-XRP"
(泰达币计价的瑞波币)。务必使用 Upbit 交易所支持的有效市场代码。 -
count
: K 线数量(Number of Candles) 。 这个参数定义了 API 响应中返回的 K 线数量。 Upbit API 限制了单次请求的最大 K 线数量为 200。如果需要获取超过 200 个 K 线数据,需要多次调用 API 并使用to
参数进行分页。 建议根据您的数据分析需求合理设置count
值。 -
to
: 结束时间(End Time) 。 此参数允许指定返回的 K 线数据的结束时间点(UTC时间)。 可以使用两种格式表示结束时间:yyyy-MM-dd'T'HH:mm:ss'Z'
(ISO 8601 格式)或者 UNIX 时间戳(自 Unix 纪元以来的秒数)。 例如,"2023-10-27T10:00:00Z"
或1698391200
。 如果省略to
参数,API 将默认返回最新的 K 线数据,即截至服务器当前时间的 K 线数据。 使用to
参数可以精确控制数据的时间范围,实现历史数据的回溯。 -
unit
: K 线时间周期(Candle Timeframe) 。 这个参数定义了每根 K 线代表的时间间隔。 Upbit API 支持多种时间周期, 包括分钟级别 (minutes1
,minutes5
,minutes15
,minutes30
,minutes60
,minutes240
), 天级别 (days
), 周级别 (weeks
) 和月级别 (months
)。 例如,minutes1
表示每根 K 线代表 1 分钟的数据,days
表示每根 K 线代表 1 天的数据。 选择合适的时间周期取决于您的交易策略和分析目标。例如,短线交易者可能会更关注分钟级别的数据,而长线投资者则更关注日、周或月级别的数据。
API 调用示例:
以下示例展示了如何使用 GET 请求从 Upbit API 获取 KRW-BTC 交易对的 1 分钟 K 线数据,请求 200 根 K 线:
GET /candles/minutes/1?market=KRW-BTC&count=200
10. 常见错误代码
在使用 Upbit API 时,可能会遇到各种错误。了解常见的错误代码及其含义,能够帮助用户快速定位问题,减少调试时间,并更有效地利用Upbit的API服务。
-
400
: 请求参数错误。这表示客户端发送的请求格式不正确或缺少必要的参数。 详细排查请求体、请求头和URL参数,确保它们符合Upbit API的规范。常见原因包括参数类型错误、参数值超出范围、缺少必填参数等。 -
401
: 未授权,API 密钥无效或过期。确认API密钥和Secret Key是否正确配置。Upbit API密钥具有时效性,如果长时间未使用或密钥被泄露,可能会失效。定期检查API密钥状态,并确保妥善保管。同时,请检查您的IP地址是否在Upbit API的管理界面中被列入白名单。 -
429
: 请求频率过高,达到速率限制。Upbit API对请求频率有限制,以防止滥用和保证服务器的稳定性。减少请求频率,可以考虑使用批量请求接口,或在代码中加入延时机制。Rate Limit的具体限制可以在Upbit的API文档中找到,根据文档调整请求策略。 -
500
: 服务器内部错误。这通常是Upbit服务器端的问题,客户端无法直接解决。如果频繁出现500
错误,建议稍后重试,或者联系Upbit的技术支持团队进行反馈。 提供详细的请求信息和时间戳,有助于Upbit工程师诊断问题。
充分理解和识别Upbit API返回的错误代码,是高效使用Upbit平台进行加密货币交易和数据分析的基础。 当遇到错误时,能够快速诊断问题并采取相应的解决措施,避免不必要的损失,提升交易效率。