API 交易编写
API (Application Programming Interface) 交易是指通过程序化方式,利用交易所提供的应用程序编程接口进行加密货币的买卖操作。相比于手动在交易所网页或App上操作,API交易具有自动化、高效率、以及能够实现复杂交易策略等优势。
为什么选择 API 交易?
API(应用程序编程接口)交易,在加密货币领域越来越受欢迎,原因在于它提供的效率、灵活性和控制力。相比于传统的Web或移动端交易,API交易具有显著的优势,具体体现在以下几个方面:
- 自动化交易: 通过API,开发者可以编写自定义的交易机器人或程序,使其能够按照预先设定的规则自动执行买卖操作。这意味着用户无需时刻盯盘,可以设置止损、止盈点,当市场价格达到预设条件时,机器人会自动执行交易。这种自动化不仅节省了大量时间和精力,也避免了人为情绪干扰,提高了交易效率。
- 高速执行: 在加密货币市场,价格波动剧烈,毫秒级的速度差异可能导致巨大的收益或损失。API交易允许程序直接与交易所的服务器连接,绕过了用户界面操作的延迟,从而以极快的速度将交易指令发送到交易所进行撮合。这种高速执行能力对于抓住市场瞬息万变的机会至关重要,尤其是在高频交易和套利交易中。
- 策略定制: API交易的最大优势之一是其高度的灵活性。用户可以根据自身的需求和风险偏好,编写复杂的交易策略。例如,可以设计套利策略,在不同交易所之间寻找价格差异进行套利;也可以构建趋势跟踪策略,根据市场趋势自动调整仓位;还可以运用量化交易模型,结合数学和统计学方法进行交易决策。API提供了无限的可能性,让用户能够充分发挥其交易智慧。
- 数据分析: API提供了访问实时市场数据的接口,包括价格、交易量、订单簿深度等。这些数据对于进行深入的市场分析至关重要。用户可以利用这些数据构建自定义的图表和指标,分析市场趋势,预测价格走势,从而做出更明智的交易决策。API还可以用于监控投资组合的 performance,及时发现潜在的风险和机会。
- 回测模拟: 在实际交易之前,对交易策略进行回测是非常重要的。API允许用户使用历史市场数据对交易策略进行模拟运行,评估其在不同市场条件下的表现。通过回测,用户可以发现策略的潜在缺陷,优化参数,提高策略的盈利能力和稳定性。这种模拟环境可以避免在真实交易中遭受不必要的损失。
API 交易的流程
使用 API 进行加密货币交易是一种自动化交易策略,它允许您通过编写代码与交易所进行交互,执行预定的交易逻辑。以下是使用 API 进行交易的详细步骤:
- 选择交易所: 选择一家信誉良好、提供稳定 API 接口,并且支持您希望交易的加密货币对的交易所至关重要。考量交易所的交易费用、流动性、API 文档的完整性以及是否有沙盒环境用于测试。部分交易所还会限制 API 交易的权限,需要进行额外的身份验证或满足特定的交易量要求。
- 注册并获取 API 密钥: 在选定的交易所注册账户,完成必要的身份验证流程(KYC)。成功注册后,在账户管理或 API 设置页面申请 API 密钥。通常,交易所会提供 API Key(公钥)和 Secret Key(私钥)。 务必极其谨慎地保管您的 Secret Key,避免泄露给任何第三方。Secret Key 的泄露可能导致您的账户被盗用,从而遭受严重的资产损失。建议启用二次验证(2FA)等安全措施,进一步保护您的账户安全。
- 选择编程语言和库: 选择您熟悉的编程语言,如 Python、JavaScript、Java 或 C#,并选择一个与该语言兼容的 API 库。这些库充当您代码与交易所 API 之间的桥梁,封装了底层 HTTP 请求、数据序列化和错误处理等复杂细节,极大地简化了编程过程。流行的加密货币 API 库包括 Python 的 ccxt 和 alpaca-trade-api,JavaScript 的 node-binance-api 和 Java 的 XChange。
- 安装 API 库: 使用相应的包管理器(如 Python 的 pip、JavaScript 的 npm、Java 的 Maven 或 Gradle)安装所选的 API 库。确保安装的是最新版本,以便获得最新的功能和安全补丁。
-
编写交易程序:
使用 API 库提供的函数和类,编写您的交易程序。一个典型的交易程序通常包含以下几个关键步骤:
- 身份验证: 使用 API Key 和 Secret Key 对程序进行身份验证,建立与交易所 API 的安全连接。不同的 API 库有不同的身份验证方法,请参考库的文档。
- 获取市场数据: 通过 API 获取实时的市场行情数据,例如当前价格(最新成交价)、买一价、卖一价、最高价、最低价、24 小时成交量等。还可以获取更详细的深度数据(订单簿),了解市场上买单和卖单的分布情况。还可以获取历史交易数据,用于回测交易策略。
- 创建订单: 根据您的交易策略,使用 API 创建买入或卖出订单。需要指定交易对(如 BTC/USDT)、订单类型(限价单、市价单、止损单等)、价格(仅限限价单和止损限价单)、数量等参数。注意,不同的交易所支持的订单类型可能有所不同。
- 查询订单状态: 使用 API 查询订单的执行状态。常见的订单状态包括:未成交、部分成交、完全成交、已取消、已拒绝等。您可以通过查询订单状态,了解订单的执行进度,并根据情况进行调整。
- 撤销订单: 如果订单在一定时间内未能完全成交,或者您想改变交易策略,可以使用 API 撤销尚未成交的订单。
- 处理异常: 在 API 调用过程中,可能会出现各种异常情况,例如网络连接错误、身份验证失败、API 请求频率限制、参数错误、交易所维护等。编写程序时,必须充分考虑这些异常情况,并进行适当的处理,例如重试请求、记录错误日志、发送警报等,以确保程序的稳定性和可靠性。
- 测试程序: 在正式部署程序之前,务必在交易所提供的沙盒环境或模拟盘中进行充分的测试。沙盒环境是一个模拟的交易环境,使用模拟资金进行交易,可以避免在真实交易中造成损失。测试内容包括:验证身份验证是否成功、获取市场数据是否准确、创建订单是否正确、查询订单状态是否准确、撤销订单是否成功、异常处理是否有效等。
- 部署程序: 完成测试后,将程序部署到稳定可靠的服务器或云平台。建议选择具有低延迟和高可用性的服务器,以确保程序的运行速度和稳定性。部署后,需要持续监控程序的运行状态,及时处理可能出现的问题。同时,定期更新 API 库,以获取最新的功能和安全补丁。
常用编程语言和 API 库
以下是一些常用的编程语言和 API 库,它们能够帮助你快速连接到各大加密货币交易所并进行交易:
-
Python:
-
ccxt
(CryptoCurrency eXchange Trading Library): 这是一个非常流行的、统一的加密货币交易库,它支持超过 100 家加密货币交易所的 API。ccxt
提供了统一的接口来访问不同交易所的数据和功能,极大地简化了开发过程,并方便在不同交易所之间切换。它功能强大、文档完善,并且易于使用,是进行自动化交易和数据分析的理想选择。它不仅支持现货交易,还支持合约交易和杠杆交易。 -
python-binance
: 这是一个专门为 Binance (币安) 交易所设计的 Python API 库。它提供了对 Binance 交易所所有 API 接口的封装,包括现货交易、期货交易、杠杆交易、期权交易以及其他相关服务。使用python-binance
可以方便地访问 Binance 交易所的各种功能,例如获取市场数据、下单、管理账户等。相对于 ccxt,该库更加专注于 Binance 交易所,在某些特定功能上可能提供更高级别的支持。
-
-
JavaScript:
-
ccxt
:ccxt
也提供了 JavaScript 版本,这意味着你可以使用 JavaScript 来访问超过 100 家加密货币交易所的 API。这使得在 Web 浏览器或 Node.js 环境中构建加密货币交易应用程序成为可能。JavaScript 版本的ccxt
提供了与 Python 版本相同的功能和统一的 API 接口。 -
node-binance-api
: 这是一个专门为 Binance (币安) 交易所设计的 Node.js API 库。它允许你使用 JavaScript 在 Node.js 环境中与 Binance 交易所进行交互。通过node-binance-api
,你可以轻松地获取市场数据、执行交易、管理你的 Binance 账户。该库提供了异步 API 调用,适用于构建高性能的交易应用程序。
-
-
Java:
-
HuobiAPI
: 这是一个专门为火币 (Huobi) 交易所设计的 Java API 库。它提供了访问火币交易所 API 的接口,包括市场数据、交易、账户管理等。使用HuobiAPI
可以方便地构建基于 Java 的火币交易所交易应用程序。 -
可以自行使用
OkHttp
或Retrofit
等网络库封装交易所的 API:如果交易所没有提供官方的 Java API 库,或者你需要更灵活地控制 API 调用过程,你可以使用像OkHttp
或Retrofit
这样的 HTTP 客户端库来自己封装交易所的 API。OkHttp
是一个高效的 HTTP 客户端,而Retrofit
是一个类型安全的 HTTP 客户端,可以方便地将 API 接口定义转换为 Java 接口。通过自定义封装,你可以完全掌控 API 调用的细节,并根据自己的需求进行优化。
-
代码示例 (Python + ccxt)
以下是一个使用 Python 和
ccxt
库进行 API 交易的简单示例。
ccxt
是一个流行的 Python 库,它允许开发者连接到多个加密货币交易所的 API,并以统一的方式进行交易、查询市场数据等操作。
ccxt
库支持大量的交易所,包括但不限于 Binance、OKX、Coinbase Pro 和 Kraken 等。这使得开发者能够编写通用的交易策略,并在不同的交易所上执行,而无需为每个交易所编写特定的代码。
开始之前,你需要确保已经安装了 Python 和
ccxt
库。可以使用 pip 进行安装:
pip install ccxt
下面是代码示例:
import ccxt
这个代码段演示了如何导入
ccxt
库,为后续使用做准备。后续代码将展示如何初始化交易所对象、获取市场数据以及进行交易等操作。
在使用
ccxt
库之前,请务必查阅相关交易所的 API 文档,了解其 API 的使用限制和费率结构。同时,为了安全起见,请妥善保管你的 API 密钥,并避免在公共场合泄露。
替换为您的 API Key 和 Secret Key
在使用 CCXT 库连接币安交易所之前,您需要替换以下代码中的
YOUR_API_KEY
和
YOUR_SECRET_KEY
为您在币安账户中生成的真实 API Key 和 Secret Key。
请务必妥善保管您的 API Key 和 Secret Key,避免泄露给他人,防止资产损失。 建议启用 API 访问限制,例如限制 IP 地址,增加安全性。
以下代码展示了如何使用 CCXT 库连接币安交易所,并启用限速功能:
exchange = ccxt.binance({
'apiKey': 'YOUR_API_KEY',
'secret': 'YOUR_SECRET_KEY',
'enableRateLimit': True, # 开启限速
})
apiKey
: 您的币安 API Key,用于身份验证。
secret
: 您的币安 Secret Key,与 API Key 配合使用,用于签名请求。
enableRateLimit
: 设置为
True
可以启用 CCXT 的自动限速功能,防止因请求频率过高而被交易所限制访问。 根据交易所的限速规则动态调整请求频率,确保程序的稳定运行。 币安有严格的API限速,启用此选项至关重要。
使用真实的 API Key 和 Secret Key 替换示例代码中的占位符后,您就可以使用
exchange
对象与币安交易所进行交互,例如查询账户余额、下单交易等。
交易对
在加密货币交易中, 交易对 (Trading Pair) 代表两种可以相互交易的数字资产。它定义了一个市场,允许交易者用一种加密货币购买或出售另一种加密货币。交易对通常以类似于 'BTC/USDT' 的格式表示,其中:
- BTC 代表比特币,是交易对中的基础货币 (Base Currency)。 基础货币是被报价或出售的货币。
- USDT 代表泰达币 (Tether),是一种稳定币,也是交易对中的报价货币 (Quote Currency)。 报价货币是用于购买基础货币的货币。
- '/' 分隔符表示可以用报价货币 (USDT) 购买或出售基础货币 (BTC)。
symbol = 'BTC/USDT'
这行代码表示一个特定的交易对,其中比特币 (BTC) 可以用泰达币 (USDT) 进行交易。交易者可以通过这个交易对进行买入 (Buy BTC with USDT) 或卖出 (Sell BTC for USDT) 操作。
更详细的解释:
- 基础货币 (Base Currency): 这是交易对中被定价的货币。 例如,在 BTC/USDT 中,BTC 是基础货币,它的价值以 USDT 计价。
- 报价货币 (Quote Currency): 这是用于购买基础货币的货币。 在 BTC/USDT 中,USDT 是报价货币,它用于购买 BTC。 有时也称为计价货币 (Counter Currency)。
- 交易对的选择: 选择合适的交易对对于交易策略至关重要。 交易者会根据流动性、波动性和交易费用等因素选择交易对。
- 交易量的影响: 交易对的交易量越高,买卖订单的执行速度通常越快,滑点也越小。 滑点是指预期价格和实际成交价格之间的差异。
- 不同交易所的交易对: 不同的加密货币交易所提供的交易对可能不同。 交易者需要选择提供所需交易对的交易所。
理解交易对的概念对于在加密货币市场进行有效交易至关重要。交易者需要关注交易对的组成、流动性和相关费用,以便做出明智的交易决策。
订单类型
order_type
参数用于指定交易所执行订单的方式,其最常见的取值之一是
'market'
,代表市价单。
市价单 (Market Order): 市价单指示交易所立即以当前市场最佳可用价格执行订单。这意味着买单会以市场上最低的卖出价成交,而卖单会以市场上最高的买入价成交。市价单的优势在于成交速度快,保证订单能够尽快执行。然而,由于市场价格波动,最终成交价格可能与下单时的预期价格略有偏差,尤其是在市场波动剧烈或流动性不足的情况下。因此,交易者在使用市价单时应注意滑点风险。
在使用
'market'
作为
order_type
时,无需指定价格,因为交易所会自动匹配市场上的最优价格。 但应注意控制订单数量,避免因大额市价单冲击市场,导致成交价格大幅偏离预期。
交易方向
在加密货币交易中,“交易方向” (
side
) 指的是您希望执行的交易类型,主要分为买入和卖出两种。
side
参数用于指定交易的意图,对交易执行至关重要。
side = 'buy' # 买入
当
side
设置为
'buy'
时,表示您希望购买指定的加密货币。这通常发生在您预期该加密货币的价格将会上涨,希望通过低买高卖来获利的情况下。买入操作也称为“做多”。
交易数量 (以 USDT 计价)
在加密货币交易中,指定交易数量至关重要。以下示例展示如何使用 CCXT 库以 USDT 计价购买指定数量的 BTC。
amount = 10 # 买入 10 USDT 的 BTC
上述代码行定义了变量
amount
,并将其设置为 10。这表示交易的目标是使用 10 USDT 购买 BTC。需要注意的是,实际购买的 BTC 数量将取决于当时的 BTC/USDT 交易对的价格。
try:
# 创建市价买单
order = exchange.create_market_order(symbol, 'buy', amount)
print(order)
此代码块尝试创建一个市价买单。
exchange.create_market_order(symbol, 'buy', amount)
函数负责执行此操作。
symbol
参数指定要交易的交易对(例如,'BTC/USDT'),
'buy'
参数指定交易方向为买入,而
amount
参数指定要花费的 USDT 数量。市价单会立即以当前市场上最佳可用价格执行。创建的订单信息将通过
print(order)
打印出来,包含订单ID,交易对,交易类型,价格,数量等详细信息。
except ccxt.ExchangeError as e:
print(f"交易所错误: {e}")
except ccxt.InsufficientFunds as e:
print(f"资金不足: {e}")
except Exception as e:
print(f"其他错误: {e}")
此代码块处理可能发生的各种异常情况。
ccxt.ExchangeError
捕获交易所返回的任何一般错误,例如 API 连接问题或无效的请求。
ccxt.InsufficientFunds
捕获尝试交易但账户中没有足够资金时发生的错误。
Exception
捕获所有其他未预料到的错误。每个
except
块都会打印相应的错误消息,帮助调试潜在问题。例如,如果账户USDT余额少于10,则会触发
ccxt.InsufficientFunds
异常。
请注意:
-
API 密钥安全:
请务必将代码中的
YOUR_API_KEY
和YOUR_SECRET_KEY
替换为您在交易所申请的真实 API Key 和 Secret Key。API Key 具有访问您账户的权限,请妥善保管,切勿泄露给他人。强烈建议开启API密钥的相关安全设置,例如IP白名单,限制API密钥只能从特定的IP地址访问,避免被恶意利用。 - 市价单滑点风险: 本示例采用市价单交易,这意味着交易会立即以当时市场上最优的价格成交。然而,由于市场波动,实际成交价格可能与您发出订单时的价格存在差异,这就是所谓的滑点。在交易量较小的市场中,滑点可能更为显著,请务必了解并评估此风险。可以考虑使用限价单来降低滑点风险,但限价单不保证一定成交。
- 完善的错误处理与风险控制: 实际交易环境中,需要考虑各种潜在的错误情况,例如网络连接中断、API 请求失败、账户余额不足等。务必加入完善的错误处理机制,例如使用 try-except 语句捕获异常,并进行适当的重试或告警。同时,建立健全的风险控制策略,例如设置止损止盈,控制单笔交易的资金比例,以及分散投资等。 做好充足的回测之后再进行实盘交易。
- 交易所 API 请求频率限制 (Rate Limit): 交易所为了保障系统的稳定运行,通常会对 API 请求频率进行限制。如果您的请求频率超过限制,可能会被暂时禁止访问 API。因此,需要合理控制请求频率,例如使用 sleep 函数进行适当的延时,或者使用异步编程来并发处理请求,避免触发限制。仔细阅读交易所 API 文档,了解具体的请求频率限制规则。
风险提示
使用应用程序编程接口 (API) 进行加密货币交易涉及固有风险,务必在充分理解并评估这些风险后谨慎操作。API 交易并非适合所有投资者,可能导致重大财务损失。以下列出了一些关键风险:
- 代码错误与逻辑漏洞: 自动化交易依赖于程序代码的精确执行。程序代码中的任何错误,例如逻辑错误、计算错误或数据处理缺陷,都可能导致非预期的交易行为,包括以错误的价格买卖、下单数量错误或在不合适的时间执行交易,从而造成经济损失。代码审查、充分的测试和严格的错误处理机制至关重要。
- 网络连接问题与延迟: API 交易严重依赖于稳定的互联网连接。网络中断、延迟或连接不稳定都可能导致订单无法及时发送或执行,错失有利的交易机会,或者在市场剧烈波动时无法及时止损,从而导致损失。应选择可靠的网络服务提供商,并考虑设置备用连接方案。
- API 密钥安全与泄露风险: API 密钥是访问您的交易账户的凭证,必须妥善保管。密钥泄露(例如被黑客攻击、恶意软件感染或内部人员泄露)可能导致未经授权的访问和资金损失。务必启用双重验证 (2FA)、定期更换密钥、限制密钥权限至最小必要范围,并监控账户活动。使用硬件安全模块 (HSM) 进一步增强密钥安全性。
- 交易所风险与平台稳定性: 您所使用的加密货币交易所本身也存在风险,例如安全漏洞、系统故障、流动性不足、监管风险甚至倒闭。交易所的安全事件可能导致资金被盗或交易中断。应选择信誉良好、安全措施完善、有良好运营记录的交易所。同时,评估交易所的交易量、流动性和用户评价。
- 市场波动与价格滑点: 加密货币市场以其高度波动性著称。快速且剧烈的价格波动可能导致交易执行价格与预期价格之间存在显著差异(即滑点)。在高波动时期,API 交易可能难以以预期价格成交,从而导致损失。设定合理的止损单、限制订单类型(例如限价单)并监控市场动态至关重要。还要注意交易所的流动性,流动性差可能导致滑点增大。
- 数据安全与隐私风险: 使用 API 交易涉及传输敏感的交易数据,例如订单信息、账户余额和交易历史。数据在传输和存储过程中可能面临被截获、篡改或泄露的风险。确保使用加密协议 (HTTPS) 进行安全数据传输,并采取适当的数据安全措施来保护您的交易数据。
为了降低 API 交易风险,建议采取以下措施:
- 从小额资金开始: 在熟悉 API 交易环境和策略之前,从少量资金开始,逐步增加交易规模。
- 进行充分的回测和模拟交易: 在真实市场交易之前,使用历史数据进行回测,并在模拟交易环境中验证您的交易策略。
- 实施风险管理策略: 设置止损单和止盈单,限制单笔交易的风险,并分散投资组合。
- 密切监控账户活动: 定期检查您的账户余额、交易历史和未完成订单,及时发现并处理异常情况。
- 保持代码更新和维护: 定期审查和更新您的交易代码,修复漏洞并适应市场变化。
- 了解交易所的 API 文档和限制: 仔细阅读交易所的 API 文档,了解其使用条款、限制和最佳实践。
- 寻求专业建议: 如果您对 API 交易不熟悉,可以寻求经验丰富的交易者或金融顾问的帮助。
请务必谨慎对待 API 交易,并根据自身的风险承受能力做出明智的决策。
安全建议
以下是一些使用 API 进行加密货币交易的安全建议,旨在最大程度地降低风险,保障您的资金安全:
- 使用强密码并定期更新: 为您的交易所账户设置一个复杂且难以猜测的强密码。强密码应包含大小写字母、数字和特殊字符的组合,并且长度至少为 12 个字符。切勿使用容易被破解的密码,如生日、电话号码或常用单词。定期(建议每三个月)更换密码,进一步提高安全性。
- 启用双重验证 (2FA): 双重验证 (2FA) 在您输入密码后,需要您提供第二种验证方式,例如手机验证码、身份验证器 App 生成的代码或硬件安全密钥。即使密码泄露,攻击者也需要获得您的第二重验证才能登录您的账户,从而有效防止账户被盗用。强烈建议使用基于时间的一次性密码 (TOTP) 的 2FA,例如 Google Authenticator 或 Authy。
- 妥善保管 API 密钥: API 密钥类似于您账户的“通行证”,允许程序化访问您的交易所账户。绝不要将 API 密钥泄露给他人,包括朋友、同事,甚至交易所客服人员。不要将 API 密钥存储在不安全的地方,例如电子邮件、文本文件或公共代码库中。应使用加密的方式存储 API 密钥,例如使用密码管理器或硬件安全模块 (HSM)。
- 限制 API 权限: 在申请 API 密钥时,仔细审查并限制 API 的权限。只授予您的交易程序所需的最低权限。例如,如果您的程序只需要进行交易,则不要授予提款权限。过度授予的权限可能会被攻击者利用,导致资金损失。
- 使用 IP 白名单: 设置 IP 白名单,只允许特定的 IP 地址访问您的 API。这意味着只有来自您指定 IP 地址的请求才能被授权访问您的交易所账户。这可以防止未经授权的访问,即使 API 密钥泄露,攻击者也无法从其他 IP 地址使用您的密钥。
- 定期审查代码和依赖项: 定期审查您的交易程序代码,检查是否存在漏洞,例如注入攻击、整数溢出或逻辑错误。同时,也要审查您使用的第三方库和依赖项,确保它们没有已知的安全漏洞。使用静态代码分析工具可以帮助您自动检测代码中的潜在问题。
- 使用沙盒环境进行测试: 在真实交易之前,务必在沙盒环境或模拟盘中进行充分的测试。沙盒环境是一个模拟真实交易所的环境,允许您在不承担真实资金风险的情况下测试您的交易策略和 API 集成。这可以帮助您发现并修复潜在的错误和漏洞,确保您的程序在真实环境中稳定可靠地运行。
- 设置止损和止盈: 在您的交易策略中设置止损和止盈订单,可以有效地控制风险和锁定利润。止损订单会在价格下跌到特定水平时自动卖出,以限制您的损失。止盈订单会在价格上涨到特定水平时自动卖出,以锁定您的利润。合理设置止损和止盈水平,可以帮助您在市场波动中保持冷静,避免情绪化的交易决策。
- 监控交易活动: 密切监控您的账户的交易活动,及时发现异常情况。例如,未经授权的交易、异常的交易量或来自未知 IP 地址的登录尝试。设置交易警报,以便在发生异常情况时收到通知。定期查看您的交易历史记录,确保所有交易都是您授权的。
- 备份 API 密钥: 创建 API 密钥的备份,并将其存储在安全的地方,以防密钥丢失或损坏。可以将备份存储在离线设备上,例如 USB 驱动器或硬件钱包。确保备份的密钥与您正在使用的密钥匹配。定期测试备份密钥,确保它们可以正常工作。
- 考虑使用硬件钱包: 如果您持有大量加密货币,建议使用硬件钱包进行存储。硬件钱包是一种安全的离线存储设备,可以保护您的私钥免受在线攻击。硬件钱包通常与交易所 API 集成,允许您在不暴露私钥的情况下进行交易。将大部分资金存储在硬件钱包中,可以显著提高您的资金安全。