Files
nofx/docs
tinkle-community 7e96c5d0f2 Ai grid (#1344)
* feat: add AI grid trading and market regime classification

- Add GridTrader interface with PlaceLimitOrder, CancelOrder, GetOrderBook
- Implement GridTrader for all exchanges (Binance, Bybit, OKX, Bitget, Hyperliquid, Aster, Lighter)
- Add grid engine with ATR-based boundary calculation and fund distribution
- Add market regime classification documents (Chinese/English)
- Add GridConfigEditor component for frontend configuration

* fix: implement GetOpenOrders for Lighter exchange

* debug: add logging for Lighter GetActiveOrders API call

* fix: correct Lighter API response parsing for GetOpenOrders

- Changed response field from 'data' to 'orders' to match Lighter API
- Updated OrderResponse struct to match Lighter's actual field names
- Fixed field types: price/quantity as strings, is_ask for side

* feat: implement GetOpenOrders for Aster, OKX, Bitget exchanges

- Aster: uses /fapi/v3/openOrders endpoint
- OKX: uses /api/v5/trade/orders-pending and orders-algo-pending
- Bitget: uses /api/v2/mix/order/orders-pending and orders-plan-pending

* fix: address code review issues for GetOpenOrders

- Add error logging for OKX/Bitget API failures (was silently swallowed)
- Fix Lighter position side logic to handle reduce-only orders
- Change verbose debug logs from Infof to Debugf level

* fix: provide FromAccountIndex and ApiKeyIndex for Lighter nonce auto-fetch

Root cause: SDK requires these fields to fetch nonce from API, otherwise nonce gets cached/stuck

* fix: use auth query parameter instead of Authorization header for Lighter API

* test: add Lighter API authentication tests and diagnostic tools

* fix(grid): add leverage setting before order placement

CRITICAL BUG FIX:
- Call SetLeverage() in GridTraderAdapter.PlaceLimitOrder()
- Set leverage during grid initialization
- Log leverage setting results

* fix(grid): prevent CancelOrder from canceling all orders

CRITICAL BUG FIX:
- CancelOrder no longer calls CancelAllOrders
- Try exchange-specific CancelOrder if available
- Return error if individual cancellation not supported

* fix(grid): add total position value limit check

CRITICAL: Prevent excessive position accumulation
- New checkTotalPositionLimit() function
- Checks current + pending + new order value
- Rejects orders that would exceed TotalInvestment x Leverage
- Logs clear error messages when limit exceeded

* feat(grid): implement stop loss execution

CRITICAL: Add code-level stop loss protection
- New checkAndExecuteStopLoss() function
- Checks each filled level against StopLossPct
- Automatically closes positions exceeding stop loss
- Called during every grid state sync

* feat(grid): add breakout detection and auto-pause

CRITICAL: Detect price breakout from grid range
- New checkBreakout() function to detect upper/lower breakouts
- Auto-pause grid on significant breakout (>2%)
- Cancel all orders when breakout detected
- Prevent continued losses in trending market
- Minor breakouts (1-2%) logged for AI consideration

* feat(grid): enforce max drawdown limit with emergency exit

CRITICAL: Add drawdown protection
- New checkMaxDrawdown() function tracks peak equity
- emergencyExit() closes all positions and cancels orders
- Auto-pause grid when MaxDrawdownPct exceeded
- Protect capital from excessive losses

* feat(grid): enforce daily loss limit

- Add checkDailyLossLimit() function to check if daily loss exceeds limit
- Track daily PnL with auto-reset at midnight
- Pause grid when DailyLossLimitPct exceeded
- Add updateDailyPnL() helper for realized PnL tracking
- Prevent excessive single-day losses

* fix(grid): update daily PnL when stop loss is executed

The updateDailyPnL() function was added but never called, leaving
DailyPnL always at 0 and preventing daily loss limit checks from
triggering.

This fix updates DailyPnL and TotalProfit directly in checkAndExecuteStopLoss()
when a stop loss is executed. We update directly rather than calling
updateDailyPnL() because the mutex is already held in that function.

* feat(grid): add automatic grid adjustment

- New checkGridSkew() detects imbalanced grid
- autoAdjustGrid() reinitializes around current price
- Prevents grid from becoming ineffective after drift
- Triggers when one side is 3x more filled than other

* fix(grid): recalculate bounds in autoAdjustGrid before reinitializing levels

Critical fix for grid auto-adjustment:
- Recalculate grid bounds (UpperPrice, LowerPrice, GridSpacing) centered
  on current price before reinitializing grid levels
- Preserve filled positions during adjustment by saving and restoring
  them to the closest new level after reinitialization
- Hold mutex lock for the entire adjustment operation to ensure atomicity
- Add locked variants of calculateDefaultBounds, calculateATRBounds, and
  initializeGridLevels to use during adjustment

Without this fix, autoAdjustGrid was using old boundaries when creating
new grid levels, defeating the purpose of auto-adjustment when price
moved significantly.

* fix(grid): improve order state sync logic

- Don't assume missing orders are filled
- Compare position size to determine fill vs cancel
- Properly reset cancelled orders to empty state
- More accurate grid state tracking

* fix(grid): use actual PositionSize sum instead of count in syncGridState heuristic

The position-based heuristic was using `float64(previousFilledCount) * level.OrderQuantity`
which incorrectly assumed uniform order quantities. Since the grid uses weighted distribution
(gaussian, pyramid, uniform) where orders have different quantities, this could lead to
incorrect fill detection.

Now sums the actual PositionSize from filled levels for accurate comparison.
Also adds warning log when GetPositions() fails.

* docs: add grid market regime detection design

Design for enhanced market state recognition with:
- Multi-dimensional indicators (ATR, Bollinger, EMA, MACD, RSI)
- Multi-period box indicators (72/240/500 1h candles)
- 4-level ranging classification
- Breakout detection and handling
- Frontend risk control panel

* docs: add grid market regime implementation plan

20 tasks covering:
- Donchian channel calculation
- Box data types and API
- Regime classification (4 levels)
- Breakout detection and handling
- False breakout recovery
- Frontend risk panel
- AI prompt updates

* feat(market): add Donchian channel calculation

Add calculateDonchian function to compute highest high and lowest low
over a specified period. This is the foundation for box (range) detection
in the multi-period box indicator system for grid trading.

* fix(market): handle invalid period in calculateDonchian

* feat(market): add BoxData and RegimeLevel types

* feat(market): add GetBoxData for multi-period box calculation

Adds calculateBoxData internal function and GetBoxData public API that
fetches 1h klines and computes three Donchian box levels (short/mid/long).
This will be used by the grid trading system to detect market regime.

* feat(store): add box and regime fields to grid models

* feat(trader): add regime classification and breakout detection

Implements Tasks 6-9 for grid market regime awareness:
- Task 6: classifyRegimeLevel with Bollinger/ATR thresholds
- Task 7: detectBoxBreakout for multi-period box breakouts
- Task 8: confirmBreakout with 3-candle confirmation logic
- Task 9: getBreakoutAction mapping breakout levels to actions

* feat(trader): integrate box breakout detection into grid cycle

- Task 10: Add checkBoxBreakout with 3-candle confirmation
- Task 11: Add checkFalseBreakoutRecovery for 50% position recovery
- Task 12: Add box/breakout/regime fields to GridState

* feat: add grid risk panel with API endpoint

- Task 13: Add GridRiskInfo type to frontend
- Task 14: Add /traders/:id/grid-risk API endpoint
- Task 15: Add GetGridRiskInfo method to AutoTrader
- Task 16: Create GridRiskPanel component with i18n

* feat(kernel): add box indicators to AI prompt

- Add BoxData field to GridContext
- Add box indicator table to both zh/en prompts
- Show breakout/warning alerts based on price position

* feat(web): integrate GridRiskPanel into TraderDashboardPage

* feat(lighter): improve API key validation and market caching

- Add API key validation status tracking
- Add market list caching to reduce API calls
- Improve logging (debug vs info levels)
- Add comprehensive integration tests
- Update trader manager and store for lighter support

* fix: remove hardcoded test wallet address

* fix(grid): improve GridRiskPanel layout and fix liquidation data

- Make panel collapsible with summary badges when collapsed
- Use compact 2-column grid layout for detailed info
- Fix auth token key (token -> auth_token)
- Only calculate liquidation distance when position exists

* fix(grid): add isRunning checks to prevent trades after Stop() is called
2026-01-19 12:07:14 +08:00
..
2025-12-21 01:36:16 +08:00
2025-12-21 01:36:16 +08:00
2025-12-21 01:36:16 +08:00
2025-12-21 02:40:17 +08:00
2025-12-21 01:36:16 +08:00
2026-01-19 12:07:14 +08:00
2025-11-01 15:05:24 -04:00
2025-12-21 01:36:16 +08:00
2025-12-21 01:36:16 +08:00

📚 NOFX Documentation Center / 文档中心

Welcome to the NOFX documentation! This page helps you find the right documentation quickly.

欢迎来到 NOFX 文档中心!本页面帮助您快速找到所需文档。


🚀 Getting Started / 快速开始

New to NOFX? Start here!

Document Description 描述
Main README Project overview, features, quick start 项目概述、功能、快速入门
Getting Started Index (EN) All deployment options 所有部署选项
Getting Started Index (中文) 所有部署选项 All deployment options
Docker Deployment (EN) Deploy with Docker (recommended) Docker 部署(推荐)
Docker Deployment (中文) Docker 部署指南(中文) Docker deployment guide
Custom API (EN) Connect custom AI API providers 连接自定义 AI API
Custom API (中文) 连接自定义 AI API 提供商 Custom AI provider guide

Quick Links:


📘 User Guides / 使用指南

Learn how to use NOFX effectively

Document Description 描述
User Guides Index (EN) All usage guides and tips 所有使用指南和技巧
User Guides Index (中文) 所有使用指南和技巧 All usage guides and tips
FAQ (English) Frequently asked questions 常见问题解答
FAQ (中文) 常见问题解答 Frequently asked questions
Troubleshooting (coming soon) Common issues and solutions 故障排查
Configuration Guide (coming soon) Advanced configuration options 高级配置选项
Trading Strategies (coming soon) AI trading strategy examples AI 交易策略示例

👥 Community & Contributing / 社区与贡献

Join the community and contribute!

Document Description 描述
Code of Conduct Community guidelines 社区行为准则
Security Policy Report security vulnerabilities 报告安全漏洞
Bounty Guide How to post bounty tasks 如何发布悬赏任务
Hyperliquid Bounty Hyperliquid integration bounty Hyperliquid 集成悬赏
Aster Bounty Aster DEX integration bounty Aster DEX 集成悬赏

Get Involved:


🌍 International / 国际化文档

Documentation in other languages

Language Main README Status
🇨🇳 Chinese (中文) README.md Complete
🇷🇺 Russian (Русский) README.md Complete
🇺🇦 Ukrainian (Українська) README.md Complete
🇬🇧 English README.md Complete

🏗️ Architecture & Development / 架构与开发

For developers who want to understand the internals

Document Description 描述
Architecture Overview (EN) System architecture, modules, and design 系统架构、模块和设计
Architecture Overview (中文) 系统架构、模块和设计 System architecture overview
API Reference (coming soon) HTTP API documentation HTTP API 文档
Database Schema (coming soon) SQLite database structure SQLite 数据库结构
Testing Guide (coming soon) How to write tests 如何编写测试

🗺️ Roadmap / 路线图

NOFX's strategic development plan and market expansion

Document Description 描述
Roadmap (EN) Short-term and long-term roadmap, feature timeline 短期和长期路线图、功能时间表
Roadmap (中文) 短期和长期路线图、功能时间表 Strategic development plan

Roadmap Highlights:

  • 📈 Short-term (Q2-Q3 2025): Advanced risk management, multi-AI ensemble, new exchange integrations
  • 🚀 Long-term (2026): Universal market expansion (stocks, futures, options, forex), reinforcement learning, enterprise features

Document Description 描述
License (MIT) Open source license 开源许可证
Changelog (EN) Version history and updates 版本历史和更新
Changelog (中文) 版本历史和更新 Version history and updates
Security Policy Vulnerability disclosure 漏洞披露政策
Code of Conduct Community standards 社区标准

🔍 Quick Navigation / 快速导航

Find what you need fast:

I want to...

I'm looking for...


📚 Documentation Status

Category Status Last Updated
Getting Started Complete 2025-11-01
User Guides Complete 2025-11-01
Community Complete 2025-11-01
Architecture Complete 2025-11-01
Roadmap Complete 2025-11-01
API Reference 📋 Planned -

Legend:

  • Complete - Documentation is ready
  • 🚧 In Progress - Being written
  • 📋 Planned - On the roadmap
  • ⚠️ Outdated - Needs update

🆘 Need Help?

Can't find what you're looking for?

  1. Search GitHub Issues - Someone might have asked already
  2. Join Telegram - NOFX Developer Community
  3. Ask on Twitter - Mention @nofx_official
  4. Create an Issue - New Issue

🤝 Contributing to Documentation

Found an error or want to improve the docs?

  1. Small fixes - Click "Edit" on GitHub and submit PR
  2. New documentation - Create an issue first to discuss
  3. Translations - See Contributing Guide

Documentation Contributors:

  • All documentation follows Markdown Guide
  • Use clear, concise language
  • Include code examples where helpful
  • Add screenshots for UI-related docs

Last Updated: 2025-11-01 Maintained by: NOFX Community