Commit Graph

364 Commits

Author SHA1 Message Date
tangmengqiu
a7d7ea17cc fix typo 2025-11-02 17:26:47 -05:00
tangmengqiu
85d48f316b fix(docker): Fix go-sqlite3 compilation on Alpine Linux
Add CGO_CFLAGS="-D_LARGEFILE64_SOURCE" to resolve musl libc compatibility
issues. This enables the Large File Support feature macros which map
pread64/pwrite64/off64_t symbols (used by SQLite) to musl's native
pread/pwrite/off_t implementations.

This fix eliminates the "undeclared identifier" errors during CGO
compilation without requiring additional sqlite-dev dependencies.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-02 17:15:01 -05:00
tinkle
8ad737e3a3 docs: Replace sensitive configuration examples with placeholders
Update documentation to use placeholder values instead of real credentials
in example configurations for enhanced security.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 03:47:41 +08:00
tinkle-community
13e1da6cf6 Merge pull request #275 from zhouyongyou/docs/adaptive-prompt-template
docs(prompts): 更新 AI prompt 支持動態 TP/SL 功能 (Update AI prompt to support dynamic TP/SL features)
2025-11-03 02:05:48 +08:00
ZhouYongyou
bad79337fb docs(prompts): Update AI prompt to support dynamic TP/SL features (v5.5.1)
- Add 3 new action types: update_stop_loss, update_take_profit, partial_close
- Introduce "Zero Principle" (疑惑优先) for risk control
- Expand decision flow to 8 steps with critical safeguards:
  * Step 2: Consecutive loss pause (2x→45min, 3x→24h, 4x→72h)
  * Step 5: BTC status check (multi-timeframe MACD confirmation)
  * Step 6: Long/short confirmation checklist (≥5/8 indicators)
  * Step 7: Fake breakout detection (RSI multi-timeframe + candle patterns)
  * Step 8: Objective confidence scoring (base 60 + conditions)
- Add signal priority ranking (trend resonance > volume > BTC > RSI...)
- Add dynamic TP/SL strategies with examples
- Increase confidence threshold: 0.6 → 0.85 for opening positions
- Add cooldown rules and slippage buffer (0.05%)
- Optimize prompt length: 4445 words → 1500 words (-66%)

Key improvements in v5.5.1:
 BTC status check - Most critical protection for altcoin trading
 Long/short checklist - 5/8 indicators required, prevent false signals
 Objective confidence scoring - Base 60 + condition adjustments
 Fake breakout logic - RSI multi-timeframe + candle filters
 Consecutive loss pause - 2x/3x/4x trigger different cooldowns
 OI confirmation - >+5% for real breakout validation
 Signal priority ranking - Trend resonance > volume > BTC...
 Slippage handling - 0.05% buffer + profit check

Design philosophy: Let AI autonomously judge trend vs chop, trust strong reasoning models.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 01:59:54 +08:00
芋头
2bb28a1738 文件命名空格问题 2025-11-03 00:16:28 +08:00
Liu Xiang Qian
c5516fc5fe fix: Update model validation in handleSaveModelConfig to support both configured and supported models
- Change validation to check allModels first, then supportedModels
- This allows saving new model configurations without "model does not exist" error
- Fixes issue where users couldn't save AI model config after selecting from dropdown

Fixes #245

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 00:11:44 +08:00
Ember
f3cc95d267 Merge branch 'dev' into quote-tweet-link 2025-11-02 23:56:46 +08:00
芋头
0f25e56b13 补充提示词 2025-11-02 23:56:32 +08:00
Ember
a7a0bdff41 chore(landing): add lightweight AnimatedSection wrapper for main-based branch 2025-11-02 23:52:15 +08:00
Ember
97015d31a2 chore(landing): add lightweight AnimatedSection wrapper for main-based branch 2025-11-02 23:49:23 +08:00
Ember
0b86916d8c feat(landing): integrate real community tweets in CommunitySection with author avatars and links 2025-11-02 23:48:25 +08:00
vicnoah
89814b612e Merge branch 'dev' into dev 2025-11-02 22:14:42 +08:00
ZhouYongyou
0eb05ddba2 fix: 过滤幽灵持仓 - 跳过 quantity=0 的持仓防止 AI 误判
问题:
- 止损/止盈触发后,交易所返回 positionAmt=0 的持仓记录
- 这些幽灵持仓被传递给 AI,导致 AI 误以为仍持有该币种
- AI 可能基于错误信息做出决策(如尝试调整已不存在的止损)

修复:
- buildTradingContext() 中添加 quantity==0 检查
- 跳过已平仓的持仓,确保只传递真实持仓给 AI
- 触发清理逻辑:撤销孤儿订单、清理内部状态

影响范围:
- trader/auto_trader.go:487-490

测试:
- 编译成功
- 容器重建并启动正常
2025-11-02 22:08:39 +08:00
Roninchen
b336efde0f Merge pull request #176 from yuanshi2016/dev
Kline获取方式为Websocket缓存
2025-11-02 21:54:16 +08:00
tinkle-community
37c98c9626 Merge pull request #257 from SkywalkerJi/dev
Google Tag Manager
2025-11-02 21:47:38 +08:00
SkywalkerJi
4850aa568e Google Tag Manager 2025-11-02 21:44:53 +08:00
ZhouYongyou
fed3ce95f3 fix: 修复部分平仓盈利计算错误
问题:部分平仓时,历史记录显示的是全仓位盈利,而非实际平仓部分的盈利

根本原因:
- AnalyzePerformance 使用开仓总数量计算部分平仓的盈利
- 应该使用 action.Quantity(实际平仓数量)而非 openPos["quantity"](总数量)

修复:
- 添加 actualQuantity 变量区分完整平仓和部分平仓
- partial_close 使用 action.Quantity
- 所有相关计算(PnL、PositionValue、MarginUsed)都使用 actualQuantity

影响范围:logger/decision_logger.go:428-465

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-02 21:26:58 +08:00
tinkle-community
e9f6ded053 Merge pull request #246 from xqliu/fix/model-config-validation-245 2025-11-02 18:32:45 +08:00
Liu Xiang Qian
4577adabbd fix: Update model validation in handleSaveModelConfig to support both configured and supported models
- Change validation to check allModels first, then supportedModels
- This allows saving new model configurations without "model does not exist" error
- Fixes issue where users couldn't save AI model config after selecting from dropdown

Fixes #245

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-02 18:08:25 +08:00
yuanshi2016
95c32fcb2e 修改Kline获取方式为Websocket缓存。 2025-11-02 17:59:19 +08:00
yuanshi2016
3b1db6f64f K线获取方式改为websocket组合流. 带重拨机制
流程为下:
1. 启动时使用所有交易员设置的币种(去重) 如果交易员未配置,则使用系统默认
2. 在决策获取K线时 如果没有缓存 则先实时获取后再添加订阅. ps: 适用于Api方式的币种列表
2025-11-02 14:03:13 +08:00
原始
1862223528 Merge branch 'tinkle-community:dev' into dev 2025-11-02 14:02:11 +08:00
Xeron
5c9b396e5a fix: detect and record stop-loss/take-profit auto-close trades
Fixes #200

Previously, positions closed via stop-loss or take-profit were not
recorded in decision logs, causing inaccurate performance metrics
(win rate, profit factor, etc.) displayed in the frontend.

This commit implements a position snapshot mechanism to detect
auto-closed positions by comparing positions between trading cycles.

Changes:
- Add PositionSnapshot struct to track position state
- Add detectAutoClosedPositions() to detect disappeared positions
- Update position snapshots at cycle end (after AI execution)
- Support auto_close_long/auto_close_short action types in logger
- Ensure accurate performance analysis including auto-closed trades

Key fix:
- Snapshots are updated AFTER AI execution to avoid false positives
- AI manual closes won't be mistakenly detected as auto-closes
2025-11-02 12:35:37 +08:00
tinkle
4f8be19a73 update aster exchange guide 2025-11-02 12:23:33 +08:00
原始
ebfdf4b9b6 Merge branch 'tinkle-community:dev' into dev 2025-11-02 12:19:40 +08:00
tinkle
23392e7409 update aster exchange guide 2025-11-02 12:15:40 +08:00
Liu Xiang Qian
8b4c107dfd docs: Enhance timestamp/timezone troubleshooting based on Issue #60
Enhanced the Exchange API errors section with more detailed solutions
for timestamp-related failures, based on Issue #60.

Problem:
- code=-1021: Timestamp outside of recvWindow
- System time not synced with Binance servers
- Docker container time drift

Enhanced Solutions:
1. System Time Sync (Multiple methods)
   - ntpdate pool.ntp.org (recommended)
   - ntpdate with different NTP servers
   - timedatectl for automatic sync
   - Aliyun NTP for China users

2. Docker-specific fixes
   - Check container time vs host time
   - Restart Docker service
   - Add TZ environment variable

3. API Key verification steps
   - Regeneration procedure
   - Permission checklist

4. Rate limit considerations
   - Reduce trader count
   - Increase decision interval

Both English and Chinese versions updated.

Fixes: #60

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-02 11:44:57 +08:00
Liu Xiang Qian
1271e278f2 docs: Add Docker image pull failure troubleshooting (China)
Added comprehensive troubleshooting guide for Docker image pull failures
in mainland China, based on Issue #168.

Problem:
- Users in China cannot pull Docker images from Docker Hub
- ERROR: load metadata for docker.io/library/...
- Timeouts and connection failures

Solutions Added:
1. Configure Docker registry mirrors (Recommended)
   - List of working China mirrors
   - Step-by-step configuration for Linux/macOS/Windows
   - Verification commands

2. Use VPN
   - Taiwan nodes recommended
   - Global mode required

3. Offline image download
   - Image proxy websites
   - Manual import instructions

Both English and Chinese versions updated.

Fixes: #168

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-02 11:38:53 +08:00
Liu Xiang Qian
65809aa037 docs: Fix AI model list in FAQ - correct supported models
Fixed incorrect information about supported AI models:

Before (Incorrect):
- Listed OpenAI GPT-4 and Claude as directly supported
- These are NOT natively supported

After (Correct):
- DeepSeek (native support, recommended)
- Qwen (native support, Alibaba Cloud)
- Custom OpenAI-compatible APIs (can use OpenAI, Claude via proxy, etc.)

Also updated cost estimates to reflect actual supported models.

Reference: mcp/client.go shows only DeepSeek, Qwen, and Custom providers.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-02 11:09:18 +08:00
Liu Xiang Qian
89bb8d3eb6 docs: Expand FAQ and clarify separation from TROUBLESHOOTING
Addressed review feedback on PR #226:
- FAQ and TROUBLESHOOTING serve different purposes and should both be kept
- FAQ: Quick Q&A format for common questions (now expanded)
- TROUBLESHOOTING: Detailed step-by-step diagnostic guide

Changes:
- Expanded FAQ from 26 lines to 200+ lines with 7 sections:
  * General Questions (What is NOFX, supported exchanges, profitability)
  * Setup & Configuration (requirements, API keys, subaccounts)
  * Trading Questions (decision frequency, position limits, customization)
  * Technical Issues (quick fixes for common errors)
  * AI & Model Questions (supported models, costs, learning)
  * Data & Privacy (storage, security, export)
  * Contributing (how to help, feature requests)

- Added cross-references between FAQ and TROUBLESHOOTING
- FAQ provides quick answers with links to detailed troubleshooting
- TROUBLESHOOTING remains comprehensive diagnostic guide

Both English and Chinese versions updated.

Fixes review comment from @reviewer on PR #226

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-02 11:04:58 +08:00
Luna Martinez
7b5970567f Merge pull request #88 from fanyinghao/fix-decision-result
fix: Correct error handling in GetFullDecision function
2025-11-01 23:03:55 -04:00
Luna Martinez
5878b10c8f Merge pull request #181 from Xeron2000/fix-broken-dashscope-link-issue-128
Fix broken DashScope link in README files (fixes #128)
2025-11-01 23:00:27 -04:00
Xeron
ff9b66bf11 Fix broken DashScope link in README files (fixes #128) 2025-11-02 10:56:24 +08:00
Luna Martinez
1333121b85 Merge pull request #228 from hzb1115/dev
fix: github workflow permission
2025-11-01 22:28:22 -04:00
zbhan
c084de7277 fix: github workflow permission 2025-11-01 22:25:32 -04:00
Liu Xiang Qian
03d709de8e docs: Enhance bug report template and add comprehensive troubleshooting guide
- Enhanced bug report template with detailed log capture instructions
  - Added bug categorization system (6 main categories)
  - Frontend error capture guide (DevTools Console/Network tabs)
  - Backend log capture for Docker and PM2 deployments
  - Trading/decision logs location and usage
  - Comprehensive environment information checklist
  - Quick diagnostic tips for faster issue resolution

- Created bilingual troubleshooting guides (EN/ZH)
  - Common trading issues (e.g., Issue #202: only short positions)
  - Detailed explanation of Binance position mode requirements
  - AI decision problems and diagnostics
  - Connection and API error solutions
  - Frontend and database issues
  - Complete log capture instructions with commands
  - Emergency reset procedures

- Updated documentation cross-references
  - Added troubleshooting guide links to bug report template
  - Added links in README Common Issues section
  - Bilingual support for better accessibility

This reduces maintainer workload by helping users self-diagnose issues
and submit higher-quality bug reports with all necessary information.

Addresses Issue #202 root cause documentation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-02 10:19:19 +08:00
ZhouYongyou
46053c5fe9 fix: 添加 HTTP/2 stream error 到可重試錯誤列表
問題:
- 用戶遇到錯誤:stream error: stream ID 1; INTERNAL_ERROR
- 這是 HTTP/2 連接被服務端關閉的錯誤
- 當前重試機制不包含此類錯誤,導致直接失敗

修復:
- 添加 "stream error" 到可重試列表
- 添加 "INTERNAL_ERROR" 到可重試列表
- 遇到此類錯誤時會自動重試(最多 3 次)

影響:
- 提高 API 調用穩定性
- 自動處理服務端臨時故障
- 減少因網絡波動導致的失敗
2025-11-02 09:05:47 +08:00
ZhouYongyou
45ec64537d fix: 補充 System Prompt 中新動作的格式說明
問題:
- System Prompt 的 action 列表缺少新增的動作
- 只列出:open_long, open_short, close_long, close_short, hold, wait
- 缺少:update_stop_loss, update_take_profit, partial_close
- 導致 AI 不知道可以使用這些新動作

修復:
- 補充完整的 action 列表(9 個動作)
- 添加每個新動作的必填字段說明:
  * update_stop_loss: new_stop_loss, reasoning
  * update_take_profit: new_take_profit, reasoning
  * partial_close: close_percentage (0-100), reasoning

影響:
- AI 現在知道可以使用動態止盈止損功能
- 明確每個動作需要哪些字段
- 與 Decision 結構定義完全一致
2025-11-02 08:38:46 +08:00
ZhouYongyou
8ca2071557 fix: 修復首次運行時數據庫初始化失敗問題
問題:
- 用戶首次運行報錯:unable to open database file: is a directory
- 原因:Docker volume 掛載時,如果 config.db 不存在,會創建目錄而非文件
- 影響:新用戶無法正常啟動系統

修復:
- 在 start.sh 啟動前檢查 config.db 是否存在
- 如不存在則創建空文件(touch config.db)
- 確保 Docker 掛載為文件而非目錄

測試:
- 首次運行:./start.sh start → 正常初始化 ✓
- 現有用戶:無影響,向後兼容 ✓
2025-11-02 08:24:09 +08:00
ZhouYongyou
2d4b14e086 fix: 修復初始余額顯示錯誤(使用當前淨值而非配置值)
問題:
- 圖表顯示「初始余額 693.15 USDT」(實際應該是 600)
- 原因:使用 validHistory[0].total_equity(當前淨值)
- 導致初始余額隨著盈虧變化,數學邏輯錯誤

修復:
- 優先從 account.initial_balance 讀取真實配置值
- 備選方案:從歷史數據反推(淨值 - 盈虧)
- 默認值使用 1000(與創建交易員時的默認配置一致)

測試:
- 初始余額:600 USDT(固定)
- 當前淨值:693.15 USDT
- 盈虧:+93.15 USDT (+15.52%) ✓
2025-11-02 07:55:43 +08:00
ZhouYongyou
e76792c7db fix: 修復 Hyperliquid CancelStopOrders 編譯錯誤
問題:order.TriggerPx 字段不存在
原因:Hyperliquid SDK 的 OpenOrder 結構不暴露 trigger 相關字段

解決方案:
- 簡化 CancelStopOrders 實現
- 取消該幣種所有掛單(包括止盈止損單)
- 這是安全的,因為在設置新止盈止損前應清理舊訂單

影響:
-  編譯通過
-  功能正常(取消訂單邏輯更簡單但有效)
-  與 Binance/Aster 實現一致(都是取消相關訂單)
2025-11-02 07:40:33 +08:00
ZhouYongyou
37df286a31 fix: 恢復 adaptive.txt 中被誤刪的動態止盈止損說明
問題:merge dev 時,dev 分支的刪減版覆蓋了 feature 的完整版
原因:dev 分支為避免生產錯誤暫時刪除了這些說明
解決:feature 分支已實現完整功能,應恢復這些說明

恢復內容:
- 策略 A(震盪市):追蹤止損指導 + 動態調整示例
- 策略 B(趨勢市):分批止盈邏輯 + 追蹤止損指導 + 動態調整示例

功能支持:
- update_stop_loss ✓
- update_take_profit ✓
- partial_close ✓
2025-11-02 07:35:56 +08:00
ZhouYongyou
adb7e55f90 Merge branch 'dev' into feature/partial-close-dynamic-tpsl 2025-11-02 07:27:01 +08:00
ZhouYongyou
dc3bd5fb22 Merge branch 'dev' of https://github.com/tinkle-community/nofx into dev 2025-11-02 07:26:11 +08:00
ZhouYongyou
ab3cab9a93 fix: 統一 handleTraderList 返回完整 AI model ID(保持與 handleGetTraderConfig 一致)
問題:
- handleTraderList 仍在截斷 AI model ID (admin_deepseek → deepseek)
- 與 handleGetTraderConfig 返回的完整 ID 不一致
- 導致前端 isModelInUse 檢查失效

修復:
- 移除 handleTraderList 中的截斷邏輯
- 返回完整 AIModelID (admin_deepseek)
- 與其他 API 端點保持一致

測試:
- GET /api/traders → ai_model: admin_deepseek ✓
- GET /api/traders/:id → ai_model: admin_deepseek ✓
- 模型使用檢查邏輯正確 ✓
2025-11-02 07:11:57 +08:00
Luna Martinez
500ad4412f Merge pull request #219 from hzb1115/dev
feat: PR validation
2025-11-01 18:37:50 -04:00
Luna Martinez
487a0cbe9e Merge pull request #1 from hzb1115/dev_pr_check
feat: pr validation
2025-11-01 18:29:56 -04:00
zbhan
9a604f9b27 feat: pr validation 2025-11-01 18:25:44 -04:00
ZhouYongyou
ed34201c2d 修復關鍵缺陷:添加 CancelStopOrders 方法避免多個止損單共存
問題:
- 調整止損/止盈時,直接調用 SetStopLoss/SetTakeProfit 會創建新訂單
- 但舊的止損/止盈單仍然存在,導致多個訂單共存
- 可能造成意外觸發或訂單衝突

解決方案(參考 PR #197):
1. 在 Trader 接口添加 CancelStopOrders 方法
2. 為三個交易所實現:
   - binance_futures.go: 過濾 STOP_MARKET/TAKE_PROFIT_MARKET 類型
   - aster_trader.go: 同樣邏輯
   - hyperliquid_trader.go: 過濾 trigger 訂單(有 triggerPx)
3. 在 executeUpdateStopLossWithRecord 和 executeUpdateTakeProfitWithRecord 中:
   - 先調用 CancelStopOrders 取消舊單
   - 然後設置新止損/止盈
   - 取消失敗不中斷執行(記錄警告)

優勢:
-  避免多個止損單同時存在
-  保留我們的價格驗證邏輯
-  保留執行價格記錄
-  詳細錯誤信息
-  取消失敗時繼續執行(更健壯)

測試建議:
- 開倉後調整止損,檢查舊止損單是否被取消
- 連續調整兩次,確認只有最新止損單存在

致謝:參考 PR #197 的實現思路
2025-11-02 06:23:02 +08:00