mirror of
https://github.com/NoFxAiOS/nofx.git
synced 2026-07-12 15:26:55 +08:00
@@ -97,7 +97,7 @@ func GetFullDecision(ctx *Context) (*FullDecision, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 2. 构建 System Prompt(固定规则)和 User Prompt(动态数据)
|
// 2. 构建 System Prompt(固定规则)和 User Prompt(动态数据)
|
||||||
systemPrompt := buildSystemPrompt(ctx.Account.TotalEquity)
|
systemPrompt := buildSystemPrompt(ctx.Account.TotalEquity, ctx.BTCETHLeverage, ctx.AltcoinLeverage)
|
||||||
userPrompt := buildUserPrompt(ctx)
|
userPrompt := buildUserPrompt(ctx)
|
||||||
|
|
||||||
// 3. 调用AI API(使用 system + user prompt)
|
// 3. 调用AI API(使用 system + user prompt)
|
||||||
@@ -200,7 +200,7 @@ func calculateMaxCandidates(ctx *Context) int {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// buildSystemPrompt 构建 System Prompt(固定规则,可缓存)
|
// buildSystemPrompt 构建 System Prompt(固定规则,可缓存)
|
||||||
func buildSystemPrompt(accountEquity float64) string {
|
func buildSystemPrompt(accountEquity float64, btcEthLeverage, altcoinLeverage int) string {
|
||||||
var sb strings.Builder
|
var sb strings.Builder
|
||||||
|
|
||||||
// === 核心使命 ===
|
// === 核心使命 ===
|
||||||
@@ -222,8 +222,8 @@ func buildSystemPrompt(accountEquity float64) string {
|
|||||||
sb.WriteString("# ⚖️ 硬约束(风险控制)\n\n")
|
sb.WriteString("# ⚖️ 硬约束(风险控制)\n\n")
|
||||||
sb.WriteString("1. **风险回报比**: 必须 ≥ 1:3(冒1%风险,赚3%+收益)\n")
|
sb.WriteString("1. **风险回报比**: 必须 ≥ 1:3(冒1%风险,赚3%+收益)\n")
|
||||||
sb.WriteString("2. **最多持仓**: 3个币种(质量>数量)\n")
|
sb.WriteString("2. **最多持仓**: 3个币种(质量>数量)\n")
|
||||||
sb.WriteString(fmt.Sprintf("3. **单币仓位**: 山寨%.0f-%.0f U(20x杠杆) | BTC/ETH %.0f-%.0f U(50x杠杆)\n",
|
sb.WriteString(fmt.Sprintf("3. **单币仓位**: 山寨%.0f-%.0f U(%dx杠杆) | BTC/ETH %.0f-%.0f U(%dx杠杆)\n",
|
||||||
accountEquity*0.8, accountEquity*1.5, accountEquity*5, accountEquity*10))
|
accountEquity*0.8, accountEquity*1.5, altcoinLeverage, accountEquity*5, accountEquity*10, btcEthLeverage))
|
||||||
sb.WriteString("4. **保证金**: 总使用率 ≤ 90%\n\n")
|
sb.WriteString("4. **保证金**: 总使用率 ≤ 90%\n\n")
|
||||||
|
|
||||||
// === 做空激励 ===
|
// === 做空激励 ===
|
||||||
@@ -296,7 +296,7 @@ func buildSystemPrompt(accountEquity float64) string {
|
|||||||
sb.WriteString("简洁分析你的思考过程\n\n")
|
sb.WriteString("简洁分析你的思考过程\n\n")
|
||||||
sb.WriteString("**第二步: JSON决策数组**\n\n")
|
sb.WriteString("**第二步: JSON决策数组**\n\n")
|
||||||
sb.WriteString("```json\n[\n")
|
sb.WriteString("```json\n[\n")
|
||||||
sb.WriteString(fmt.Sprintf(" {\"symbol\": \"BTCUSDT\", \"action\": \"open_short\", \"leverage\": 50, \"position_size_usd\": %.0f, \"stop_loss\": 97000, \"take_profit\": 91000, \"confidence\": 85, \"risk_usd\": 300, \"reasoning\": \"下跌趋势+MACD死叉\"},\n", accountEquity*5))
|
sb.WriteString(fmt.Sprintf(" {\"symbol\": \"BTCUSDT\", \"action\": \"open_short\", \"leverage\": %d, \"position_size_usd\": %.0f, \"stop_loss\": 97000, \"take_profit\": 91000, \"confidence\": 85, \"risk_usd\": 300, \"reasoning\": \"下跌趋势+MACD死叉\"},\n", btcEthLeverage, accountEquity*5))
|
||||||
sb.WriteString(" {\"symbol\": \"ETHUSDT\", \"action\": \"close_long\", \"reasoning\": \"止盈离场\"}\n")
|
sb.WriteString(" {\"symbol\": \"ETHUSDT\", \"action\": \"close_long\", \"reasoning\": \"止盈离场\"}\n")
|
||||||
sb.WriteString("]\n```\n\n")
|
sb.WriteString("]\n```\n\n")
|
||||||
sb.WriteString("**字段说明**:\n")
|
sb.WriteString("**字段说明**:\n")
|
||||||
|
|||||||
@@ -80,8 +80,10 @@ export function EquityChart({ traderId }: EquityChartProps) {
|
|||||||
? history.slice(-MAX_DISPLAY_POINTS)
|
? history.slice(-MAX_DISPLAY_POINTS)
|
||||||
: history;
|
: history;
|
||||||
|
|
||||||
// 计算初始余额(使用第一个数据点)
|
// 计算初始余额(使用第一个数据点,如果无数据则从account获取,最后才用默认值)
|
||||||
const initialBalance = history[0]?.total_equity || 1000;
|
const initialBalance = history[0]?.total_equity
|
||||||
|
|| account?.total_equity
|
||||||
|
|| 100; // 默认值改为100,与常见配置一致
|
||||||
|
|
||||||
// 转换数据格式
|
// 转换数据格式
|
||||||
const chartData = displayHistory.map((point) => {
|
const chartData = displayHistory.map((point) => {
|
||||||
|
|||||||
25
常见问题.md
Normal file
25
常见问题.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# 常见问题
|
||||||
|
|
||||||
|
## 币安持仓模式错误 (code=-4061)
|
||||||
|
|
||||||
|
**错误信息**:`Order's position side does not match user's setting`
|
||||||
|
|
||||||
|
**原因**:系统需要使用双向持仓模式,但您的币安账户设置为单向持仓。
|
||||||
|
|
||||||
|
### 解决方法
|
||||||
|
|
||||||
|
1. 登录 [币安合约交易平台](https://www.binance.com/zh-CN/futures/BTCUSDT)
|
||||||
|
|
||||||
|
2. 点击右上角的 **⚙️ 偏好设置**
|
||||||
|
|
||||||
|
3. 选择 **持仓模式**
|
||||||
|
|
||||||
|
4. 切换为 **双向持仓** (Hedge Mode)
|
||||||
|
|
||||||
|
5. 确认切换
|
||||||
|
|
||||||
|
**注意**:切换前必须先平掉所有持仓。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
更多问题请查看 [GitHub Issues](https://github.com/tinkle-community/nofx/issues)
|
||||||
Reference in New Issue
Block a user