Commit Graph

5 Commits

Author SHA1 Message Date
ZhouYongyou
dcfc997b59 feat(prompts): add strict ASCII-only format guidelines to prevent fullwidth chars
🎯 Problem Prevention:
After analyzing the fullwidth character bug (2025-11-04 22:30), we discovered
that prompt changes can trigger AI to output fullwidth JSON characters.

 Solution: Explicit format constraints

Added "⚠️ 格式硬规范" sections to both prompts:

**adaptive.txt** (+23 lines):
- 仅输出 ASCII 字符(半角括号、英文标点)
- 禁止 Markdown 围栏(```json)
- 思维链格式规范(cooldown/trend/confidence/Key insight)
- 单一数组输出(避免嵌套)

**default.txt** (+20 lines):
- 仅输出 ASCII 字符(禁止全角标点)
- 禁止 Markdown 包裹
- 唯一思维链格式(THINK: ...)
- 严格数组格式

📊 Expected Impact:
- Reduce fullwidth character occurrence: 5-10% → <1%
- Clearer AI output format expectations
- Prevent future JSON parsing failures

🔗 Related:
- Bug timeline: /Users/sotadic/Documents/GitHub/fullwidth-bug-timeline-analysis.md
- Root cause: Prompt changes → increased Chinese context → fullwidth punctuation
2025-11-05 00:45:41 +08:00
ZhouYongyou
8bf6c2e1e2 fix: add JSON validation to prevent range values and thousand separators
修復 LLM 返回範圍值導致 JSON 解析失敗的問題

## 問題
LLM 有時返回價格範圍 [98,000 ~ 102,000] 而不是單一數值,
導致 JSON 解析失敗:invalid character '0' after array element

## 修復內容

### 1. Prompts 更新(3 個文件)
- prompts/default.txt: 添加數字格式要求(中文)
- prompts/adaptive.txt: 添加數字格式要求(中文)
- prompts/nof1.txt: 添加數字格式要求(英文)

明確禁止:
-  範圍符號 ~
-  千位分隔符 98,000
-  文字描述

### 2. JSON 驗證邏輯(decision/engine.go)
新增函數:
- validateJSONFormat(): 檢測範圍、千位分隔符等錯誤
- min(): 輔助函數

檢測內容:
1. 必須是對象數組 [{...}]
2. 不可包含範圍符號 ~
3. 不可包含千位分隔符 98,000

## 測試
✓ go build ./...  編譯成功
✓ go fmt ./...    格式正確

修改統計:+132 行(46 行代碼 + 86 行 prompts)
2025-11-04 21:18:27 +08:00
ZhouYongyou
df2d6533de fix: 修復5個關鍵交易bug(保證金計算、部分平倉統計、止損止盈分離、雙向持倉)
## 修復內容

### 1. 保證金計算錯誤(Critical)
- 修正提示詞中的保證金公式(adaptive.txt, nof1.txt, default.txt)
- 新增代碼級保證金驗證(auto_trader.go)
- 防止開倉時保證金不足錯誤(code=-2019)

### 2. 部分平倉統計錯誤(Medium)
- 修改統計邏輯:多次 partial_close 聚合為一筆交易
- 新增追蹤字段:remainingQuantity, accumulatedPnL
- 只在完全平倉時計入 TotalTrades++

### 3. 前端配置覆蓋問題(Medium)
- 修正 TraderConfigModal.tsx 條件判斷
- 防止空字符串覆蓋用戶選擇的提示詞

### 4/5. 動態止損/止盈刪除配對訂單(Critical)
- 新增接口:CancelStopLossOrders, CancelTakeProfitOrders
- 分離訂單取消邏輯(Binance, Hyperliquid, Aster)
- 調整止損時不刪除止盈,反之亦然

### 7. 雙向持倉模式初始化(Critical)
- 新增 setDualSidePosition() 函數
- 在 NewFuturesTrader() 中初始化 Hedge Mode
- 防止 code=-4061 錯誤(PositionSide 參數錯誤)

## 影響範圍
- 修改文件:10個
- 新增代碼:+480行
- 刪除代碼:-71行

## 測試狀態
-  編譯通過(go build ./...)
-  語法檢查通過
- ⚠️ 需要在測試環境運行驗證實際交易效果
2025-11-04 18:36:39 +08:00
ZhouYongyou
b3b68b2b62 refactor(prompts): unify action schema & optimize trading discipline
## Core Changes

### 1. adaptive.txt - Adopt v5.5.6.1 strict strategy
- Migrate from dual-strategy system to unified adaptive approach
- Maintain strict confidence threshold ≥85 (anti-overtrading)
- Remove complex market state detection, focus on signal quality
- Explicitly disable partial_close (full exit only)
- -160 lines (removed redundant strategy logic)

### 2. nof1.txt - Fix contradictions & align standards
-  Fix: Remove "NO partial exits" contradiction (now explicitly supported)
-  Unify: Change confidence threshold from 60 → 75
-  Unify: Change risk-reward ratio from 2:1 → 3:1
- Add confidence level guidance (75-85: good, 85-100: high)
- +85 lines (enhanced risk management framework)

### 3. default.txt - Add standardized output format
- Add structured thinking summary format
- Add comprehensive JSON schema documentation
- Add required fields rules for all action types
- +36 lines (improved contract clarity)

## Action Schema Migration

All prompts now use unified action naming:
-  open_long / open_short (was: buy_to_enter / sell_to_enter)
-  close_long / close_short (was: close)
-  update_stop_loss / update_take_profit (new)
-  partial_close (new, nof1 only)
-  hold / wait (unchanged)

## Confidence Scale Migration

-  Changed from 0-1 float to 0-100 integer across all prompts
-  Opening threshold: adaptive=85, nof1=75, default=75
-  Prevents overtrading through strict quality control

## Risk-Reward Standardization

-  Minimum RR ratio: 1:3 across all prompts
-  Replaces previous 1:2 requirement in nof1.txt

## Breaking Changes

- Backend must support new action names
- Confidence field now expects integer 0-100 (not float 0-1)
- partial_close action available in nof1.txt only

## Prompt Positioning

- **adaptive.txt**: Strict strategy (conf≥85, RR≥1:3, no partial exits)
- **nof1.txt**: English framework (conf≥75, RR≥1:3, supports partial_close)
- **default.txt**: Balanced CN strategy (conf≥75, RR≥1:3)

Related: feature/partial-close-dynamic-tpsl
2025-11-03 14:52:31 +08:00
SkywalkerJi
4250c11ddf Supports custom system prompts and custom models. 2025-11-01 19:45:54 +08:00