[TOC]

本文策略由用户 @Gianbin 开源分享,基于我们之前的工作流双交易路线框架改造而来。感谢慷慨分享,以下是完整的策略逻辑拆解。
币圈里经常出现”妖币”——一天涨幅三四十甚至翻倍。这类币看起来诱人,但涨得越猛,往往回调越狠。
这个策略就抓住了这个特点:
整体资金管理原则:固定50U开仓,总头寸控制在500U以内,风险相对可控。

策略分为两条独立流程,各司其职:
主交易流程(每15分钟):筛选涨幅榜 → 收集数据 → AI分析 → 执行开仓
风控监控流程(每5秒):实时盯盘 → 止盈止损检测 → 倒金字塔加仓 → 可视化仪表板
策略决策可以慢慢跑,但风控反应必须快。这也是为什么两条线的触发频率差距如此之大。
定时触发器每隔15分钟启动一次,从币安拉取所有USDT永续合约行情,筛选出24小时涨幅超过10%的币种,取前20名。同时自动排除已持仓的标的,避免重复建仓。
// 核心筛选逻辑(节选)
const minChange = $vars.minChange || 0.1; // 默认涨幅阈值10%
const topN = $vars.topN; // 取前N名,默认20
// 过滤USDT永续合约,计算24h涨幅
const change24h = open24h > 0 ? (price - open24h) / open24h : 0;
if (change24h < minChange) continue; // 低于阈值直接跳过
// 排除已持仓币种
if (excludeHolding && holdingSymbols.indexOf(symbol) !== -1) continue;
// 按涨幅降序,取前N名
usdtPairs.sort((a, b) => b.change24h - a.change24h);
const topGainers = usdtPairs.slice(0, topN);
这一步相当于”海选”,把最猛的妖币先捞出来备用。
光看涨幅不够,系统还会同步收集以下数据,为AI分析做准备:
| 数据维度 | 含义 | 用途 |
|---|---|---|
| 持仓量(OI) | 合约市场总持仓规模 | 衡量流动性与市场热度 |
| 资金费率 | 多空双方支付比例 | 判断做空是否已过度拥挤 |
| 市值(MCap) | 流通市值 | 计算OI/MCap杠杆率 |
| K线数据 | 日线OHLCV | 技术形态分析 |
其中OI/MCap比率是核心指标——这个比率越高,说明市场杠杆越高,爆仓风险越大,做空的胜算越高。
// 通过币安API获取持仓量(节选)
const ret = exchange.IO("api", "GET", "/fapi/v1/openInterest", "symbol=" + symbol);
if (ret && ret.openInterest) {
openInterest = parseFloat(ret.openInterest) * coin.price; // 折算成USD
}
// 计算OI/MCap比率
const oiMcapRatio = marketCap > 0 ? openInterest / marketCap : 0;
市值数据从CoinMarketCap API获取,并做了30分钟本地缓存,避免频繁调用外部接口。
这是整个策略的核心。收集到数据后,打包送给AI(这里用的是x-ai/grok-4.1-fast)进行评分,满分10分,只有达到8分以上的标的才会进入候选开仓名单。
| 因子 | 权重 | 评分逻辑 |
|---|---|---|
| OI/MCap比率 | 3.5 | >35%得满分,杠杆越高越危险 |
| K线形态 | 2.8 | 长上影线/高位十字星等见顶信号得高分 |
| 持仓量 | 1.5 | 流动性越好得分越高 |
| 成交量 | 1.5 | 交易越活跃得分越高 |
| 涨幅 | 0.5 | 已通过初筛,区分度较低 |
| 资金费率 | 0.2 | 多头越拥挤得分越高 |
OI/MCap比率权重最高(3.5分),是因为它直接反映市场杠杆程度——杠杆越高,一旦反转就越容易引发踩踏式平仓,做空的赔率更好。
长上影线突破新高(2.8分):high创新高,且上影线 > 实体 × 2 高位长上影线(2.4分):上影线 > 实体 × 2,且收盘接近24h最高价 高量阴线(2.0分):收阴,且成交量 > 前日 × 1.5 高位十字星(1.8分):实体 < 振幅 × 0.1,且价格接近最高位 连续两根阴线(1.5分)
在AI评分之前,策略会先做几道硬过滤,不满足直接跳过不评分:
// 周线最高价计算(节选)
const weeklyHigh = Math.max(...klines.slice(-7).map(k => k.high));
const weeklyDrawdown = (weeklyHigh - price) / weeklyHigh;
if (weeklyDrawdown > 0.05) {
// 距周线高点超5%,跳过
filtered.weeklyDrawdown++;
continue;
}
总分 ≥ 8.0 且日内回撤 ≤ 5% 时,进入决策判断:资金费率 ≥ -0.15% 则输出「开空」;资金费率在 -0.20%~-0.15% 之间则输出「谨慎开空」。总分 < 8.0 的标的不输出、不开仓。
AI输出JSON格式的决策结果,交易执行节点解析后下单:
// 执行开空(节选)
function executeShort(coin, signalInfo) {
exchange.SetCurrency(coin + '_USDT');
exchange.SetContractType("swap");
exchange.SetMarginLevel(CONFIG.DEFAULT_LEVERAGE); // 设置需求杠杆
// 根据固定金额计算张数
const contractAmount = calculateContractAmount(
CONFIG.FIXED_AMOUNT_USD, // 固定50U
currentPrice,
market
);
exchange.SetDirection("sell");
const orderId = exchange.Sell(-1, contractAmount); // 市价开空
if (orderId) {
_G(`${coin}_USDT.swap_maxprofit`, 0); // 初始化最高盈利记录
Log(`✅ ${coin}: 开空成功 评分${signalInfo.score}`);
}
}
每次开仓固定50U,风险单一可控。
每5秒触发一次,持续盯着所有持仓,执行两个核心功能:倒金字塔加仓 和 止盈止损。
这是这个策略最有意思的设计。做空之后,如果价格不跌反涨,正常人会止损跑路。但这个策略选择逆势加仓——越涨越加,因为涨得越高,最终回调的幅度往往越大。
加仓规则如下:
初始开仓 50U(开仓价记为 P0)。若价格从 P0 上涨 50%,触发第一次加仓 150U,记录此时价格为 P1。若价格从 P1 继续上涨 70%,再触发第二次加仓 300U。最多加仓两次,三笔合计总头寸上限 500U(50 + 150 + 300)。
// 加仓触发检测(节选)
function checkAndExecutePyramidAdd(coin, entryPrice, currentPrice, isShort) {
const addCount = _G(addCountKey) || 0;
if (addCount >= 2) return null; // 最多加仓两次
if (addCount === 0) {
// 第一次加仓:从开仓价涨50%触发
triggerPrice = storedEntryPrice * (1 + PYRAMID_CONFIG.ADD1_TRIGGER);
addAmount = PYRAMID_CONFIG.ADD1_AMOUNT; // 150U
} else if (addCount === 1) {
// 第二次加仓:从第一次加仓价涨70%触发
triggerPrice = add1Price * (1 + PYRAMID_CONFIG.ADD2_TRIGGER);
addAmount = PYRAMID_CONFIG.ADD2_AMOUNT; // 300U
}
if (currentPrice >= triggerPrice) {
return { level: addCount + 1, amount: addAmount, triggerPrice, currentPrice };
}
return null;
}
这个设计的逻辑:妖币越涨越亢奋,泡沫越吹越大,最终回调时因为高杠杆踩踏会更猛烈。在高位持有更大仓位,一旦反转利润成倍放大。
风险也很明显:如果币种真的一直涨不回来(比如遇到真正的牛市单边行情),亏损同样会放大,因此账户应该持有足够的金额应对波动风险,防止被爆仓强平。在同时策略明确头寸上限500U,不会无限加仓。
止盈采用回撤止盈模式,而非固定止盈:
当持仓最高盈利达到 35% 时,自动启动回撤监控;一旦从最高盈利点回撤 5%,立即触发平仓。
这样设计的好处是”让利润奔跑”——不会因为提前止盈错过更大利润,同时也不会坐电梯把浮盈全吐回去。
// 自动止盈触发逻辑(节选)
if (enableAutoTpDrawdown && isShort && tpDrawdown === 0 && maxPnlPercent >= autoTpTrigger) {
tpDrawdown = autoTpDrawdownValue; // 设置5%回撤止盈
_G(tpDrawdownKey, tpDrawdown);
Log(`🎯 ${coin} 最高盈亏达${maxPnlPercent}%,自动启用止盈回撤5%`);
}
// 触发止盈
if (tpDrawdown > 0 && maxPnlPercent > 0 && drawdown >= tpDrawdown) {
autoCloseReason = `止盈回撤(回撤${drawdown}%≥${tpDrawdown}%)`;
}
止损方面,支持手动设置固定百分比止损,作为底线保护。

策略内置四个监控面板,方便实时掌握运行状态:
账户概览:权益、累计盈亏、盈利率、账户杠杆(带风险等级颜色提示)
AI信号表:记录每次AI决策的评分、决策结论、各因子得分和分析原因,不用猜AI在想什么
持仓监控表:实时显示每个仓位的入场价、当前价、浮盈浮亏、最高盈利记录、当前回撤、加仓触发价格,以及止盈止损状态
网格详情:持仓配合网格交易时的订单状态
每隔5秒刷新一次,通过FMZ平台的LogStatus渲染为交互式表格,支持直接点击平仓、修改止盈止损参数等操作。
逆向思维,天然有对手盘。当市场追涨时做空,流动性充足,滑点小。
AI多因子筛选,不是盲目做空。六个维度综合评分,过滤掉大量低质量信号,只做评分8分以上的标的。
倒金字塔配合回撤止盈,盈亏比不错。高位越涨越加仓,反转幅度大,潜在利润高;止盈不固定,让利润充分释放。
头寸严格控制。单笔最多500U,即便全亏也是可承受的。
遭遇单边牛市时会持续亏损。如果市场进入强势上涨周期,做空涨幅榜可能连续踩坑。
倒金字塔加仓是双刃剑。逆势加仓放大了胜利时的利润,同样也放大了失败时的亏损。如果妖币真的一直涨(比如某项目有重大利好),三次仓位全部亏损,损失最大500U。
适用场景:震荡市或熊市环境,不适合单边牛市。在使用前需要对大盘环境有基本判断。
这个策略的核心思路:用数据和AI取代主观判断,用严格的头寸控制替代侥幸心理。
不论是六因子评分体系的设计,还是OI/MCap比率作为核心指标的选择,都能看出作者对市场微观结构有扎实的认知——知道什么指标真正有用,什么是噪音。
当然,任何策略都有其适用边界。工具是死的,市场是活的。建议在实盘之前充分回测,根据自己的风险承受能力调整参数,不要无脑照搬。
特别感谢用户 @Gianbin 将这套策略毫无保留地分享了策略思路。正是这种开源精神,让更多人有机会学习和探索量化交易的可能性。如果你也有好的策略思路,欢迎交流!