diff --git a/config.example.go b/config.example.go deleted file mode 100644 index 84f6f9db..00000000 --- a/config.example.go +++ /dev/null @@ -1,84 +0,0 @@ -package main - -import ( - "nofx/trader" - "time" -) - -// 配置示例 - 复制到 main.go 中使用 - -func exampleConfig() trader.AutoTraderConfig { - return trader.AutoTraderConfig{ - // ========== API密钥配置 ========== - // 在币安官网申请: https://www.binance.com/zh-CN/my/settings/api-management - BinanceAPIKey: "YOUR_BINANCE_API_KEY", // 必填 - BinanceSecretKey: "YOUR_BINANCE_SECRET_KEY", // 必填 - - // 币种池API(可选,不填则使用默认池) - CoinPoolAPIURL: "", // 留空,将从config.json读取 - - // ========== AI配置 ========== - // 选择一个AI服务商(二选一) - UseQwen: true, // true=使用阿里云Qwen, false=使用DeepSeek - - // DeepSeek配置 - // 申请地址: https://platform.deepseek.com/ - DeepSeekKey: "sk-your-deepseek-api-key", - - // 阿里云Qwen配置 - // 申请地址: https://dashscope.aliyun.com/ - QwenKey: "sk-your-qwen-api-key", - - // ========== 交易周期 ========== - // AI决策频率(建议3-5分钟) - ScanInterval: 3 * time.Minute, - - // ========== 风险控制 ========== - // 注意:这些仅作为提示,AI可以自主决定实际参数 - MaxDailyLoss: 5.0, // 最大日亏损5%(触发后暂停) - MaxDrawdown: 10.0, // 最大回撤10%(触发后暂停) - StopTradingTime: 30 * time.Minute, // 触发风控后暂停30分钟 - } -} - -// ========== AI决策原则(内置在系统中) ========== -// -// 以下参数由AI根据市场情况自主决定,无需配置: -// -// 1. 杠杆倍数: 1-20倍 -// - AI会根据波动率和信心度选择 -// - 高波动 → 低杠杆 -// - 低波动 → 高杠杆 -// -// 2. 仓位大小: USD金额 -// - AI会根据账户净值和风险评估决定 -// - 建议单笔风险2-5% -// -// 3. 止损止盈价格: -// - AI会根据技术指标动态设置 -// - 风险回报比建议 ≥ 1:2 -// -// 4. 开仓时机: -// - 趋势明确、技术指标一致 -// - RSI、MACD、EMA多重确认 -// -// 5. 平仓时机: -// - 到达止损/止盈 -// - 趋势反转信号 -// - 大额亏损保护 -// -// ========== 快速开始 ========== -// -// 1. 配置API密钥(main.go中) -// 2. 选择AI服务商(DeepSeek或Qwen) -// 3. 编译: go build -o nofx-auto -// 4. 运行: ./nofx-auto -// 5. 观察AI的思维链分析和决策 -// -// ========== 风险提示 ========== -// -// ⚠️ 建议先用小额资金(100-1000 USDT)测试 -// ⚠️ 密切监控系统运行,特别是初期 -// ⚠️ 设置币安API的IP白名单 -// ⚠️ 定期检查持仓和盈亏 -// ⚠️ 加密货币交易有风险,投资需谨慎 diff --git a/market/ai_decision_engine.go b/market/ai_decision_engine.go index be7f40a0..602b210e 100644 --- a/market/ai_decision_engine.go +++ b/market/ai_decision_engine.go @@ -310,49 +310,67 @@ func buildFullDecisionPrompt(ctx *TradingContext) string { sb.WriteString(fmt.Sprintf("3. 从%d个候选币种中找交易机会\n", len(ctx.MarketDataMap))) sb.WriteString("4. 开新仓(如果有机会)\n\n") - sb.WriteString("## 📋 规则\n\n") - sb.WriteString(fmt.Sprintf("1. **单币种仓位上限**: 山寨币≤%.0f USDT | BTC/ETH≤%.0f USDT\n", ctx.Account.TotalEquity*1.5, ctx.Account.TotalEquity*10)) - sb.WriteString("2. **杠杆**: 山寨币=20倍 | BTC/ETH=50倍\n") - sb.WriteString("3. **保证金上限**: 总使用率≤90%%\n") - sb.WriteString("4. **风险回报比**: ≥1:2\n\n") + sb.WriteString("## 📋 规则 - **重要:集中资金,精选标的**\n\n") + sb.WriteString("### 🎯 仓位管理(核心规则)\n") + sb.WriteString("1. **最大持仓数量**: 同时最多持有 **3个币种**(质量 > 数量)\n") + sb.WriteString("2. **单个仓位大小**: \n") + sb.WriteString(fmt.Sprintf(" - 山寨币: %.0f-%.0f USDT(推荐%.0f USDT)\n", + ctx.Account.TotalEquity*0.8, ctx.Account.TotalEquity*1.5, ctx.Account.TotalEquity*1.2)) + sb.WriteString(fmt.Sprintf(" - BTC/ETH: %.0f-%.0f USDT(推荐%.0f USDT)\n", + ctx.Account.TotalEquity*3, ctx.Account.TotalEquity*10, ctx.Account.TotalEquity*5)) + sb.WriteString("3. **杠杆**: 山寨币=20倍 | BTC/ETH=50倍\n") + sb.WriteString("4. **保证金上限**: 总使用率≤90%%\n") + sb.WriteString("5. **风险回报比**: ≥1:2\n\n") + sb.WriteString("### ⚠️ 仓位策略\n") + sb.WriteString("- **集中火力**: 宁可持有1-2个大仓位,也不要持有5-6个小仓位\n") + sb.WriteString("- **严格筛选**: 只做最有把握的机会,不确定的机会宁可不做\n") + sb.WriteString("- **快速止损**: 亏损超过2%%立即止损,不要让小亏变大亏\n") + sb.WriteString("- **及时止盈**: 盈利达到目标立即止盈,落袋为安\n\n") sb.WriteString("### 📤 输出格式\n\n") sb.WriteString("**重要:严格按照JSON格式输出,所有字符串值必须用双引号包裹!**\n\n") sb.WriteString("先输出思维链分析(纯文本),然后输出JSON数组:\n\n") sb.WriteString("**思维链分析**:\n") - sb.WriteString("1. **历史经验反思**(如有历史数据): 回顾表现,总结教训\n") + sb.WriteString("1. **历史经验反思**(如有历史数据): 回顾表现,总结教训,是否仓位太分散?\n") sb.WriteString("2. **市场分析**: 分析BTC趋势和当前持仓\n") - sb.WriteString("3. **机会识别**: 从候选币种中找交易机会\n") - sb.WriteString("4. **风险控制**: 检查账户保证金和仓位限制\n") - sb.WriteString("5. **最终决策摘要**: 列出所有决策\n\n") + sb.WriteString("3. **仓位检查**: 当前持仓数量是否>3个?如果是,平掉表现差的,集中资金\n") + sb.WriteString("4. **机会识别**: 从候选币种中找1-2个最好的机会(不是3-5个)\n") + sb.WriteString("5. **仓位大小**: 确保单个仓位足够大(山寨币1200+ USDT,BTC 5000+ USDT)\n") + sb.WriteString("6. **风险控制**: 检查账户保证金和仓位限制\n") + sb.WriteString("7. **最终决策摘要**: 列出所有决策(最多3个币种持仓)\n\n") sb.WriteString("---\n\n") sb.WriteString("**JSON决策数组** (不要加```标记,所有字符串必须用双引号):\n") sb.WriteString("[\n") - sb.WriteString(" {\"symbol\": \"BTCUSDT\", \"action\": \"open_long\", \"leverage\": 50, \"position_size_usd\": 15000, \"stop_loss\": 92000, \"take_profit\": 98000, \"reasoning\": \"突破做多\"},\n") - sb.WriteString(" {\"symbol\": \"ETHUSDT\", \"action\": \"hold\", \"reasoning\": \"持续观察\"}\n") + sb.WriteString(fmt.Sprintf(" {\"symbol\": \"BTCUSDT\", \"action\": \"open_long\", \"leverage\": 50, \"position_size_usd\": %.0f, \"stop_loss\": 92000, \"take_profit\": 98000, \"reasoning\": \"强势突破,集中资金\"},\n", ctx.Account.TotalEquity*5)) + sb.WriteString(fmt.Sprintf(" {\"symbol\": \"SOLUSDT\", \"action\": \"open_long\", \"leverage\": 20, \"position_size_usd\": %.0f, \"stop_loss\": 180, \"take_profit\": 200, \"reasoning\": \"技术面强势\"}\n", ctx.Account.TotalEquity*1.2)) sb.WriteString("]\n\n") sb.WriteString("**action类型**: open_long | open_short | close_long | close_short | hold | wait\n") sb.WriteString("**开仓必填**: leverage, position_size_usd, stop_loss, take_profit\n") sb.WriteString("**注意**: reasoning字段必须用双引号包裹!例如:\"reasoning\": \"这里是理由\"\n\n") - sb.WriteString("### 📝 完整示例\n\n") + sb.WriteString("### 📝 完整示例(集中资金策略)\n\n") - // 简化示例仓位(使用新的仓位上限) - btcSize := ctx.Account.TotalEquity * 8 // BTC示例:8倍净值(不超过10倍上限) + // 示例仓位:集中资金策略 + btcSize := ctx.Account.TotalEquity * 5 // BTC:5倍净值(推荐值) sb.WriteString("【历史经验反思】\n") - sb.WriteString("回顾最近10笔交易:胜率40%,盈亏比0.8:1,表现欠佳。\n") - sb.WriteString("SOLUSDT做多3次全部止损,该币种波动大,暂时避开。\n") - sb.WriteString("BTCUSDT做多2次,1胜1负,可继续关注。\n\n") + sb.WriteString("回顾最近10笔交易:仓位太分散,同时持有5个币种但单个仓位太小,赚不到钱。\n") + sb.WriteString("SOLUSDT做多3次,2次小盈1次止损,净盈利很少。决策:应该用更大仓位做确定性高的机会。\n") + sb.WriteString("BTCUSDT做多2次,1胜1负,但因为仓位太小,盈利不明显。\n") + sb.WriteString("**改进策略**: 集中资金在1-2个最有把握的币种,加大仓位。\n\n") sb.WriteString("【市场分析】\n") - sb.WriteString("BTC突破上涨,MACD金叉,趋势向上。\n") - sb.WriteString("当前持仓:ETHUSDT多头盈利+2.3%,继续持有。\n\n") - sb.WriteString("【最终决策】持有ETHUSDT,开多BTCUSDT。\n\n") + sb.WriteString("BTC突破95000,MACD金叉,RSI 65,趋势强势。\n") + sb.WriteString("当前持有ETHUSDT(小仓位+0.8%)、SOLUSDT(小仓位-0.3%)、LINKUSDT(小仓位+0.2%)→ 太分散!\n") + sb.WriteString("决定:平掉所有小仓位,集中资金做BTC大仓位。\n\n") + sb.WriteString("【最终决策】平掉3个小仓位,集中5000 USDT做BTC多头(仓位是之前的3倍+)。\n\n") sb.WriteString("---\n\n") sb.WriteString("[\n") - sb.WriteString(" {\"symbol\": \"ETHUSDT\", \"action\": \"hold\", \"reasoning\": \"盈利良好,趋势延续\"},\n") - sb.WriteString(fmt.Sprintf(" {\"symbol\": \"BTCUSDT\", \"action\": \"open_long\", \"leverage\": 50, \"position_size_usd\": %.0f, \"stop_loss\": 92000, \"take_profit\": 98000, \"reasoning\": \"突破确认,历史表现佳\"}\n", btcSize)) + sb.WriteString(" {\"symbol\": \"ETHUSDT\", \"action\": \"close_long\", \"reasoning\": \"小仓位盈利太少,释放资金\"},\n") + sb.WriteString(" {\"symbol\": \"SOLUSDT\", \"action\": \"close_long\", \"reasoning\": \"小亏损,释放资金\"},\n") + sb.WriteString(" {\"symbol\": \"LINKUSDT\", \"action\": \"close_long\", \"reasoning\": \"小仓位盈利太少,释放资金\"},\n") + sb.WriteString(fmt.Sprintf(" {\"symbol\": \"BTCUSDT\", \"action\": \"open_long\", \"leverage\": 50, \"position_size_usd\": %.0f, \"stop_loss\": 92000, \"take_profit\": 98000, \"reasoning\": \"强势突破,集中资金做大仓位\"}\n", btcSize)) sb.WriteString("]\n\n") + sb.WriteString("**说明**: 这样只持有1个BTC大仓位,盈利空间是之前的3倍+,止损也更清晰。\n\n") sb.WriteString("现在请开始分析并给出你的决策!\n")