* feat(store): prevent deletion of active strategies and update translations (#1461) Co-authored-by: Dean <afei.wuhao@gmail.com> * fix: allow model switching without re-entering wallet key Users with existing wallets could not switch AI models because the "Start Trading" button required a valid private key even when one was already configured. Now the button is enabled when hasExistingWallet is true, and handleSubmit passes an empty key so the backend preserves the existing key. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor: replace window.location with useNavigate for routing in auth components (#1470) Co-authored-by: Dean <afei.wuhao@gmail.com> * feat(trader): implement margin mode handling for order and leverage settings * refactor(trader): update SetMarginMode to avoid legacy endpoint and improve logging * feat(api): enhance strategy handling by integrating claw402 wallet key validation Added validation for the claw402 model's wallet key during strategy test runs. If the selected AI model is claw402, the server now checks for a valid wallet key and returns appropriate error messages if it's missing or if the model fails to load. This ensures better error handling and user feedback when working with AI models. * refactor(api): streamline claw402 wallet key retrieval and error handling Refactored the strategy handling logic to encapsulate claw402 wallet key retrieval in a new method, `resolveStrategyDataWalletKey`. This improves code readability and maintains consistent error handling for missing or invalid wallet keys during strategy test runs. The changes enhance the overall robustness of the AI model integration. * feat(trader): add claw402 wallet key resolution for trader configuration Implemented a new method, `resolveTraderDataWalletKey`, to retrieve the claw402 wallet key based on the selected AI model and user ID. This enhancement allows for better integration of the claw402 model within the trader configuration, ensuring that the correct wallet key is used for trading operations. The `AutoTraderConfig` struct has been updated to include the new `Claw402WalletKey` field, improving the overall handling of wallet keys in the trading process. * feat(claw402): preflight USDC balance before AI calls (#1479) * chore: ignore nofx-server build artifact Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(claw402): preflight USDC balance before AI calls Short-circuit claw402 Call/CallWithRequestFull when the wallet balance can't cover the estimated cost of the call, surfacing ErrInsufficientFunds instead of letting x402 fail mid-flight after the sign step. - wallet: cached balance lookup (30s TTL, per-address mutex) to avoid hammering the Base RPC; separate error-returning and display-only APIs so callers can distinguish zero balance from an unreachable RPC. - claw402: 1.5× safety multiplier on the flat per-call estimate, 4.0× for reasoner models whose chain-of-thought cost can blow past the flat rate. Fail-open on RPC errors — x402 still gates actually-empty wallets, and we prefer availability over extra strictness. - shortAddr redacts the wallet in error strings to avoid leaking the full address into telemetry bundles. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * fix(telemetry): report token usage for SSE streaming paths (#1475) * fix(telemetry): report token usage for SSE streaming paths ParseSSEStream already parsed the usage block from SSE chunks but only printed it, so claw402 streaming calls (and native streaming) never fired TokenUsageCallback. GA4 therefore undercounted AI usage on the streaming path. Return the parsed usage from ParseSSEStream and have both callers fire the callback with their own Provider/Model. * chore: drop leftover debug Printf in ParseSSEStream Telemetry is now wired via TokenUsageCallback, so the Printf is redundant noise in the stream path. * fix(gemini): update default model to gemini-3.1-pro Google discontinued gemini-3-pro-preview on 2026-03-26 and directs all callers to gemini-3.1-pro / gemini-3.1-pro-preview. Users on their own API key were getting errors from the native Gemini endpoint because the provider default pointed at the retired ID. Claw402 was unaffected because its route map already used gemini-3.1-pro. Align both the native provider default and the handler's preset list with gemini-3.1-pro so every code path sends a live model ID. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: extract ResolveClaw402WalletKey to store layer and expand OKX margin mode tests - Move duplicated claw402 wallet resolution logic into store.AIModelStore.ResolveClaw402WalletKey - api/strategy.go and manager/trader_manager.go now delegate to the shared method - Add detailed doc comment on OKX SetMarginMode explaining the local-state-only approach and why the legacy /api/v5/account/set-isolated-mode endpoint is not called - Add 3 new test cases: cross mode leverage, OpenShort tdMode, SetTakeProfit tdMode * fix(auth): prevent SetupPage remount from wiping freshly-set auth token (#1481) After #1470 moved routing into react-router, SetupPage is rendered at two different tree positions (top-level guard + /setup Route). When register success flushSync-sets `user`, the top-level guard stops matching and the Route-level SetupPage mounts as a new instance, re-running its cleanup useEffect and removing the auth_token that handlePostAuthSuccess just wrote. Subsequent requests 401 and bounce the user back to /login. Redirect /setup to /welcome when user is already set so SetupPage is never re-mounted during the auth transition. * fix(wallet): handle JSON-RPC null error field in balance query Some RPC implementations return explicit "error": null on success. json.RawMessage deserializes this as the 4-byte literal "null", so len() > 0 was true, causing every balance query to fail with "rpc error: null". Skip the null literal to avoid false positives. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(readme): add quick demo video to localized READMEs (#1486) * docs(README): add quick demo section with video link and image * docs(README): update demo video link * docs(i18n): add quick demo section with video link and image for multiple languages --------- Co-authored-by: Dean <afei.wuhao@gmail.com> --------- Co-authored-by: deanokk <wuhao@vergex.trade> Co-authored-by: Dean <afei.wuhao@gmail.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: root <root@localhost.localdomain>
9.4 KiB
NOFX
당신만의 AI 트레이딩 어시스턴트.
모든 시장. 모든 모델. API 키 없이 USDC로 결제.
English · 中文 · 日本語 · 한국어 · Русский · Українська · Tiếng Việt
NOFX는 오픈소스 자율형 AI 트레이딩 어시스턴트입니다. 수동으로 모델을 설정하고, API 키를 관리하고, 데이터 소스를 연결해야 하는 기존 AI 도구와 달리 — NOFX의 AI는 시장을 스스로 인식하고, 모델을 스스로 선택하고, 데이터를 스스로 가져옵니다. 인간 개입 제로. 전략만 설정하면 나머지는 AI가 처리합니다.
완전 자율: AI가 어떤 모델을 사용할지, 어떤 시장 데이터를 가져올지, 언제 거래할지를 스스로 결정합니다. 수동 모델 설정 불필요. 여러 서비스의 API 키 관리 불필요. USDC 지갑에 충전하고 실행하기만 하면 됩니다.
차별점: x402 마이크로 결제 내장. API 키 불필요. USDC 지갑에 충전하고 요청마다 결제. 지갑이 곧 신원.
curl -fsSL https://raw.githubusercontent.com/NoFxAiOS/nofx/main/install.sh | bash
http://127.0.0.1:3000 을 열면 완료.
빠른 데모
커버 이미지를 클릭하면 데모 영상을 볼 수 있습니다.
x402 작동 방식
기존 플로우: 계정 등록 → 크레딧 구매 → API 키 받기 → 쿼터 관리 → 키 교체.
x402 플로우:
요청 → 402 (가격 제시) → 지갑이 USDC 서명 → 재시도 → 완료
계정 불필요. API 키 불필요. 선불 크레딧 불필요. 지갑 하나로 모든 모델.
내장 x402 프로바이더
| 프로바이더 | 체인 | 모델 |
|---|---|---|
| Base | GPT-5.4, Claude Opus, DeepSeek, Qwen, Grok, Gemini, Kimi — 15+ 모델 |
기능
| 기능 | 설명 |
|---|---|
| 멀티 AI | DeepSeek, Qwen, GPT, Claude, Gemini, Grok, Kimi, MiniMax — 언제든 전환 |
| 멀티 거래소 | Binance, Bybit, OKX, Bitget, KuCoin, Gate, Hyperliquid, Aster, Lighter |
| 전략 스튜디오 | 비주얼 빌더 — 코인 소스, 지표, 리스크 관리 |
| AI 토론 아레나 | 여러 AI가 거래 토론 (강세 vs 약세 vs 분석가), 투표, 실행 |
| AI 경쟁 | AI가 실시간 경쟁, 리더보드 순위 |
| Telegram 에이전트 | 트레이딩 어시스턴트와 채팅 — 스트리밍, 도구 호출, 메모리 |
| 백테스트 랩 | 과거 시뮬레이션, 자산 곡선 및 성과 지표 |
| 대시보드 | 실시간 포지션, 손익, Chain of Thought AI 결정 로그 |
시장
암호화폐 · 미국 주식 · 외환 · 귀금속
거래소 (CEX)
| 거래소 | 상태 | 등록 (수수료 할인) |
|---|---|---|
| ✅ | 등록 | |
| ✅ | 등록 | |
| ✅ | 등록 | |
| ✅ | 등록 | |
| ✅ | 등록 | |
| ✅ | 등록 |
거래소 (Perp-DEX)
| 거래소 | 상태 | 등록 (수수료 할인) |
|---|---|---|
| ✅ | 등록 | |
| ✅ | 등록 | |
| ✅ | 등록 |
AI 모델 (API 키 모드)
| AI 모델 | 상태 | API 키 받기 |
|---|---|---|
| ✅ | API 키 받기 | |
| ✅ | API 키 받기 | |
| ✅ | API 키 받기 | |
| ✅ | API 키 받기 | |
| ✅ | API 키 받기 | |
| ✅ | API 키 받기 | |
| ✅ | API 키 받기 | |
| ✅ | API 키 받기 |
AI 모델 (x402 모드 — API 키 불필요)
15+ 모델을 Claw402로 이용 — USDC 지갑만 있으면 됩니다
설치
Linux / macOS
curl -fsSL https://raw.githubusercontent.com/NoFxAiOS/nofx/main/install.sh | bash
Railway (클라우드)
Docker
curl -O https://raw.githubusercontent.com/NoFxAiOS/nofx/main/docker-compose.prod.yml
docker compose -f docker-compose.prod.yml up -d
소스에서
# 필수 조건: Go 1.21+, Node.js 18+, TA-Lib
# macOS: brew install ta-lib
git clone https://github.com/NoFxAiOS/nofx.git && cd nofx
go build -o nofx && ./nofx # 백엔드
cd web && npm install && npm run dev # 프론트엔드 (새 터미널)
링크
| 웹사이트 | nofxai.com |
| 대시보드 | nofxos.ai/dashboard |
| API 문서 | nofxos.ai/api-docs |
| Telegram | nofx_dev_community |
| @nofx_official |
위험 경고: AI 자동 거래에는 상당한 위험이 있습니다. 학습/연구 또는 소액 테스트만 권장합니다.