从信号到执行:Strategy 版本的差异化之处
AIO Top/Bottom Confidence 指标告诉你反转的可能性。AIO Top/Bottom Strategy 则在同样的 9 因子评分引擎基础上增加了完整的执行层:自动做空与做多入场、基于 ATR 的止损与止盈设置、可选的追踪止损、保本管理,以及可直接将订单路由至 Binance 等交易所的 Webhook 就绪警报系统。
对于大多数依靠阅读信号指标并手动点击入场的主观交易者而言,信号与成交仓位之间的空隙会带来犹豫、滑点和不一致性。Strategy 版本消除了这一空隙。当置信度分数越过阈值且结构触发条件触发时,策略会在当根 K 线收盘时立即入场 — 无需手动操作。
本文介绍策略如何生成信号、如何管理交易、如何针对实盘正确配置参数,以及如何接入 Webhook 警报系统,使 TradingView 自动向你的交易所发送订单。
信号引擎:9 个因子,一个评分
信号逻辑与 AIO Top/Bottom Confidence 指标完全相同 —— 一套跨越九个独立条件的加权评分系统。理解这些权重至关重要,因为它们决定了哪些配置能产生最可靠的信号。
强制触发条件:BOS 或 MSS
没有结构突破就不会触发任何入场。这是不可妥协的前提。策略会检查最近 bosLen 根 K 线(默认 8)内的两种结构突破形式:
- BOS — 结构突破(20 分):价格收盘超越近期高点或低点。直接明了,但缺乏动量确认。
- MSS — 市场结构转变(25 分):BOS 加上动量要求 —— 突破 K 线的实体大小必须超过
ATR(14) × 0.75,且收盘方向与突破方向一致。MSS 多出 5 分,因为经动量确认的结构突破后续跟进效果显著更好。
当图表上出现信号时,首先应查看表格中是否触发了 BOS 或 MSS。同样在 65% 置信度下,基于 MSS 的信号与基于 BOS 的信号是本质不同的两笔交易 —— 前者已确认动量位移,后者仅有被动价格收盘。
其余八个因子及其权重
| 因子 | 权重 | 检测内容 |
|---|---|---|
| 耗尽 | 15 | K 线振幅 > ATR × 1.5,收盘方向与行情方向相反 |
| 回测 | 10 | 价格在 retestBars 根 K 线内回归至摆动位(±0.5%) |
| 陷阱 | 10 | 影线刺穿摆动位后收盘反转 —— 影线/振幅 > 30% |
| HTF 方向一致性 | 15 | 4H 收盘价与 4H EMA(50) 确认反转方向 |
| 弧形形态 | 10 | 最近 5 个摆动高/低点符合抛物线减速曲线 |
| 成交量峰值 | 10 | 反转点成交量 > SMA(20) × 1.5 |
| 趋势背景 | 10 | EMA(20) 与 EMA(50) 确认前期趋势存在 |
| K 线形态 | 5 | 反转位出现针形 K 线、十字星或吞没 K 线 |
100 分上限前的最高可能得分:MSS(25)+ 耗尽(15)+ HTF(15)+ BOS(20,但 MSS 已包含此项)+ 回测(10)+ 陷阱(10)+ 弧形(10)+ 成交量(10)+ 趋势(10)+ K 线(5)= 110 原始分,上限封顶为 100。实际上,九个因子同时触发的情况极为罕见 —— 70–80% 的评分通常意味着五六个因子已发生共振,这是真正强有力的交易机会。
区间过滤器与冷却期
两个额外的门控机制可防止信号刷屏。首先是区间过滤器:策略计算最近 zoneLookback 根 K 线(默认 100)内最高价与最低价的中间点。TOP 信号仅在价格高于该中点时触发;BOT 信号仅在价格低于该中点时触发。这消除了当价格已接近区间底部时还触发"TOP"信号的荒谬情况。
其次是信号冷却期(cooldownBars = 10):同方向两个信号之间至少需间隔 10 根 K 线。在 1H 图表上,这大约是半个交易时段。在较小周期可降至 5–7 根;在日线图或横盘整理的低波动期间可提高至 15–20 根,因为此时同一结构区域可能反复产生虚弱信号。
交易管理:SL、TP 与追踪止损
信号在 K 线收盘时触发后,策略立即建立仓位并配置退出规则。所有距离均基于 ATR(14),这意味着它们会根据当前品种的波动性自动缩放。
止损与止盈
- 止损:
ATR(14) × slAtrMult(默认 1.5)。做空时,SL 设于入场收盘价上方;做多时设于下方。在默认参数下,ATR 约为 $1,800 的 1H BTC 图表上,SL 距入场约 $2,700 —— 足够吸收信号后的正常噪音,同时又能清晰定义失效位。 - 止盈:
ATR(14) × tpAtrMult(默认 3.0)。在追踪止损纳入考量之前,这提供了 2:1 的理论盈亏比(3.0 TP / 1.5 SL)。实际上,当趋势延伸超出 TP 目标时,追踪止损能捕获更多利润。
一个重要细节:这些并非固定价格位。它们在每次入场 K 线上使用当时的 ATR(14) 值重新计算。高波动扩张期间的信号会获得更宽的 SL 和 TP,而同样的信号配置在安静横盘期间则会更窄。这是有意为之 —— 经波动率归一化的设置意味着你不会在高波动入场时被过度止损出局。
追踪止损:最重要的参数
追踪止损是实盘交易中复杂度最高的部分。两个参数控制它:
- 追踪距离(
trailAtrMult = 0.10):追踪止损以ATR(14) × 0.10的距离随价格移动。在 BTC $70K、ATR 约 $1,800 时,这大约是 $180 —— 约为典型 TradingView→Binance Webhook 延迟与市价单滑点(该价格下约 $60)的 3 倍。0.10 的默认值经过专门调整,使追踪距离在舒适地宽于实际执行摩擦的同时,仍能捕获反转行情的大部分利润。实盘交易中不要将此值设于 0.075 以下;低于该阈值,仅 Webhook 延迟本身就可能导致实际成交价格劣于追踪目标价。 - 追踪激活(
trailActivateR = 0.4):追踪止损不会立即启动,直到价格朝有利方向移动至少0.4 × 初始风险。使用 1.5 倍 ATR 止损时,这意味着追踪止损在价格朝盈利方向移动 0.6 倍 ATR(1.5 倍 ATR 风险的 40%)后才激活。此值从 0.2 提升至 0.4 是因为早期默认值导致追踪止损激活过早 —— TradingView 的券商模拟器会在 K 线内逐 tick 回放路径,从入场立即激活的追踪止损会产生无法反映实盘订单行为的成交模拟。0.4 的默认值能产生与实盘表现高度一致的回测结果。永远不要将此值设为零 —— Pine 中的trail_price=na会触发一个已知的模拟器 Bug,导致实盘账户胜率崩溃。
保本止损(可选)
保本止损(useBEStop,默认禁用)会在价格朝有利方向移动 beTriggerR × 初始风险(默认 1.0 倍)后,将止损移至入场价。启用后可减少在追踪止损激活前反转的盈利交易的回撤。代价是部分原本会到达止盈的交易将在保本位出局。是否启用取决于你的市场:在加密货币波动趋势日中,保本止损频繁在价格回撤后继续运行前提前出局;在更有秩序的指数期货等品种上,它往往能改善权益曲线。
设置 Webhook 警报以实现实盘交易所执行
警报系统是策略从回测工具转变为实盘交易系统的关键。当前版本提供独立的、可单独配置的入场和出场消息 —— 相比之前的单消息系统,这是重大改进。
为何入场与出场消息需要分开
入场与出场订单的执行需求存在本质差异。入场在已确认 K 线的收盘时触发 —— 即警报触发时,该 K 线已经收盘。由于价格位置已固定且不会再变动,以该收盘价下限价单的成交概率极高。你能捕获收盘价,而无需支付市价单的点差和滑点。
出场则不同。当追踪止损在 K 线中途被触及时,你需要立即出场 —— 以追踪价格下限价单有可能因价格跳空穿越而无法成交。出场订单使用带 reduceOnly: true 的市价单,确保仓位以最优可用买/卖价成交,且不会因订单超量而意外开反向仓位。
配置警报消息
默认入场消息格式(兼容包括 3Commas、Cornix 及自定义 Binance Webhook 服务器在内的大多数 Webhook 机器人)如下:
{
"symbol": "{{ticker}}",
"side": "{{strategy.order.action}}",
"positionSide": "BOTH",
"investmentType": "coin_qty",
"qty": "{{strategy.order.contracts}}",
"order_type": "Limit",
"price": "{{strategy.order.price}}",
"reduceOnly": false,
"positionMode": "one_way_mode",
"signalId": "abc",
"uid": "xyz"
}
上线前请将 "abc" 和 "xyz" 替换为你的实际机器人凭证。占位符 {{ticker}}、{{strategy.order.action}}、{{strategy.order.contracts}} 和 {{strategy.order.price}} 会在警报触发时由 TradingView 自动替换。
出场消息使用 "price": "market" 和 "reduceOnly": true:
{
"symbol": "{{ticker}}",
"side": "{{strategy.order.action}}",
"positionSide": "BOTH",
"investmentType": "coin_qty",
"qty": "{{strategy.order.contracts}}",
"price": "market",
"reduceOnly": true,
"positionMode": "one_way_mode",
"signalId": "abc",
"uid": "xyz"
}
在 TradingView 上创建警报
- 将策略添加到图表并针对所选市场和周期配置所有参数。
- 点击 TradingView 中的"警报"按钮(铃铛图标),在该策略上创建新警报。
- 将条件设置为"仅限订单成交" —— 这会在每次订单执行时触发,而非每根 K 线触发。
- 入场信号的频率设置为"每根 K 线收盘一次"(入场仅在已确认的 K 线上触发)。出场信号方面,策略内部使用
barstate.isrealtime,因此当追踪止损触及时,警报将在 K 线中途触发。 - 在"Webhook URL"字段中粘贴你的 Webhook 地址。
- 在"消息"字段中粘贴来自
Entry Alert Message输入项的 JSON。针对出场单独创建第二个警报,使用出场消息 JSON。
实用说明:对于相同条件,警报默认每根 K 线只触发一次。策略内部使用 alert.freq_once_per_bar 作为服务器端去重机制,因此即使追踪条件在一根 K 线内多个 tick 持续为真,每根 K 线也只触发一次出场警报。这可防止交易所端意外双重出场。
执行模型:相比上一版本的改变
上一版本使用 process_orders_on_close=true 和 calc_on_every_tick=false。这迫使所有成交 —— 入场、出场、追踪止损 —— 均在 K 线收盘时模拟。权益曲线更为平滑,但与实盘订单实际成交方式存在根本性偏差。
当前版本使用 process_orders_on_close=false 和 calc_on_every_tick=true。这允许券商模拟器在 K 线内模拟追踪止损响应:若某根 K 线的盘中低点触及做多追踪止损位,出场将在 K 线中途模拟,而非等待收盘。代价是 K 线内的路径回放偶尔会在振幅极大的 K 线上产生过于乐观的成交模拟 —— 但这仍然比纯收盘模拟更接近实盘行为,尤其是追踪止损本质上就是实盘中的盘中触发。
对回测的实际影响:在相同日期范围内,当前执行模型与上一版本相比会显示略有不同的交易次数和权益曲线。两者在绝对意义上都不"更准确",但当前模型对实盘环境的校准更佳,因为实盘中出场订单确实会在 K 线中途成交。
解读回测结果
默认回测参数包含每方向 0.05% 手续费,并在 BTCUSDT.P 1H 数据上完成校准。评估结果时,重点关注以下指标:
关注什么,忽略什么
- 单独的胜率没有意义。85% 胜率、平均盈亏比 0.3 的策略可能劣于 60% 胜率、盈亏比 2.5 的策略。重点关注盈利因子(总盈利 ÷ 总亏损)和每笔交易期望值。
- 最大回撤占权益百分比比绝对金额回撤更重要。200 笔交易中账户 1.5% 的回撤可以接受;15% 则不行,无论净利润显示如何。
- 夏普比率高于 1.5 表明策略产生的收益超越其波动性。低于 1.0 则意味着收益未能对风险进行充分补偿。
- 分别查看多空胜率。若做空胜率明显高于做多胜率,策略存在方向性偏差。这不一定是坏事 —— 某些市场在一个方向上走势更为清晰 —— 但这意味着策略的表现部分取决于市场状态,而非仅仅取决于信号质量。
上线前的压力测试
单一有利时期的回测看起来令人信服,却可能掩盖脆弱性。在用真实资金冒险之前,至少在三个不同的市场状态下运行策略:
- 强趋势期(例如 2020–2021 年 BTC 牛市)
- 均值回归横盘期(例如 2022 年末 BTC 整理期)
- 高波动冲击期(例如任何重大宏观事件 —— FOMC 意外、交易所暴雷)
如果策略在某一状态下明显退化而在其他状态下表现正常,这告诉你应在何种市场条件下缩小仓位或暂停交易。在横盘延续期间亏钱的策略传达了一个有用信息:BOS 触发条件需要结构性突破,但在区间震荡中,"突破"经常被快速收回。考虑在已知低波动期将置信度阈值提高至 65% 以上。
自动订单规模:随权益扩展
自动订单规模功能(autoOrderSizeEnable)实现了一套简单的阶梯式仓位缩放系统。从默认订单规模(orderSizeDef = 0.1 BTC)出发,策略每累积超过初始资金 stepMoney 美元(默认 $1,000)的利润,就增加一个步进(orderStep = 0.1 BTC)。
举例:若初始资金为 $10,000,策略累计盈利 $3,200,则 _orderSteps = floor(3200 / 1000) = 3,订单规模变为 0.1 + 3 × 0.1 = 0.4 BTC。这是一种保守的复利方式 —— 在盈利连续期间缓慢放大,而非急剧增加,从而限制权益峰值后亏损期间的回撤。
初始测试期间请保持禁用。仅在确认策略在你的交易所表现符合预期、Webhook 运行可靠、且已观察至少 20–30 笔实盘交易后再启用。在未经验证的实盘系统上扩大仓位规模,是将小错误变成重大亏损的直接途径。
参数配置指南
大多数参数在 BTCUSDT 1H 下可保留默认值,这是主要调优配置。对实盘表现影响最大的参数如下:
高影响参数
- BOS 回望期(
bosLen = 8):回望期越短 = 结构突破越灵敏 = 信号越多但误报也越多。对于结构应在更长窗口上定义的高周期图表(4H、日线),可增至 12–15。 - 信号冷却期(
cooldownBars = 10):在 15 分钟图表上,10 根 K 线只有 2.5 小时 —— 考虑提高至 20–30。在日线图上,降至 5。 - 追踪距离(
trailAtrMult = 0.10):实盘交易中不要降至 0.075 以下。若希望持仓经历更深回撤,可提高至 0.15–0.20,但每笔盈利交易会回吐更多。 - 追踪激活(
trailActivateR = 0.4):0.4 的默认值反映了"贴近实盘"的行为。提高至 0.6–0.8 会使追踪止损更晚激活,让盈利交易有更大的运行空间,代价是短暂进入盈利后反转的交易将更频繁触及完整止损。 - HTF 周期(
htfTF = “240”):日线交易改用“W”(周线)。15 分钟短线改用“60”(1H)。原则是 HTF 应至少为交易周期的 4 倍。
低影响参数(仅供微调)
- 回测容差(
retestPct = 0.5%):±0.1–0.2% 的调整不太可能对策略行为产生实质影响 - 十字星比率(
dojiRatio = 0.1):K 线形态仅贡献 5 分 —— 不值得大量优化 - 弧形最低分数(
arcMinScore = 0.015):除非有特定理由对抛物线弧形确认的严格程度作出调整,否则保持默认值
信息表格:实时诊断
图表内嵌表格(默认右下角,可配置)同时显示 TOP 和 BOT 的当前因子分解。在完整模式下,每行显示某个因子是否当前处于激活状态。在紧凑模式下,仅显示总分。
将表格用作信号预警监测器:若表格显示 BOT 方向有 4 个因子激活、评分 48%,你就知道策略接近触发。提前准备仓位规模并审视图表背景 —— 若下一根 K 线出现成交量峰值,评分可能突破 50% 中等阈值并生成信号。这种工作流让你能够预判信号,而非被动反应,在你希望自动化系统接管前手动核验结构背景时尤为有价值。
核心要点
- BOS/MSS 是强制触发条件。每个信号都始于结构突破。MSS 触发信号(25 分)强于纯 BOS 信号(20 分),因为位移动量已得到确认。
- 追踪止损距离(0.10 倍 ATR)针对实盘交易调优,而非视觉美观。其宽度约为典型交易所 Webhook 执行摩擦的 3 倍。将距离降至 0.075 倍 ATR 以下,会导致频繁的追踪止损触发源于订单路由延迟而非有意义的价格行为。
- 0.4 倍风险的追踪激活可防止模拟器伪影。之前 0.2 的默认值导致 TradingView 券商模拟器模拟出实盘中不会发生的追踪行为。0.4 的默认值能产生与实盘表现高度一致的回测结果。
- 入场用限价单,出场用市价单。入场在已确认的 K 线收盘时触发(价格已锁定),因此以收盘价下限价单几乎确定成交。出场在追踪止损触及时盘中触发,因此带
reduceOnly: true的市价单确保立即执行且不开反向仓位。 - 入场与出场独立的警报消息允许使用不同的订单类型和规模。这消除了在可使用限价单入场时使用市价单的手续费浪费。
- 在三种市场状态下进行回测(趋势、震荡、冲击)后再上线。单一时期的结果不足以验证多条件策略。
- 自动订单规模是验证后才启用的功能 —— 仅在确认实盘执行在你的特定交易所和 Webhook 基础设施上端到端正常运作后再启用。