欧易 · 基础
欧易模拟盘怎么用:先拿假钱把策略跑通
写好了一个策略脚本,手指悬在回车键上,该不该让它在真账户上跑?这种犹豫是对的。新手量化最贵的学费,往往不是亏在行情上,而是亏在一个写反的判断、一个少打的小数点上——而这些错,本来在模拟盘里五分钟就能暴露。
这篇我们(量化喵编辑组)把欧易模拟盘讲透:它是什么、为什么上真金前必须先走它、怎么开、用 ccxt 怎么连(关键就一行),以及它会在哪些地方悄悄骗你。读完你应该能把自己的脚本切到模拟盘里安全地反复折腾,确认一切正常,再用改一行代码的代价切回真金。
模拟盘(Demo Trading)是什么
欧易的模拟盘叫 Demo Trading(模拟交易)。简单说,它是一个用虚拟资金运行的平行账户:行情、界面、下单流程都跟实盘一样,唯独你下单花的不是真钱,而是系统发给你的一笔假 USDT。你在里面买卖、挂网格、跑脚本,赚了亏了都跟你的真实余额没关系。
对量化的人来说,它有一个尤其关键的好处:模拟盘和你的实盘账户共用同一套 API Key。你不需要为模拟盘单独建一个 Key,只要在请求里告诉欧易「这一单走模拟盘」,同一份凭证就能切换两个世界。这意味着你为实盘写的脚本,几乎原封不动就能拿到模拟盘里先验证一遍。
为什么上真金前必须先走它
道理很朴素:程序不会犹豫。人手动下单,按确认前还能瞄一眼方向、数量对不对;脚本不会,它会忠实地把你写错的逻辑连续执行下去。一个搞反的买卖方向、一个循环里漏掉的退出条件,在实盘上就是真金白银连续往外流。
模拟盘把这类错误的代价降到了零。你可以放心地让脚本撞墙——下错单、撤错单、把价格写成市价导致瞬间成交,这些在模拟盘里都只是消耗虚拟 USDT,而每一次「撞」都帮你提前抓出了一个本会在实盘要你命的 bug。我们的经验是,新策略在模拟盘跑头几轮,十有八九能揪出至少一个自己没料到的问题。
除了抓 bug,模拟盘还帮你确认两件更基础的事:鉴权通不通(三个凭证填对了没)、回调对不对(下单后返回的字段、撤单状态、余额变化是不是你以为的那样)。这些都跟真金无关,纯属流程层面的验证,放在模拟盘做最划算。
怎么开模拟盘账户
开模拟盘比开 API 简单得多,不需要额外审批。下面是大致路径,以欧易(OKX)当前界面为准(入口位置偶有微调):
- 登录欧易,在 App 或网页端找到账户/交易区域的「模拟交易」或「Demo Trading」入口,通常在交易页面的账户切换处,或个人中心里。
- 点进去切换到模拟盘环境。切换后界面会有明显标识(比如顶部出现「模拟」字样),提醒你现在花的是假钱。
- 系统会给你一笔虚拟资金。额度用完了,一般能在模拟盘界面里手动重置,继续练。
- 如果你只想用网页/App 点点点地试网格、跟单这些内置机器人,到这一步就够了——直接在模拟盘环境里设参数跑即可。
- 如果你要用脚本连模拟盘,API Key 不用单独建,沿用你实盘那把(参考我们的 API 量化入门),靠代码里的开关切到模拟盘。
OK30001 注册,手续费有减免,等你从模拟盘切到实盘时,真金下的单同样适用这个减免。点这里注册欧易 →
ccxt 怎么连模拟盘
这一节是脚本党最关心的。用 ccxt 连模拟盘,跟连实盘的唯一区别就是多一行开关。凭证还是那三个:apiKey、secret,以及 password(也就是你建 Key 时设的 Passphrase,ccxt 里这个字段叫 password,新手最常漏)。
import ccxt
okx = ccxt.okx({
'apiKey': '你的_apiKey',
'secret': '你的_secret',
'password': '你的_Passphrase', # 欧易特有,ccxt 里叫 password
})
# 关键一行:把所有请求切到模拟盘(Demo Trading)
okx.set_sandbox_mode(True)
# 之后所有请求都发往模拟盘,用的是虚拟资金
balance = okx.fetch_balance()
print('模拟盘 USDT 可用:', balance['USDT']['free'])
set_sandbox_mode(True) 这一行做的事,是让 ccxt 把后续所有请求都指向欧易的模拟盘端点。加上它,你的查余额、下单、撤单全部走假钱;去掉它(或改成 False),同一份代码就回到真金。
有些 ccxt 版本也支持在初始化时直接配:
okx = ccxt.okx({
'apiKey': '你的_apiKey',
'secret': '你的_secret',
'password': '你的_Passphrase',
'options': {'sandboxMode': True}, # 与 set_sandbox_mode(True) 等效
})
两种写法效果一样,挑一种你那个版本能跑通的用,不必都写。这里要强调一个容易被忽略的点:模拟盘的 API Key 就是实盘的 API Key,你不需要为模拟盘单独申请。区别全在那行开关上——这是欧易的设计,也是它对脚本党友好的地方。如果你切了 sandbox 还报鉴权错误,那问题多半出在三个凭证本身,而不是 sandbox 开关,可以回头对照 API 常见报错清单 排查。
连上之后,把你写好的下单/撤单脚本(参考 入门那篇 的示例)整个搬过来,加上这行 sandbox 开关,就能放心反复跑了:就算手滑把限价写到了市价附近真成交了,花掉的也只是虚拟 USDT。
set_sandbox_mode(True),结果它打印的是实盘那个空账户的余额,差点没看出来;补上那一行后,fetch_balance 返回的就是模拟盘那笔虚拟 USDT 了。我们接着下了个 BTC/USDT 限价买单(数量 0.0001,价格写死在远低于市价的位置挂着不成交),create_order 正常返回订单号,sleep(2) 后 cancel_order 撤掉、状态 canceled。整套「连模拟盘 → 查余额 → 下单 → 撤单」跑顺只花了几分钟,全程零成本。那个忘加开关的小失误反倒提醒了我们:每次开跑前先 print 一下余额确认环境对不对,是个值得养的习惯。
模拟盘骗你的地方
模拟盘很好,但它有它的天花板,而且这个天花板会让人产生错觉。下面几条是你必须心里有数的:
滑点和成交价被美化了
实盘里,你的单子要和市场上真实的对手盘撮合,价格经常没你挂的那么理想——这叫滑点。模拟盘的撮合往往更「听话」,成交价更接近你的理想价。结果就是:同一套参数,模拟盘的收益曲线常常比实盘好看。别把模拟盘的收益当成实盘的预期。
深度和流动性不真实
真实市场里,大单会「吃穿」盘口、推动价格;冷门交易对可能根本撮合不动你的单。模拟盘对这些往往简化处理,你下多大的单它都给你成交得很顺。等到了实盘、尤其是做流动性差的币,这种顺滑就消失了。
你的情绪也是假的
这点最常被忽略,却最致命。模拟盘亏了你不心疼,所以你能严格执行止损、不乱改参数。真金一上,看着浮亏的数字是真的,手就开始痒——提前止盈、扛单不止损、临时加仓,这些情绪操作模拟盘永远教不会你。把策略在模拟盘跑得再漂亮,实盘的第一课往往是先跟自己的情绪打一架。
极端行情演不出来
插针、闪崩、交易所偶发的拥堵延迟,这些极端时刻才是真正考验策略和风控的地方,而模拟盘的日常运行很难复现它们。所以模拟盘跑得稳,不等于你的策略扛得住极端行情。
从模拟盘切实盘的顺序
把上面这些综合起来,我们自己每次上新策略都走这个固定顺序,推荐你照搬:
- 模拟盘连续跑一段。不是跑通一次就算,而是让它连着跑够时间,覆盖几轮涨跌,确认下单、撤单、回调、余额变化全都符合预期。
- 只改一行切实盘。把
set_sandbox_mode(True)去掉或改False。这正是先在模拟盘验证的价值——切换的代价被压到了一行。 - 实盘第一次只用很小的钱。用你就算全亏了也不心疼的金额,把它当学费。模拟盘没法复现的滑点和深度,这时候才会露出来。
- 盯着它跑头几天。别真撒手,确认实盘行为和模拟盘看到的一致,再逐步加码。
这个顺序不复杂,但它能把「新手期最容易犯的致命错误」挡在真金之外。先模拟盘,再小额实盘,先活下来,再谈收益——这是我们反复强调的一句话。
常见问题
模拟盘要单独申请 API Key 吗?
不用单独建 Key。欧易的实盘 API Key 可以同时连模拟盘,区别只在请求里要不要带模拟盘标记。在 ccxt 里通过 set_sandbox_mode(True) 这个开关切换,凭证三件套(apiKey、secret、Passphrase)和实盘是同一套,代码逻辑几乎不变。
模拟盘的钱是真的吗?亏了用补吗?
模拟盘用的是虚拟资金,不是真钱,亏了也不会从你账户扣一分。它的作用是让你在零成本的环境里把脚本、参数、下单撤单流程跑顺。额度用完了一般能在模拟盘界面里重置,具体以欧易后台当前的入口为准。
在模拟盘赚钱了,实盘也能赚同样多吗?
不能直接照搬。模拟盘的成交往往比实盘理想——它的滑点、深度、撮合速度都被简化了,而且你下假钱时心态也轻松。同样一套参数,实盘可能因为成交价更差、深度不够、或者你自己手抖,跑出完全不同的结果。模拟盘验证的是流程对不对,不是收益能有多少。
set_sandbox_mode 和配置里的 sandboxMode 有什么区别?
两者效果一样,都是让 ccxt 把请求发往模拟盘端点。set_sandbox_mode(True) 是在初始化对象之后调一次的方法;options 里写 'sandboxMode': True 是在创建对象时一次性配好。挑一种你那个 ccxt 版本能跑通的用即可,不必两个都写。
模拟盘跑通了,切实盘要改几行代码?
理想情况只改一行——把 set_sandbox_mode(True) 去掉或改成 False。这正是先在模拟盘跑的好处:验证逻辑时用假钱,确认无误后改一行就上真金。但切实盘的第一次,务必只用很小的金额,并盯着它跑一阵,因为模拟盘没法复现真实的滑点和深度。
把模拟盘用熟之后,你就有了一个零成本的试验场——任何新策略、任何改过的代码,都先丢进去跑顺再说。接下来可以去看怎么把 风控写进脚本,或者用 网格估算器 把参数先算清楚。无论走哪条路,记住今天这篇的顺序:先模拟盘,再小额实盘。
模拟盘跑顺了,准备好上场了?
先把账户和 API 准备好,在模拟盘把流程跑通,再切到真金。用邀请码注册的新账户,手续费有减免,你通过 API 下的单一样适用。
加密资产价格波动剧烈,合约与杠杆可能导致本金全部亏损。量化与自动化交易不保证盈利,模拟盘表现不代表实盘结果,请只用你能承受损失的资金。