Type/to search
2
Follow
484
Followers
币安永续合约打新自动化工作流:让AI替你盯盘
Discussions
Created 2026-03-20 09:40:26  Updated 2026-03-23 16:16:26
 0
 351

img

打新这个词,股市里大家都不陌生。提前申购拿到筹码,等到正式挂牌那一刻享受价格发现带来的收益——这是打新的核心逻辑。币圈同样有打新机会,而且频率远比股市高得多。各大中心化交易所几乎每隔几天就有新的永续合约上线,这些机会对所有人平等开放。

img

合约上线初期,市场对这个币种的定价还不充分,价格弹性极大,往往在短时间内走出远超普通行情的涨跌幅。提前判断好方向,等开盘那一刻入场,这正是永续合约打新的机会所在。但问题也在这里——新合约上线前,我们对这个币种几乎一无所知。团队背景、代币经济模型、市场情绪、资金费率……这些信息需要大量时间去收集和分析。没有充分的认知就贸然入场,和赌博没什么区别。靠人工去研究每一个新币,根本跟不上节奏。

所以今天介绍的这套工作流,就是为了解决这个问题——让系统在公告发出的第一时间自动开始采集数据、持续进行AI分析,在开盘前帮我们建立足够的认知基础。整套工作流24小时自动运行,不需要人工盯盘,新币公告、数据采集、AI分析、开盘入场,全部自动完成。

img


整体架构:两条并行运行线

这套策略的架构分成两条运行线。

分析线以较长的时间间隔循环运行,负责持续监控新币上市公告、采集多维度数据、调用AI进行分析,并把每一次的分析结论积累成历史记录。执行线以非常快速的时间间隔高频循环,负责实时检测新币是否已在交易所上线,一旦检测到上线就立即读取分析结果、判断是否入场,并持续监控持仓的止盈止损。

两条线分工明确——分析线给出方向,执行线负责落地。


分析线:第一步——发现新币,建立追踪队列

分析线启动后,首先初始化全局状态,记录初始资金、运行次数等基础数据:

javascript
if (_G('nl_initialized') === null) { _G('nl_initialized', true); _G('nl_trackingList', JSON.stringify([])); _G('nl_STARTTIME', Date.now()); const initAccount = exchange.GetAccount(); _G('nl_initmoney', $vars.initmoney || initAccount.Balance); }

然后拉取币安官方公告,识别即将上线永续合约的新币种:

javascript
const raw = HttpQuery( 'https://www.binance.com/bapi/composite/v1/public/cms/article/list/query?type=1&pageNo=1&pageSize=10', { method: 'GET', headers: { 'User-Agent': 'Mozilla/5.0', 'clienttype': 'web' } } );

识别到新币后,系统把它推入追踪队列并打上状态标记:上线前是PRE_LISTING(预追踪),上线当天切换为LAUNCH_DAY(开盘日),入场后进入TRADING(交易中),完成后置为DONE并自动清出队列。

javascript
trackingList.push({ symbol, launchDate, status: isLaunchDay ? 'LAUNCH_DAY' : 'PRE_LISTING', discoveredAt: now.toISOString(), hoursToLaunch: isLaunchDay ? '今日发行' : hoursToLaunch, analysisCount: 0, lastAnalyzedAt: null });

这样系统始终只关注当前真正有价值的目标,不会把精力浪费在已过期的机会上。


分析线:第二步——多维度数据采集

发现新币之后,系统立即从三个维度开始采集数据。

基本面数据通过CoinMarketCap API获取代币的市值、流通比、CMC排名等:

javascript
function fetchCMC(coin) { const key = $vars.cmcApiKey || ''; const raw = HttpQuery( 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest?symbol=' + coin + '&convert=USD', { method: 'GET', headers: { 'X-CMC_PRO_API_KEY': key, 'Accept': 'application/json' } } ); const c = JSON.parse(raw).data[coin]; const q = c.quote.USD; const supply = c.max_supply || c.total_supply; return { name: c.name, rank: c.cmc_rank, circulatingSupply: c.circulating_supply, circulationRatio: supply ? parseFloat((c.circulating_supply / supply * 100).toFixed(2)) : null, spotPrice: q.price, change1h: q.percent_change_1h, change24h: q.percent_change_24h, change7d: q.percent_change_7d, volume24h: q.volume_24h, marketCap: q.market_cap, fullyDilutedMarketCap: q.fully_diluted_market_cap }; }

舆情数据通过Brave Search抓取近期与该币相关的资金背景、团队动态、解锁计划等新闻,用三条不同关键词组合分别搜索:

javascript
function fetchBraveNews(coin) { const key = $vars.braveKey || ''; const queries = [ '"' + coin + '" token funding team', '"' + coin + '" vesting unlock schedule', '"' + coin + '" binance futures listing' ]; // 对每条query调用Brave Search API,过滤命中coin名称的结果,去重后返回 }

市场行情数据同时采集Bybit、OKX、Gate、HTX四个交易所的合约行情,包括资金费率、持仓量、价差等关键指标。以OKX为例:

javascript
function fetchOKX(coin) { try { const instId = coin + '-USDT-SWAP'; const tkRaw = HttpQuery('https://www.okx.com/api/v5/market/ticker?instId=' + instId, { method: 'GET', headers: { 'Accept': 'application/json' } }); const tk = JSON.parse(tkRaw).data && JSON.parse(tkRaw).data[0]; if (!tk) return null; Sleep(150); let fundingRate = null, nextFundingRate = null, fundingTime = null, nextFundingTime = null; try { const frRaw = HttpQuery('https://www.okx.com/api/v5/public/funding-rate?instId=' + instId, { method: 'GET', headers: { 'Accept': 'application/json' } }); const fr = JSON.parse(frRaw).data && JSON.parse(frRaw).data[0]; if (fr) { fundingRate = parseFloat(fr.fundingRate); nextFundingRate = fr.nextFundingRate !== '' ? parseFloat(fr.nextFundingRate) : null; fundingTime = fr.fundingTime; nextFundingTime = fr.nextFundingTime; } } catch(e) {} Sleep(150); let openInterest = null; try { const oiRaw = HttpQuery('https://www.okx.com/api/v5/public/open-interest?instType=SWAP&instId=' + instId, { method: 'GET', headers: { 'Accept': 'application/json' } }); const oiData = JSON.parse(oiRaw).data && JSON.parse(oiRaw).data[0]; if (oiData) openInterest = parseFloat(oiData.oiUsd); } catch(e) {} const last = parseFloat(tk.last); const sodUtc0 = parseFloat(tk.sodUtc0); return { price: last, bid1: parseFloat(tk.bidPx), bid1Size: parseFloat(tk.bidSz), ask1: parseFloat(tk.askPx), ask1Size: parseFloat(tk.askSz), spread: parseFloat((parseFloat(tk.askPx) - parseFloat(tk.bidPx)).toFixed(8)), change24h: parseFloat(((last - sodUtc0) / sodUtc0 * 100).toFixed(4)), high24h: parseFloat(tk.high24h), low24h: parseFloat(tk.low24h), open24h: parseFloat(tk.open24h), volume24h: parseFloat(tk.vol24h), volCcy24h: parseFloat(tk.volCcy24h), openInterest, fundingRate, nextFundingRate, fundingTime, nextFundingTime }; } catch(e) { Log('OKX失败:', e.message); return null; } }

多交易所交叉验证,能有效避免单一数据源带来的偏差,对新币的认知也更加立体。


分析线:第三步——带历史记忆的AI分析

这是整套工作流最核心的设计。

从公告发布到新币正式上线往往需要几天时间,在这段时间里系统会反复采集数据、反复调用AI分析。关键在于:每一次分析都会把之前所有的结论一并传给AI,让它在历史判断的基础上做出新的推断。

读取历史记录并注入Prompt:

javascript
const historyKey = 'nl_history_' + symbol; const history = JSON.parse(_G(historyKey) || '[]'); const orderNum = history.length + 1; function buildHistorySection(history) { if (history.length === 0) return '(这是对该币种的第一次分析,暂无历史记录)'; return history.map(h => { const ai = h.aiConclusion; return [ '### 第' + h.order + '次分析', '- 时间: ' + h.timestamp + ' | 距上线' + h.hoursToLaunch + ' | 阶段:' + h.phase, '- 结论: ' + ai.direction + ', 置信度' + ai.confidence + '%, 风险' + ai.riskLevel, '- 趋势: ' + (ai.trendConsistency || '初始'), '- 入场时机: ' + (ai.entryTiming || '-'), '- 综合判断: ' + ai.summary ].join('\n'); }).join('\n\n'); }

AI分析遵循几条核心原则:历史方向一致时置信度随次数递增;出现方向反转时必须明确说明是真实信号还是短期噪音;历史判断摇摆不定时置信度保守不可盲目拔高。AI最终输出一个结构化结论:

javascript
// AI输出的JSON结构 { "order": 3, "direction": "做多|做空|观望", "confidence": 76, // 0-100整数 "trendConsistency": "初始|强化|维持|弱化|反转", "reversalType": "真实信号|短期噪音|null", "entryTiming": "immediate|drawdown_N", // drawdown_5 表示等回调5% "priceRange": { "low": 128, "high": 130 }, "leverage": 10, "stopLoss": 5, // 止损百分比 "takeProfit": 15, // 止盈百分比 "riskLevel": "高|中|低", "riskPoints": ["风险点1", "风险点2"], "keyChanges": "与上次相比最重要的数据变化", "summary": "100字以内综合判断" }

分析完成后,结论存入历史记录,同时更新该币种的最终策略供执行线读取:

javascript
const record = { order: item.orderNum, timestamp: new Date().toISOString(), phase: item.status, hoursToLaunch: item.hoursToLaunch, currentData: item.currentData, aiConclusion: aiResult }; history.push(record); _G('nl_history_' + symbol, JSON.stringify(history)); _G('nl_strategy_' + symbol, JSON.stringify({ symbol, updatedAt: new Date().toISOString(), phase: item.status, historyCount: history.length, aiResult }));

如果方向始终一致,置信度会随着分析次数递增;如果出现方向反转,AI必须给出明确理由。这样积累下来的判断,远比单次独立分析要可靠得多。


执行线:第四步——上线检测与安全入场

执行线高频循环,通过exchange.GetMarkets()检测新币是否已出现在交易所合约列表中。一旦检测到上线,先过一道安全检查:

javascript
if (ai.direction === '观望') { updateStatus(symbol, 'DONE'); continue; } if (ai.riskLevel === '高') { updateStatus(symbol, 'DONE'); continue; } if (ai.confidence < CONFIG.MIN_CONFIDENCE) { updateStatus(symbol, 'DONE'); continue; } if (hasPosition(coin)) { updateStatus(symbol, 'TRADING'); continue; }

通过全部检查后,根据AI给出的入场时机执行操作。如果是立即入场,计算合约数量后直接下单:

javascript
const leverage = Math.min(ai.leverage || 5, CONFIG.MAX_LEVERAGE); exchange.SetMarginLevel(leverage); const allocAmount = Math.min(CONFIG.POSITION_AMOUNT, account.Balance * 0.3); const qty = calcContractAmount(allocAmount, price, market); if (ai.direction === '做多') { exchange.SetDirection('buy'); orderId = exchange.Buy(-1, qty); } else if (ai.direction === '做空') { exchange.SetDirection('sell'); orderId = exchange.Sell(-1, qty); }

如果AI判断开盘溢价过高,选择等待回调入场,系统记录目标价并持续轮询:

javascript
const targetPrice = ai.direction === '做多' ? openPrice * (1 - pct / 100) : openPrice * (1 + pct / 100); _G(coin + '_nl_waitEntry', JSON.stringify({ type: 'drawdown', waitStartTime: Date.now(), openPrice, targetPrice, drawdownPct: pct, ai })); updateStatus(symbol, 'TRADING_WAIT');

等待超过2小时未触发,则视为机会已过,自动放弃入场。


执行线:第五步——持仓监控与止盈止损

入场之后,执行线持续监控持仓状态。止盈止损采用两种机制并行运作:

javascript
const TP_SL = { DEFAULT_SL: 10, // 默认止损 10% DEFAULT_TP: 25, // 默认固定止盈 25% TRAILING_TRIGGER: 30, // 浮盈达到30%时启用移动止盈 TRAILING_DRAWDOWN: 8 // 移动止盈回撤触发比例 8% }; // 更新最高浮盈记录 if (pnlPct / 100 > maxProfit) { maxProfit = pnlPct / 100; _G(maxProfitKey, maxProfit); } // 浮盈达到阈值,自动启用移动止盈 if (tpDrawdown === 0 && maxPnlPct >= TP_SL.TRAILING_TRIGGER) { tpDrawdown = TP_SL.TRAILING_DRAWDOWN; _G(tpDrawKey, tpDrawdown); } // 依次判断三种平仓条件,哪个先触发执行哪个 let closeReason = null; if (tpDrawdown > 0 && drawdown >= tpDrawdown) closeReason = '移动止盈'; if (!closeReason && pnlPct <= -maxSL) closeReason = '止损'; if (!closeReason && pnlPct >= entry.takeProfit) closeReason = '固定止盈'; if (closeReason) { if (isLong) { exchange.SetDirection('closebuy'); exchange.Sell(-1, amount); } else { exchange.SetDirection('closesell'); exchange.Buy(-1, amount); } _G(maxProfitKey, null); _G(slKey, null); _G(tpDrawKey, null); }

移动止盈让盈利尽量跑起来,固定止盈和止损则守住底线,三者同时生效,哪个先触发执行哪个。


实际运行效果展示

策略运行后,仪表板会实时展示四张状态表:账户概览显示运行时长、当前权益和总收益率;追踪队列显示每个被监控币种的状态、上线倒计时和分析次数;AI分析摘要展示每个币种最新一次的完整分析结论;实时持仓监控显示浮盈、最高浮盈和移动止盈启用情况,支持在线手动平仓和修改止损参数。

img

以近期准备上线的EWYUSDT为例,系统从公告发现它开始已连续完成多次分析,每次AI给出的方向都是做多,趋势标记为"持续强化"——这正是历史记忆机制在发挥作用,多次分析方向一致,说明多方信号是稳定的,而不是某次数据波动带来的误判。最新一次综合判断:OKX和HTX资金费率稳定为正,上线韩国ETF永续的相关新闻整体正面,AI给出做多方向,置信度76%,建议在128到130价格区间开盘即时入场,10倍杠杆,止损5%,止盈15%,风险中等。


策略边界与风险提示

这套策略解决的核心问题是:在新币上线前,用系统化的方式替代人工建立对该币种的认知,并把判断结论转化为可执行的入场信号。但需要清楚认识它的局限性:

新币本身波动极大,止损可能在开盘的第一分钟内就被触发;AI的判断质量依赖数据的完整性,上线前数据越少判断越保守;杠杆放大了盈亏,任何策略都不能保证稳定盈利。

做好仓位控制,是使用这套策略最重要的前提。

这套系统目前更多是一个起点。打新是一个很有深度的方向,里面涉及的信号维度、入场时机的判断、仓位管理的细节,都还有大量可以优化的空间。如果你在打新这个领域有自己的经验和心得,欢迎在评论区交流,集思广益才能走得更远。任何策略都有亏损风险,使用前一定要根据自身情况完善策略逻辑。

策略源码:币安打新智能AI策略

Comment
All comments (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)