加密货币交易机器人如何设置止损与止盈?
从交易假设失效的位置、仓位规模和交易成本设计止损与止盈,并用具体例子检查盈亏平衡胜率和自动订单风险。
先找出交易逻辑失效的价格或条件,再按可承受的现金损失确定仓位;止盈位置应考虑成本和可实际到达的退出条件。同时要了解订单类型:触发后发送的市价止损可能以更差价格成交,而止损限价单可能完全不成交。对于自动机器人,还需核对交易所、策略及 Webhook 对仓位数量、触发依据以及一个退出成交后另一个是否取消的理解是否一致。不存在适合所有市场的固定止损或止盈百分比。
最重要的原则
- 先确定交易假设的失效价格和现金亏损上限,再计算仓位。
- 毛利的 2 比 1 盈亏比,在加入手续费后需要高于三分之一的胜率。
- 止损触发价只是执行指令的门槛,不保证成交价格。
- 分批加仓会改变平均成本、持仓数量和总现金风险。
- 部分成交后,止盈与止损订单必须与实际持仓一致。
先给每一种退出一个明确理由
止损应回答:市场出现什么情况意味着这次入场逻辑失效?参考依据可以是近期价格结构、波动范围或时间条件。止盈则说明什么情况下应减仓或平仓。只因某个固定百分比在回测中好看就采用它,可能掩盖退出规则与实际市场行为的不匹配。
写下入场条件、使假设失效的价格或事件、目标、最大现金亏损,以及任一订单被拒绝后如何处理。这些都是需要验证的假设,不是通用的最佳参数。空头的价格方向相反:止损在入场价上方,目标在下方。
把价格止损换算成现金风险
对完全成交的简单现货多头,成本前预计亏损约等于持有数量乘以入场价与止损价之差。反过来,预计数量约等于现金亏损预算除以每单位的价格距离。例如入场价 100、止损价 96、计划成本前亏损 40 USDT,对应 10 个单位,入场名义金额为 1,000 USDT。
若实际退出低于 96、价格跳空、扣除手续费或订单未成交,真实亏损可能超过 40 USDT。交易所最小订单和数量步长不允许目标数量时,不应为了让订单通过就悄悄提高风险。整个账户预算和同时持有的其他仓位也必须考虑。
手续费之后的盈亏比实例
继续使用上述假设的 10 单位多头,入场价 100,止损触发价 96,止盈价 108。不计费用且两种退出都按目标价格完全成交时,亏损 40 USDT,盈利 80 USDT,毛利盈亏比为 2 比 1。只有这两种结果的简化策略,在成本前需要超过三分之一的胜率才能盈利。
现在假设每次成交收取 0.12% 手续费,点差与滑点均为零,两种退出都保持 10 单位。入场手续费为 1.20 USDT。按 96 止损时成交额 960 USDT,手续费 1.152 USDT,总亏损 42.352 USDT。按 108 止盈时成交额 1,080 USDT,手续费 1.296 USDT,净盈利 77.504 USDT。盈亏平衡胜率为 42.352 ÷ (42.352 + 77.504),约 35.34%。这只是计算示例,并非真实交易或建议目标。
区分止损市价单与止损限价单
止损市价类型通常在触发后发出市价订单,优先争取离场;但买盘变薄或跳空时,成交价可能比触发价差。止损限价类型在触发后发出限价订单,可设置可接受的最低卖价,却可能在快速行情中一直未成交。各交易所的名称与保护措施不同。
Binance 文档说明,止损限价单达到触发价后会被放入订单簿。Coinbase 说明其止损限价或保护性订单在极端波动下可能无法成交。两种机制都不能称为保证最大亏损的措施。还要在目标交易所测试部分成交后系统如何处理。
让止损和目标始终匹配实际仓位
在 TradingView Pine 策略中,strategy.exit() 可以为某次入场建立止盈限价与止损退出。profit 与 loss 参数表示以最小价格跳动为单位的距离,而 limit 与 stop 接受绝对价格。把回测搬到交易所下单时必须分清。TradingView 经纪商模拟器对历史成交的假设也可能与实时成交不同。
在外部执行器中确认:止盈成交后,剩余止损被取消或减量;止损成交后,止盈被取消或减量。否则旧订单稍后可能意外建立反向仓位。对于期货,还应检查交易所支持的平仓或仅减仓机制以及账户持仓模式。可兼容的参数组合因平台而异,要通过真实订单响应和当前持仓核实。
把分批加仓视为一个整体风险
机器人在价格下跌后继续买入,加权平均入场价会改变,但总数量和潜在亏损也会增长。只按新均价重算止盈,可能让整体仓位看起来更容易回本,却隐藏更大的下行风险。应模拟允许的全部加仓、同时持有的其他仓位,以及最终止损以更差价格成交时的现金亏损。
明确止损是相对于首笔入场、仓位均价、市场结构还是账户总风险设定。每笔成交后核对真实持仓和所有有效退出订单。如果目标部分成交,相应减少保护性止损数量;如果止损触发,取消尚未执行的追加买单。这些是需要实现和测试的系统规则,不能把降低均价当作免费的优势。
按真实顺序测试退出
一根K线的最高价触及止盈、最低价触及止损时,仅凭开高低收数据无法知道先发生哪一个。TradingView 模拟器对K线内部路径有自己的假设;订单设置和更低周期的数据可能改变模拟结果。不要自动选择有利的退出。可用时进行逐步回放,并对照原始提醒与交易所日志。
加入双边手续费、点差、滑点、部分成交以及未能成交的止损限价单。参数定稿后测试后续时段,并以模拟交易检验实际订单链。只有止损总按触发价成交、止盈一触及就完全成交才好看的回测,证据很脆弱。
退出订单失败时怎么办
专门测试止损被拒、API 中断、提醒延迟、仓位数量不符、条件订单被取消、突然跳空及计划止损前强平。机器人需要知道保护单是否确实留在交易所,而不是只知道自己尝试提交过。记录交易所订单编号、状态、剩余数量和重试或暂停的决定。
建立账户层面的暂停条件,并独立于图表核对持仓。止损只是风险控制的一层,无法消除亏损、让杠杆变安全,或弥补没有优势的策略。
启用自动退出前的十项检查
- 定义信号失效条件和计划的止盈事件。
- 先确定最大现金风险,再计算订单数量。
- 在盈亏比与盈亏平衡计算中加入双边手续费。
- 检查数量精度与最小订单价值。
- 理解止损市价与止损限价各自的实际后果。
- 核对交易所触发价格来源与下单参数。
- 让目标与止损数量匹配真实成交后的仓位。
- 每次分批加仓或部分成交后重算整体风险。
- 测试同一K线触及两个退出价的情况并加入滑点。
- 核对被拒绝、取消、过期或遗漏的退出订单。
关于止损与止盈的常见问题
加密货币交易机器人的止损设多少百分比合适?
没有统一百分比。先确定交易假设不再成立的位置,再调整仓位,使预估现金亏损符合预算,同时检查费用、波动和成交不确定性。
2 比 1 的盈亏比就足以赚钱吗?
不够。还需要足够的实际胜率,且按模型中的价格成交。在文中的假设示例里,手续费使盈亏平衡胜率从 33.33% 提升到约 35.34%,还没计入点差和滑点。
止损能保证最大亏损吗?
不能。触发后的市价订单可能滑点,限价订单可能未成交。跳空、订单被拒、服务故障和强平还会造成更大亏损。
Pine Script 可以同时设置止损和止盈吗?
TradingView 的 strategy.exit() 支持同时建立止损和限价退出。应分清以跳动为单位和以绝对价格指定的参数,并测试怎样转换成真实交易所订单。
分批加仓后机器人应每次都调远止损吗?
每次成交后应重新计算整体仓位和风险。是否改变止损位置属于策略选择;仅为了避免确认亏损而把它调得更远,可能放大账户最大损失。
止盈成交了,但止损订单还在怎么办?
遗留止损之后可能超量卖出,或在某些市场建立反向仓位。使用交易所支持的关联订单或仅减仓机制,并在每次成交后核对未完成订单。
资料来源与方法
交易所订单行为及 Pine 策略机制依据 TradingView、Coinbase 与 Binance 官方文档。十单位交易和净胜率计算由 TensorParadigm 作为说明性示例编制;实际实现前应核查交易所功能。
- TradingView Pine Script:策略退出
- Coinbase Advanced Trade:订单类型与执行
- Binance:止损限价单功能
- TradingView Pine Script:策略订单组
- Binance 开发者文档:期货新订单
仅供教育研究。数字均为假设,不代表 TensorParadigm 实盘结果或投资建议。