
黑色星期五凌晨3点,你刷着手机看到BTC突破新低。心跳加速,手指悬在”买入”按钮上方。脑子里闪过无数念头: - “现在不抄底就晚了!” - “技术面怎么样?算了,来不及看了” - “我账户还有多少钱?管他呢,先买再说”
点下按钮。第二天醒来,暴跌8%,爆仓出局。
这就是90%散户的日常。我也是,直到搭建了这个工具。
这个工具做的事情很简单:
你的交易冲动 → 强制写下理由 → AI冷静分析 → 给出可执行方案 → 记录成长轨迹
关键在于三个独特设计:
表单必须填写”交易思路”。当你试图用文字描述”为什么要做这笔交易”时,很多冲动就自然消退了。
❌ 模糊的冲动:"感觉要涨"
✅ 具体的理由:"突破120日均线+MACD金叉+成交量放大"
系统会自动收集4类数据并进行综合分析:
数据收集
持仓信息 ──┐
情绪分析 ──┼──→ 数据合并 → AI分析
技术指标 ──┤
交易思路 ──┘
AI分析的4个维度: - 0️⃣ 交易思路验证(最重要):找出认知偏差,验证逻辑是否成立 - 1️⃣ 技术信号验证:MACD/RSI/ATR/OBV是否支持你的判断 - 2️⃣ 情绪风险评估:市场情绪是贪婪还是恐慌 - 3️⃣ 入场时机判断:现在能进还是等回调/突破
输出多个字段的完整分析:
{
"思路原文": "跌了5%,应该到底了",
"思路评价": "不合理",
"致命缺陷": "锚定效应——下跌5%不代表充分",
"验证结果": "MACD=-213深度空头,RSI=31无底背离",
"执行建议": "放弃交易",
"建议入场价格": "不建议入场",
"止损价格": "$115,000",
"止盈目标1_价格": "$125,000",
// ...
}
每次交易灵感分析自动存入CSV文件,一个月后打开你会看到:
| 日期 | 思路评价 | 致命缺陷 | 执行建议 |
|---|---|---|---|
| 10⁄1 | 不合理 | 追涨杀跌 | 放弃 |
| 10⁄5 | 不合理 | 锚定效应 | 放弃 |
| 10⁄8 | 部分合理 | 止损设置过宽 | 等待 |
| 10⁄12 | 合理 | 无明显缺陷 | 立即执行 |
这就是你从冲动到理性的进化过程。

工作流触发 → 表单输入 → 空值判断 → [数据收集] → 数据整理 → AI分析 → 存储 → 导出CSV
↓
┌────────────┼────────────┐
↓ ↓ ↓
持仓信息 情绪分析 技术指标
节点名称: 输入交易火花
类型: Wait节点(表单模式)
// 表单字段配置
{
"交易品种": "text", // 如BTC
"交易方向": "下拉框选择", // LONG/SHORT/COVERLONG/COVERSHORT
"交易数量": "number", // 如1
"交易思路": "text" // 核心!必须填写理由
}
关键设计: - 表单后接Switch节点判断交易火花存在,进行下一步AI验证
节点名称: 收集持仓信息
类型: accountInfo节点
// 查询当前品种持仓
symbol: "{{ $json['交易品种'] }}_USDT.swap"
operation: "getPosition"
// 输出示例
{
"symbol": BTC, // 持仓品种
"amount": 0.5, // 持仓数量
"price": 110003 // 方向
}
节点名称: 收集情绪数据 → 情绪信息分析
类型: MCP Client + AI Agent
第一步:获取新闻
// Alpha Vantage MCP接口
endpointUrl: "https://mcp.alphavantage.co/mcp?apikey='YOUR_KEY'"
tool: "NEWS_SENTIMENT"
tickers: "CRYPTO:{{ $json['交易品种'] }}"
第二步:AI提取情绪
// AI输出的结构化情绪分析
{
"shortTermSentiment": {
"category": "积极",
"score": 0.7,
"rationale": "24小时内突破关键阻力位,社交媒体热度上升"
},
"longTermSentiment": {
"category": "中性",
"score": 0.0,
"rationale": "监管不确定性仍存,机构入场速度放缓"
}
}
为什么情绪数据重要?
散户和机构最大的差距之一就是信息获取能力。通过近期新闻情绪分析,我们能及时了解:
- 主流媒体对特定币种的报道倾向
- 市场参与者的情绪变化趋势
- 重大新闻事件的影响评估
这能填补关键的信息差。
节点名称: 信号指标计算
类型: tradingPlugin节点
function main(inputData) {
const symbol = inputData + "_USDT.swap"
const records = exchange.GetRecords(symbol)
// 数据校验
if (records.length <= 10) {
Log("Error: 数据不足");
return null;
}
// 计算技术指标(使用talib库)
const macd = talib.MACD(records);
const rsi = talib.RSI(records, 14);
const atr = talib.ATR(records, 14);
const obv = talib.OBV(records);
// 获取最近10个值
function getLast10Values(arr) {
if (!arr || arr.length === 0) return [];
return arr.slice(-10);
}
return {
MACD: {
macd: getLast10Values(macd[0]),
signal: getLast10Values(macd[1]),
histogram: getLast10Values(macd[2])
},
RSI: getLast10Values(rsi),
ATR: getLast10Values(atr),
OBV: getLast10Values(obv)
};
}
返回的技术指标: - MACD(趋势指标):金叉/死叉/背离 - RSI(振荡指标):超买(>70)/超卖(<30) - ATR(波动率):用于动态止损 - OBV(成交量):资金流向
直接从表单传递,包含品种、方向、数量、交易思路。
节点名称: 数据整理
类型: Code节点(JavaScript)
// 初始化容器
let posData = null;
let contentData = null;
let technicalIndicators = null;
let tradeIdea = null;
// 遍历合并节点的所有输入
for (const item of items) {
// =============== 持仓数据 ===============
if (item.json.operation === 'getPosition' && item.json.result !== undefined) {
posData = item.json.result;
// 关键转换:数值→易读文本
posData.amount = posData.amount == 0 ? "无持仓" :
posData.amount > 0 ? "多仓" : "空仓";
}
// =============== 情感分析结果 ===============
if (item.json.output !== undefined) {
try {
contentData = JSON.parse(item.json.output);
} catch (e) {
contentData = item.json.output;
}
}
// =============== 技术指标数据 ===============
if (item.json.MACD !== undefined || item.json.RSI !== undefined) {
technicalIndicators = {
"趋势指标MACD": item.json.MACD,
"振荡指标RSI": item.json.RSI,
"波动性指标ATR": item.json.ATR,
"成交量分析OBV": item.json.OBV
};
}
// =============== 交易意图 ===============
if (item.json["交易品种"] !== undefined) {
tradeIdea = {
"交易品种": item.json["交易品种"],
"交易方向": item.json["交易方向"],
"交易数量": item.json["交易数量"],
"交易思路": item.json["交易思路"] // 核心!
};
}
}
// =============== 返回汇总结果 ===============
return [{
json: {
"持仓数据": posData,
"情感分析": contentData,
"技术指标": technicalIndicators,
"交易意图": tradeIdea
}
}];
为什么需要这个节点? - 四路数据格式不统一,需要规范化 - 持仓数值需要转换成易读文本 - 技术指标加上中文描述,方便AI理解
节点名称: AI 交易火花鉴定
类型: Agent节点
这是整个系统的灵魂。Prompt设计了严格的分析框架:
分析框架(4维度):
0️⃣ 交易思路验证(优先级最高)
- 该理由是否成立?(用技术指标+情绪数据验证)
- 是否存在认知偏差?(追涨杀跌/锚定效应/赌徒谬误)
- 风险收益比是否合理?(至少2:1)
1️⃣ 技术信号验证
- MACD方向是否支持交易方向?
- RSI是否超买/超卖?
- OBV与价格是否背离?
2️⃣ 情绪风险评估
- 短期情绪分数?(>0.6极度贪婪/<-0.6极度恐慌)
- 是否存在黑天鹅事件?
3️⃣ 入场时机判断
- 当前价位是否合理?
- 是否需要等待回调/突破?
输出要求:完整分析字段
{
"分析时间": "2025-10-11T10:30:00.000Z",
"交易品种": "BTC",
"交易方向": "LONG",
"交易数量": "1",
"思路原文": "跌了5%,应该到底了",
"思路评价": "不合理",
"验证结果": "MACD=-213深度空头,RSI=31无底背离,OBV持续流出",
"致命缺陷": "锚定效应——下跌5%不构成反转理由",
"执行建议": "放弃交易",
"信心度": "高",
"依据_思路验证": "交易逻辑存在严重缺陷",
"依据_技术面": "MACD/RSI/OBV均显示空头趋势未结束",
"依据_风险点": "盲目抄底可能遭遇二次探底,潜在亏损15%+",
"建议入场价格": "不建议入场",
"建议入场条件": "交易思路存在重大缺陷",
"建议入场时间": "放弃当前计划",
"止损价格": "$115,000",
"止损理由": "跌破关键支撑位",
"止盈目标1_价格": "$125,000",
"止盈目标1_仓位": "50%",
"止盈目标1_理由": "回测阻力位",
"止盈目标2_价格": "$132,000",
"止盈目标2_仓位": "剩余仓位",
"止盈目标2_理由": "关键整数关口",
"核心风险": "当前处于下跌趋势中段,抄底过早可能遭遇止损",
"风险收益比": "0.5:1",
"潜在收益百分比": "5%",
"最大亏损百分比": "10%",
"风险等级": "高风险",
"操作摘要": "放弃抄底计划,等待MACD金叉+RSI底背离",
"决策有效期": "直到技术面出现明确反转信号",
"复核条件": "MACD金叉或RSI形成底背离或出现放量阳线"
}
字段分析 - 覆盖交易决策的所有关键要素 - 完全扁平化,方便后续CSV存储 - 每个字段都可执行,有明确的触发条件
特殊情况处理规则:
Prompt里专门定义了3种特殊情况:
当”交易思路”明显不合理时:
当市场极度波动时:
当技术指标矛盾时:
类型: Code节点
const rawData = $input.first().json.output;
// 提取JSON内容的函数(处理可能的markdown包裹)
function extractJSON(outputString) {
const jsonMatch = outputString.match(/```json\n([\s\S]*?)\n```/);
if (jsonMatch && jsonMatch[1]) {
return JSON.parse(jsonMatch[1]);
}
// 如果没有markdown包裹,直接解析
return JSON.parse(outputString);
}
const result = extractJSON(rawData);
Log("本次交易分析:", result);
// 使用_G全局存储函数(关键!)
let tradelog = _G('tradelog') || []; // 初始化兜底
// 添加最新记录
tradelog.push(result);
// 持久化保存
_G('tradelog', tradelog);
return tradelog;
_G函数的价值: - 数据持久化存储,重启工作流后依然存在 - 可以跨工作流共享数据 - 非常适合记录历史交易决策
类型: convertToFile节点
把JSON数组转换成CSV格式,包含所有字段。
类型: writeFile节点
保存到本地tradelog.csv。
CSV文件的长期价值:
这个文件记录了你的交易思维演变过程:
第1周: 10次想法 → 7次"不合理" → 认知偏差:追涨杀跌
第2周: 8次想法 → 5次"不合理" → 开始意识到问题
第4周: 6次想法 → 3次"不合理" → 学会等待技术信号
第8周: 5次想法 → 1次"不合理" → 思路开始成熟
...
这就是一个交易大师的成长日记。
这个工具不是万能的:
❌ 不能预知未来: AI基于历史数据,黑天鹅来了一样失效
❌ 不能替代直觉: 老交易员的”盘感”很难量化
❌ 不能保证盈利: 只能提高决策质量,不保证每笔都赚
❌ 不能对抗极端行情: 市场疯狂时,理性分析可能反而吃亏
但它能做到:
✅ 让你知道每笔交易的风险
✅ 帮你识别认知偏差
✅ 记录你的成长轨迹
✅ 避免最低级的错误
短期优化: - 接入更多数据源(链上数据、资金费率) - 增加历史回测模块 - 用ATR动态计算止损
更多完善: - 对接交易所API实现半自动下单 - 多个AI Agent投票(激进派vs保守派) - 根据市场环境调整情绪/技术权重
点击文章末尾的策略连接,点击复制策略。
需要配置3个API: 1. Alpha Vantage(情绪数据):在MCP客户端节点配置 2. OpenAI(AI模型):在两个OpenAI模型节点配置 3. 交易所(持仓查询,实盘需要配置):在交易所板块配置
tradelog.csv# 1. 进入托管者日志目录
cd ~/logs/storage
# 2. 找到你的策略ID目录(如620669)
cd 620669/files
# 3. 查看交易日志
cat tradelog.csv
每次有交易冲动就填表单,让AI帮你冷静分析。建议每周末打开tradelog.csv复盘一次,看看自己最常犯哪些错误(追涨杀跌?盲目抄底?),持续使用1-2个月后,你会清晰看到自己从冲动到理性的进化轨迹。
这个工具最大的价值,不是帮你赚了多少钱,而是:
它逼着你在每次下单前问自己:我为什么要做这笔交易?
交易的终极目标,不是打败市场,而是理解自己。理解自己的贪婪、恐惧、和自以为是。
这个交易日志文件,就是你的自我认知之路。
技术支持: 欢迎在评论区讨论
免责声明: 工具仅供学习,交易有风险,请谨慎决策
如果这篇文章对你有帮助,欢迎分享给同样在交易路上挣扎的朋友。我们都需要一个冷静的声音,在冲动来临时说一句:“等等,你确定吗?”
策略链接 :https://www.fmz.com/strategy/511337 注意 :本框架只是初步实现,需要优化更多Bug处理和功能完善