From de27f85e6d9abfe1a1a8f39f046af0b99c29c323 Mon Sep 17 00:00:00 2001 From: 21in7 Date: Mon, 9 Mar 2026 22:57:23 +0900 Subject: [PATCH] chore: update .gitignore, modify log file pattern, and add package-lock.json - Added entries to .gitignore for node_modules and dist directories in the dashboard UI. - Updated log file pattern in log_parser.py to match 'bot*.log' instead of 'bot_*.log'. - Introduced package-lock.json for the dashboard UI to manage dependencies. - Updated CLAUDE.md to reflect the status of code review improvements. - Added new weekly report files in HTML and JSON formats for 2026-03-07. - Updated binary parquet files for dogeusdt, trxusdt, and xrpusdt with new data. --- .gitignore | 2 + CLAUDE.md | 2 +- dashboard/api/log_parser.py | 2 +- dashboard/ui/package-lock.json | 2055 ++++ data/dogeusdt/combined_15m.parquet | Bin 3529723 -> 3530525 bytes data/trxusdt/combined_15m.parquet | Bin 3437205 -> 3437938 bytes data/xrpusdt/combined_15m.parquet | Bin 3408977 -> 3409682 bytes results/weekly/report_2026-03-07.html | 13402 ++++++++++++++++++++++++ results/weekly/report_2026-03-07.json | 2116 +++- 9 files changed, 17576 insertions(+), 3 deletions(-) create mode 100644 dashboard/ui/package-lock.json create mode 100644 results/weekly/report_2026-03-07.html diff --git a/.gitignore b/.gitignore index cb4e3a3..9ceda65 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,5 @@ data/*.parquet .worktrees/ .venv +dashboard/ui/node_modules/ +dashboard/ui/dist/ \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md index 3e7cc1e..58e6312 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -138,4 +138,4 @@ All design documents and implementation plans are stored in `docs/plans/` with t | 2026-03-06 | `multi-symbol-dashboard` (design + plan) | Completed | | 2026-03-06 | `strategy-parameter-sweep` (plan) | Completed | | 2026-03-07 | `weekly-report` (plan) | Completed | -| 2026-03-07 | `code-review-improvements` | Pending | +| 2026-03-07 | `code-review-improvements` | Partial (#1,#2,#4,#5,#6,#8 완료) | diff --git a/dashboard/api/log_parser.py b/dashboard/api/log_parser.py index 486ebbb..cfce081 100644 --- a/dashboard/api/log_parser.py +++ b/dashboard/api/log_parser.py @@ -214,7 +214,7 @@ class LogParser: time.sleep(POLL_INTERVAL) def _scan_logs(self): - log_files = sorted(glob.glob(os.path.join(LOG_DIR, "bot_*.log"))) + log_files = sorted(glob.glob(os.path.join(LOG_DIR, "bot*.log"))) main_log = os.path.join(LOG_DIR, "bot.log") if os.path.exists(main_log): log_files.append(main_log) diff --git a/dashboard/ui/package-lock.json b/dashboard/ui/package-lock.json new file mode 100644 index 0000000..5739171 --- /dev/null +++ b/dashboard/ui/package-lock.json @@ -0,0 +1,2055 @@ +{ + "name": "trading-dashboard", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "trading-dashboard", + "version": "1.0.0", + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0", + "recharts": "^2.12.0" + }, + "devDependencies": { + "@vitejs/plugin-react": "^4.2.0", + "vite": "^5.4.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", + "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", + "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001777", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001777.tgz", + "integrity": "sha512-tmN+fJxroPndC74efCdp12j+0rk0RHwV5Jwa1zWaFVyw2ZxAuPeG8ZgWC3Wz7uSjT3qMRQ5XHZ4COgQmsCMJAQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", + "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", + "license": "MIT" + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.307", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.307.tgz", + "integrity": "sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==", + "dev": true, + "license": "ISC" + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/fast-equals": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.4.0.tgz", + "integrity": "sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", + "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss": { + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-smooth": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.4.tgz", + "integrity": "sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==", + "license": "MIT", + "dependencies": { + "fast-equals": "^5.0.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/recharts": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.15.4.tgz", + "integrity": "sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw==", + "license": "MIT", + "dependencies": { + "clsx": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.21", + "react-is": "^18.3.1", + "react-smooth": "^4.0.4", + "recharts-scale": "^0.4.4", + "tiny-invariant": "^1.3.1", + "victory-vendor": "^36.6.8" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "license": "MIT", + "dependencies": { + "decimal.js-light": "^2.4.1" + } + }, + "node_modules/rollup": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/victory-vendor": { + "version": "36.9.2", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", + "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "license": "MIT AND ISC", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, + "node_modules/vite": { + "version": "5.4.21", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + } + } +} diff --git a/data/dogeusdt/combined_15m.parquet b/data/dogeusdt/combined_15m.parquet index d1bd993ebbbe6ea8240e98d54eb675e1e5336264..80cb2e10f280de933a8682c32039806fe274c375 100644 GIT binary patch delta 3516 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

&M^1FsBV=z*^VBDBo(gB2~lBEZl)C4Ffj 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 TjR`k4OrZN_>+qs`j8FA{Z@;n@ diff --git a/results/weekly/report_2026-03-07.html b/results/weekly/report_2026-03-07.html new file mode 100644 index 0000000..ac9b81a --- /dev/null +++ b/results/weekly/report_2026-03-07.html @@ -0,0 +1,13402 @@ + + + + + + + + + Tearsheet (generated by QuantStats) + + + + + + + +

+ +

CoinTrader 주간 리포트 (2026-03-07) (Compounded)
9 Jun, 2025 - 4 Jan, 2026

+

Periods/Year: 252 • RF: 0.0% | Generated by QuantStats (v. 0.0.81)

+
+ +
+ +
+ + + + + + + + 2026-03-07T03:15:44.006410 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + 2026-03-07T03:15:44.040476 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + 2026-03-07T03:15:44.079960 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + 2026-03-07T03:15:44.129086 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + 2026-03-07T03:15:44.166439 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + 2026-03-07T03:15:44.206073 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + 2026-03-07T03:15:44.241204 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + 2026-03-07T03:15:44.277135 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + 2026-03-07T03:15:44.319194 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + 2026-03-07T03:15:44.363378 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + 2026-03-07T03:15:44.428676 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + 2026-03-07T03:15:44.487058 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/results/weekly/report_2026-03-07.json b/results/weekly/report_2026-03-07.json index 368c4c3..3e79310 100644 --- a/results/weekly/report_2026-03-07.json +++ b/results/weekly/report_2026-03-07.json @@ -58,7 +58,2121 @@ "REVERSE_SIGNAL": 1 } } - } + }, + "trades": [ + { + "symbol": "XRPUSDT", + "side": "SHORT", + "entry_time": "2025-06-12 11:15:00", + "exit_time": "2025-06-12 13:00:00", + "entry_price": 2.223978, + "exit_price": 2.237955, + "quantity": 2248.0, + "sl": 2.237955, + "tp": 2.21, + "gross_pnl": -31.420573, + "entry_fee": 1.999801, + "exit_fee": 2.012369, + "net_pnl": -35.432743, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 26.97199737318929, + "macd_hist": -0.0007807103280135859, + "atr": 0.006988561711463904, + "adx": 43.4578914382015 + }, + "fold": 1 + }, + { + "symbol": "XRPUSDT", + "side": "LONG", + "entry_time": "2025-06-12 20:30:00", + "exit_time": "2025-06-13 00:00:00", + "entry_price": 2.186419, + "exit_price": 2.163885, + "quantity": 2201.5, + "sl": 2.163885, + "tp": 2.208952, + "gross_pnl": -49.607437, + "entry_fee": 1.92536, + "exit_fee": 1.905517, + "net_pnl": -53.438315, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 26.41519543415668, + "macd_hist": -0.005495027011351469, + "atr": 0.011266735681191995, + "adx": 35.41443548413551 + }, + "fold": 1 + }, + { + "symbol": "XRPUSDT", + "side": "LONG", + "entry_time": "2025-06-16 22:30:00", + "exit_time": "2025-06-16 23:45:00", + "entry_price": 2.260826, + "exit_price": 2.231631, + "quantity": 2006.6, + "sl": 2.231631, + "tp": 2.290021, + "gross_pnl": -58.582699, + "entry_fee": 1.814629, + "exit_fee": 1.791196, + "net_pnl": -62.188525, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 33.211506920436555, + "macd_hist": -0.007666291215691772, + "atr": 0.014597503086660083, + "adx": 41.77057022158849 + }, + "fold": 1 + }, + { + "symbol": "XRPUSDT", + "side": "SHORT", + "entry_time": "2025-06-17 15:00:00", + "exit_time": "2025-06-17 15:30:00", + "entry_price": 2.188781, + "exit_price": 2.164935, + "quantity": 1926.0, + "sl": 2.212627, + "tp": 2.164935, + "gross_pnl": 45.926824, + "entry_fee": 1.686237, + "exit_fee": 1.667866, + "net_pnl": 42.572721, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 35.98442517376965, + "macd_hist": -0.000473160901783975, + "atr": 0.011922851577807921, + "adx": 31.230008994240638 + }, + "fold": 1 + }, + { + "symbol": "XRPUSDT", + "side": "LONG", + "entry_time": "2025-06-21 13:30:00", + "exit_time": "2025-06-21 15:15:00", + "entry_price": 2.119112, + "exit_price": 2.109684, + "quantity": 2086.2, + "sl": 2.109684, + "tp": 2.128539, + "gross_pnl": -19.667423, + "entry_fee": 1.768356, + "exit_fee": 1.76049, + "net_pnl": -23.196269, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 29.460371663394117, + "macd_hist": -0.002291006577745399, + "atr": 0.0047136955379463, + "adx": 26.139853452702802 + }, + "fold": 1 + }, + { + "symbol": "XRPUSDT", + "side": "SHORT", + "entry_time": "2025-06-21 21:15:00", + "exit_time": "2025-06-21 21:30:00", + "entry_price": 2.045995, + "exit_price": 2.018384, + "quantity": 2099.3, + "sl": 2.073607, + "tp": 2.018384, + "gross_pnl": 57.964484, + "entry_fee": 1.718063, + "exit_fee": 1.694877, + "net_pnl": 54.551543, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 24.112041978961905, + "macd_hist": -0.0015821538372272313, + "atr": 0.013805669484335523, + "adx": 47.020225174544926 + }, + "fold": 1 + }, + { + "symbol": "XRPUSDT", + "side": "LONG", + "entry_time": "2025-06-24 05:30:00", + "exit_time": "2025-06-24 06:00:00", + "entry_price": 2.184818, + "exit_price": 2.207587, + "quantity": 2087.2, + "sl": 2.16205, + "tp": 2.207587, + "gross_pnl": 47.522393, + "entry_fee": 1.824061, + "exit_fee": 1.84307, + "net_pnl": 43.855261, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 73.02163697288638, + "macd_hist": 0.0005479493365071683, + "atr": 0.011384245075129916, + "adx": 47.36536786932758 + }, + "fold": 1 + }, + { + "symbol": "XRPUSDT", + "side": "SHORT", + "entry_time": "2025-07-01 13:00:00", + "exit_time": "2025-07-01 14:15:00", + "entry_price": 2.185781, + "exit_price": 2.203594, + "quantity": 2182.0, + "sl": 2.203594, + "tp": 2.167969, + "gross_pnl": -38.866074, + "entry_fee": 1.90775, + "exit_fee": 1.923296, + "net_pnl": -42.697121, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 34.25494593254047, + "macd_hist": -0.00014675405719808375, + "atr": 0.008906066514248343, + "adx": 38.40722178323835 + }, + "fold": 1 + }, + { + "symbol": "XRPUSDT", + "side": "SHORT", + "entry_time": "2025-07-04 06:00:00", + "exit_time": "2025-07-04 07:30:00", + "entry_price": 2.232877, + "exit_price": 2.220445, + "quantity": 2036.1, + "sl": 2.245309, + "tp": 2.220445, + "gross_pnl": 25.312421, + "entry_fee": 1.818544, + "exit_fee": 1.808419, + "net_pnl": 21.685458, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 31.442919224174045, + "macd_hist": -0.00029321477558042104, + "atr": 0.0062159081353788895, + "adx": 33.56850119916028 + }, + "fold": 1 + }, + { + "symbol": "XRPUSDT", + "side": "SHORT", + "entry_time": "2025-09-05 19:45:00", + "exit_time": "2025-09-05 21:00:00", + "entry_price": 2.863514, + "exit_price": 2.839468, + "quantity": 1745.9, + "sl": 2.887559, + "tp": 2.839468, + "gross_pnl": 41.980567, + "entry_fee": 1.999763, + "exit_fee": 1.982971, + "net_pnl": 37.997832, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 66.8667614741176, + "macd_hist": 0.005566660638547516, + "atr": 0.012022614930199287, + "adx": 25.794325095274626 + }, + "fold": 2 + }, + { + "symbol": "XRPUSDT", + "side": "LONG", + "entry_time": "2025-09-07 07:30:00", + "exit_time": "2025-09-07 13:30:00", + "entry_price": 2.831483, + "exit_price": 2.839182, + "quantity": 1750.6, + "sl": 2.823784, + "tp": 2.839182, + "gross_pnl": 13.478415, + "entry_fee": 1.982718, + "exit_fee": 1.988109, + "net_pnl": 9.507588, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 70.72939012092385, + "macd_hist": 0.00013947818915852105, + "atr": 0.0038496557346203194, + "adx": 25.87514662158794 + }, + "fold": 2 + }, + { + "symbol": "XRPUSDT", + "side": "SHORT", + "entry_time": "2025-09-07 14:15:00", + "exit_time": "2025-09-07 17:45:00", + "entry_price": 2.888611, + "exit_price": 2.863658, + "quantity": 1711.8, + "sl": 2.913564, + "tp": 2.863658, + "gross_pnl": 42.714942, + "entry_fee": 1.97789, + "exit_fee": 1.960804, + "net_pnl": 38.776248, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 76.27147788789821, + "macd_hist": 0.006331113894477991, + "atr": 0.012476615713124774, + "adx": 29.135371839765913 + }, + "fold": 2 + }, + { + "symbol": "XRPUSDT", + "side": "SHORT", + "entry_time": "2025-09-09 07:00:00", + "exit_time": "2025-09-09 08:30:00", + "entry_price": 3.009099, + "exit_price": 3.032748, + "quantity": 1621.9, + "sl": 3.032748, + "tp": 2.98545, + "gross_pnl": -38.356788, + "entry_fee": 1.952183, + "exit_fee": 1.967526, + "net_pnl": -42.276497, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 73.38194905544675, + "macd_hist": 0.006160466326798137, + "atr": 0.011824646391069867, + "adx": 28.105801823891394 + }, + "fold": 2 + }, + { + "symbol": "XRPUSDT", + "side": "SHORT", + "entry_time": "2025-09-12 20:45:00", + "exit_time": "2025-09-12 21:30:00", + "entry_price": 3.121788, + "exit_price": 3.09291, + "quantity": 1587.4, + "sl": 3.150665, + "tp": 3.09291, + "gross_pnl": 45.839824, + "entry_fee": 1.98221, + "exit_fee": 1.963874, + "net_pnl": 41.893739, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 78.88995114530964, + "macd_hist": 0.004793783646225545, + "atr": 0.014438649390670705, + "adx": 33.848649235778474 + }, + "fold": 2 + }, + { + "symbol": "XRPUSDT", + "side": "SHORT", + "entry_time": "2025-09-14 11:15:00", + "exit_time": "2025-09-14 12:30:00", + "entry_price": 3.066993, + "exit_price": 3.050039, + "quantity": 1594.0, + "sl": 3.083947, + "tp": 3.050039, + "gross_pnl": 27.024629, + "entry_fee": 1.955515, + "exit_fee": 1.944705, + "net_pnl": 23.124409, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 31.419480021379645, + "macd_hist": -0.0003629091436070245, + "atr": 0.008476985221720718, + "adx": 31.882046477112183 + }, + "fold": 2 + }, + { + "symbol": "XRPUSDT", + "side": "SHORT", + "entry_time": "2025-09-20 14:00:00", + "exit_time": "2025-09-20 15:00:00", + "entry_price": 2.971603, + "exit_price": 2.984114, + "quantity": 1630.7, + "sl": 2.984114, + "tp": 2.959092, + "gross_pnl": -20.401941, + "entry_fee": 1.938317, + "exit_fee": 1.946478, + "net_pnl": -24.286736, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 36.09553473183674, + "macd_hist": -0.00018720159437711752, + "atr": 0.006255577606168083, + "adx": 28.84076206692945 + }, + "fold": 2 + }, + { + "symbol": "XRPUSDT", + "side": "LONG", + "entry_time": "2025-09-24 19:45:00", + "exit_time": "2025-09-24 21:45:00", + "entry_price": 2.976198, + "exit_price": 2.948913, + "quantity": 1646.2, + "sl": 2.948913, + "tp": 3.003482, + "gross_pnl": -44.915196, + "entry_fee": 1.959767, + "exit_fee": 1.941801, + "net_pnl": -48.816763, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 77.25608496751632, + "macd_hist": 0.00019635721897620986, + "atr": 0.013642083686890932, + "adx": 66.36435142210216 + }, + "fold": 2 + }, + { + "symbol": "XRPUSDT", + "side": "SHORT", + "entry_time": "2025-09-25 12:15:00", + "exit_time": "2025-09-25 12:30:00", + "entry_price": 2.793221, + "exit_price": 2.81825, + "quantity": 1781.8, + "sl": 2.81825, + "tp": 2.768191, + "gross_pnl": -44.597807, + "entry_fee": 1.990784, + "exit_fee": 2.008623, + "net_pnl": -48.597214, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 27.256149561284357, + "macd_hist": -0.0005773233003328118, + "atr": 0.012514818420656685, + "adx": 36.706433983392714 + }, + "fold": 2 + }, + { + "symbol": "XRPUSDT", + "side": "LONG", + "entry_time": "2025-09-28 22:00:00", + "exit_time": "2025-09-29 02:15:00", + "entry_price": 2.850785, + "exit_price": 2.868214, + "quantity": 1700.7, + "sl": 2.833356, + "tp": 2.868214, + "gross_pnl": 29.641341, + "entry_fee": 1.939332, + "exit_fee": 1.951189, + "net_pnl": 25.750821, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 69.94607598871028, + "macd_hist": 0.0002172037763433672, + "atr": 0.008714453238038499, + "adx": 45.96715774504039 + }, + "fold": 2 + }, + { + "symbol": "XRPUSDT", + "side": "SHORT", + "entry_time": "2025-12-10 10:30:00", + "exit_time": "2025-12-10 14:30:00", + "entry_price": 2.069993, + "exit_price": 2.056326, + "quantity": 2415.2, + "sl": 2.08366, + "tp": 2.056326, + "gross_pnl": 33.009596, + "entry_fee": 1.999779, + "exit_fee": 1.986575, + "net_pnl": 29.023242, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 37.038012691554805, + "macd_hist": -9.211636302669133e-05, + "atr": 0.0068337189344636114, + "adx": 28.943927763667713 + }, + "fold": 3 + }, + { + "symbol": "XRPUSDT", + "side": "LONG", + "entry_time": "2025-12-12 16:00:00", + "exit_time": "2025-12-12 18:30:00", + "entry_price": 1.988899, + "exit_price": 2.013001, + "quantity": 2498.4, + "sl": 1.964797, + "tp": 2.013001, + "gross_pnl": 60.216838, + "entry_fee": 1.987626, + "exit_fee": 2.011713, + "net_pnl": 56.2175, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 28.182013495720106, + "macd_hist": -0.00643391832048344, + "atr": 0.01205108033747697, + "adx": 30.769786891839054 + }, + "fold": 3 + }, + { + "symbol": "XRPUSDT", + "side": "SHORT", + "entry_time": "2025-12-19 13:15:00", + "exit_time": "2025-12-19 13:45:00", + "entry_price": 1.878712, + "exit_price": 1.863781, + "quantity": 2596.8, + "sl": 1.893643, + "tp": 1.863781, + "gross_pnl": 38.773597, + "entry_fee": 1.951456, + "exit_fee": 1.935946, + "net_pnl": 34.886195, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 68.16547032772114, + "macd_hist": -4.5929936914913816e-05, + "atr": 0.007465649526915487, + "adx": 40.69667585881617 + }, + "fold": 3 + }, + { + "symbol": "XRPUSDT", + "side": "LONG", + "entry_time": "2025-12-25 23:30:00", + "exit_time": "2025-12-26 02:00:00", + "entry_price": 1.831783, + "exit_price": 1.844712, + "quantity": 2624.8, + "sl": 1.818854, + "tp": 1.844712, + "gross_pnl": 33.936201, + "entry_fee": 1.923226, + "exit_fee": 1.9368, + "net_pnl": 30.076175, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 18.688435627302994, + "macd_hist": -0.0034657628634239823, + "atr": 0.006464530874639477, + "adx": 30.228290924248867 + }, + "fold": 3 + }, + { + "symbol": "XRPUSDT", + "side": "LONG", + "entry_time": "2026-01-01 15:45:00", + "exit_time": "2026-01-01 17:15:00", + "entry_price": 1.861986, + "exit_price": 1.870892, + "quantity": 2543.8, + "sl": 1.853081, + "tp": 1.870892, + "gross_pnl": 22.653457, + "entry_fee": 1.894608, + "exit_fee": 1.90367, + "net_pnl": 18.855179, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 64.9515011671277, + "macd_hist": 8.017825296896758e-05, + "atr": 0.004452680396625609, + "adx": 29.061543249865803 + }, + "fold": 3 + }, + { + "symbol": "XRPUSDT", + "side": "LONG", + "entry_time": "2026-01-02 14:30:00", + "exit_time": "2026-01-02 14:45:00", + "entry_price": 1.906991, + "exit_price": 1.92129, + "quantity": 2458.8, + "sl": 1.892691, + "tp": 1.92129, + "gross_pnl": 35.159553, + "entry_fee": 1.875563, + "exit_fee": 1.889627, + "net_pnl": 31.394362, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 68.243618769103, + "macd_hist": 0.00021763021087121363, + "atr": 0.007149738287103824, + "adx": 34.75978288472445 + }, + "fold": 3 + }, + { + "symbol": "XRPUSDT", + "side": "SHORT", + "entry_time": "2026-01-04 00:45:00", + "exit_time": "2026-01-04 01:30:00", + "entry_price": 2.041396, + "exit_price": 2.026932, + "quantity": 2251.8, + "sl": 2.05586, + "tp": 2.026932, + "gross_pnl": 32.569888, + "entry_fee": 1.838726, + "exit_fee": 1.825698, + "net_pnl": 28.905464, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 78.42031027026397, + "macd_hist": 0.002773445174521872, + "atr": 0.007231967338050755, + "adx": 25.06146716762975 + }, + "fold": 3 + }, + { + "symbol": "XRPUSDT", + "side": "LONG", + "entry_time": "2026-01-04 03:00:00", + "exit_time": "2026-01-04 03:45:00", + "entry_price": 2.038904, + "exit_price": 2.053633, + "quantity": 2209.5, + "sl": 2.024175, + "tp": 2.053633, + "gross_pnl": 32.54375, + "entry_fee": 1.801983, + "exit_fee": 1.815001, + "net_pnl": 28.926766, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 66.00101725582081, + "macd_hist": 4.503977849404806e-05, + "atr": 0.007364505506906315, + "adx": 30.991168735172053 + }, + "fold": 3 + }, + { + "symbol": "TRXUSDT", + "side": "LONG", + "entry_time": "2025-06-11 17:00:00", + "exit_time": "2025-06-11 19:45:00", + "entry_price": 0.282968, + "exit_price": 0.280059, + "quantity": 17671.6, + "sl": 0.280059, + "tp": 0.285877, + "gross_pnl": -51.403627, + "entry_fee": 2.000201, + "exit_fee": 1.97964, + "net_pnl": -55.383467, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 21.310011221387928, + "macd_hist": -0.0009208923407909242, + "atr": 0.001454413485759152, + "adx": 32.474695496414746 + }, + "fold": 1 + }, + { + "symbol": "TRXUSDT", + "side": "SHORT", + "entry_time": "2025-06-13 00:00:00", + "exit_time": "2025-06-13 00:15:00", + "entry_price": 0.268723, + "exit_price": 0.270639, + "quantity": 17537.0, + "sl": 0.270639, + "tp": 0.266808, + "gross_pnl": -33.591402, + "entry_fee": 1.885039, + "exit_fee": 1.898476, + "net_pnl": -37.374917, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 26.966927261980565, + "macd_hist": -1.9569743207310678e-05, + "atr": 0.0009577294352106148, + "adx": 26.838036717103265 + }, + "fold": 1 + }, + { + "symbol": "TRXUSDT", + "side": "LONG", + "entry_time": "2025-06-16 23:45:00", + "exit_time": "2025-06-17 04:45:00", + "entry_price": 0.273887, + "exit_price": 0.276694, + "quantity": 16493.0, + "sl": 0.27108, + "tp": 0.276694, + "gross_pnl": 46.294738, + "entry_fee": 1.80689, + "exit_fee": 1.825408, + "net_pnl": 42.662441, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 28.74454185909087, + "macd_hist": -0.0006231433167976357, + "atr": 0.0014034662689071044, + "adx": 28.215673425255815 + }, + "fold": 1 + }, + { + "symbol": "TRXUSDT", + "side": "LONG", + "entry_time": "2025-06-22 14:15:00", + "exit_time": "2025-06-22 14:45:00", + "entry_price": 0.264836, + "exit_price": 0.267254, + "quantity": 17828.1, + "sl": 0.262419, + "tp": 0.267254, + "gross_pnl": 43.092141, + "entry_fee": 1.888613, + "exit_fee": 1.905849, + "net_pnl": 39.297679, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 23.816317652581944, + "macd_hist": -0.0007482968367435475, + "atr": 0.0012085455367911535, + "adx": 28.05756581397983 + }, + "fold": 1 + }, + { + "symbol": "TRXUSDT", + "side": "LONG", + "entry_time": "2025-07-04 14:15:00", + "exit_time": "2025-07-04 15:30:00", + "entry_price": 0.283728, + "exit_price": 0.282103, + "quantity": 17300.3, + "sl": 0.282103, + "tp": 0.285354, + "gross_pnl": -28.120591, + "entry_fee": 1.963434, + "exit_fee": 1.952186, + "net_pnl": -32.036212, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 27.74105415081286, + "macd_hist": -0.0003117196058060476, + "atr": 0.0008127197629142321, + "adx": 32.363795146724236 + }, + "fold": 1 + }, + { + "symbol": "TRXUSDT", + "side": "SHORT", + "entry_time": "2025-09-06 20:45:00", + "exit_time": "2025-09-06 21:00:00", + "entry_price": 0.321678, + "exit_price": 0.319715, + "quantity": 15541.9, + "sl": 0.323641, + "tp": 0.319715, + "gross_pnl": 30.509805, + "entry_fee": 1.999794, + "exit_fee": 1.98759, + "net_pnl": 26.522421, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 14.50979679434796, + "macd_hist": -0.0001481211181555309, + "atr": 0.0009815339390825979, + "adx": 64.7935479437538 + }, + "fold": 2 + }, + { + "symbol": "TRXUSDT", + "side": "LONG", + "entry_time": "2025-09-06 22:00:00", + "exit_time": "2025-09-06 22:15:00", + "entry_price": 0.305541, + "exit_price": 0.31122, + "quantity": 16274.0, + "sl": 0.299861, + "tp": 0.31122, + "gross_pnl": 92.431123, + "entry_fee": 1.988947, + "exit_fee": 2.025919, + "net_pnl": 88.416257, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 7.92971732591285, + "macd_hist": -0.0020195476384628087, + "atr": 0.0028398403210786296, + "adx": 72.55182590993492 + }, + "fold": 2 + }, + { + "symbol": "TRXUSDT", + "side": "LONG", + "entry_time": "2025-09-08 09:15:00", + "exit_time": "2025-09-08 10:00:00", + "entry_price": 0.332173, + "exit_price": 0.333369, + "quantity": 14497.5, + "sl": 0.330978, + "tp": 0.333369, + "gross_pnl": 17.330829, + "entry_fee": 1.926272, + "exit_fee": 1.933205, + "net_pnl": 13.471352, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 65.07783460048826, + "macd_hist": 1.5209076637119471e-05, + "atr": 0.0005977178625434464, + "adx": 29.94633147610989 + }, + "fold": 2 + }, + { + "symbol": "TRXUSDT", + "side": "LONG", + "entry_time": "2025-09-10 12:30:00", + "exit_time": "2025-09-10 13:45:00", + "entry_price": 0.338144, + "exit_price": 0.339223, + "quantity": 14159.5, + "sl": 0.337065, + "tp": 0.339223, + "gross_pnl": 15.278548, + "entry_fee": 1.915179, + "exit_fee": 1.92129, + "net_pnl": 11.442078, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 69.27306940076188, + "macd_hist": 1.761110324105758e-05, + "atr": 0.0005395157903468375, + "adx": 28.042143316321827 + }, + "fold": 2 + }, + { + "symbol": "TRXUSDT", + "side": "SHORT", + "entry_time": "2025-09-13 05:30:00", + "exit_time": "2025-09-13 06:45:00", + "entry_price": 0.354365, + "exit_price": 0.353225, + "quantity": 13440.7, + "sl": 0.355504, + "tp": 0.353225, + "gross_pnl": 15.319292, + "entry_fee": 1.905163, + "exit_fee": 1.899035, + "net_pnl": 11.515093, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 75.09668428355302, + "macd_hist": 0.00010590971216388305, + "atr": 0.0005698844413077655, + "adx": 40.031791993546236 + }, + "fold": 2 + }, + { + "symbol": "TRXUSDT", + "side": "LONG", + "entry_time": "2025-09-18 16:15:00", + "exit_time": "2025-09-18 17:00:00", + "entry_price": 0.349035, + "exit_price": 0.350709, + "quantity": 13576.0, + "sl": 0.34736, + "tp": 0.350709, + "gross_pnl": 22.73422, + "entry_fee": 1.895399, + "exit_fee": 1.904493, + "net_pnl": 18.934328, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 71.40338684709819, + "macd_hist": 2.7945430776989415e-05, + "atr": 0.0008372944810174205, + "adx": 41.403707409730266 + }, + "fold": 2 + }, + { + "symbol": "TRXUSDT", + "side": "SHORT", + "entry_time": "2025-09-21 08:15:00", + "exit_time": "2025-09-21 09:15:00", + "entry_price": 0.344206, + "exit_price": 0.343239, + "quantity": 13625.0, + "sl": 0.345172, + "tp": 0.343239, + "gross_pnl": 13.169344, + "entry_fee": 1.87592, + "exit_fee": 1.870653, + "net_pnl": 9.422771, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 30.782692658162308, + "macd_hist": -7.421870424645718e-05, + "atr": 0.0004832786824330342, + "adx": 31.221203425283278 + }, + "fold": 2 + }, + { + "symbol": "TRXUSDT", + "side": "LONG", + "entry_time": "2025-09-21 23:00:00", + "exit_time": "2025-09-22 00:30:00", + "entry_price": 0.342464, + "exit_price": 0.341551, + "quantity": 13632.0, + "sl": 0.341551, + "tp": 0.343378, + "gross_pnl": -12.451938, + "entry_fee": 1.867389, + "exit_fee": 1.862408, + "net_pnl": -16.181735, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 32.492156959618264, + "macd_hist": -0.00011844966177527712, + "atr": 0.0004567172002937059, + "adx": 30.86524355608222 + }, + "fold": 2 + }, + { + "symbol": "TRXUSDT", + "side": "SHORT", + "entry_time": "2025-09-22 06:00:00", + "exit_time": "2025-09-22 11:15:00", + "entry_price": 0.334297, + "exit_price": 0.337072, + "quantity": 14118.1, + "sl": 0.337072, + "tp": 0.331521, + "gross_pnl": -39.186716, + "entry_fee": 1.887853, + "exit_fee": 1.903528, + "net_pnl": -42.978096, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 19.554287882129668, + "macd_hist": -0.00022792604366828832, + "atr": 0.0013878183290049766, + "adx": 30.760886738521233 + }, + "fold": 2 + }, + { + "symbol": "TRXUSDT", + "side": "LONG", + "entry_time": "2025-09-27 08:00:00", + "exit_time": "2025-09-27 09:00:00", + "entry_price": 0.336534, + "exit_price": 0.335566, + "quantity": 14361.6, + "sl": 0.335566, + "tp": 0.337501, + "gross_pnl": -13.898667, + "entry_fee": 1.933265, + "exit_fee": 1.927705, + "net_pnl": -17.759637, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 28.90053605935814, + "macd_hist": -0.00025988593478820746, + "atr": 0.00048388294790651314, + "adx": 26.380156011508365 + }, + "fold": 2 + }, + { + "symbol": "TRXUSDT", + "side": "LONG", + "entry_time": "2025-09-29 10:00:00", + "exit_time": "2025-09-29 10:45:00", + "entry_price": 0.332323, + "exit_price": 0.333211, + "quantity": 14669.3, + "sl": 0.331435, + "tp": 0.333211, + "gross_pnl": 13.030313, + "entry_fee": 1.94998, + "exit_fee": 1.955192, + "net_pnl": 9.125141, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 19.362378267287347, + "macd_hist": -0.0002291318308186226, + "atr": 0.00044413546950098455, + "adx": 29.645494050123773 + }, + "fold": 2 + }, + { + "symbol": "TRXUSDT", + "side": "LONG", + "entry_time": "2025-09-30 03:30:00", + "exit_time": "2025-09-30 06:15:00", + "entry_price": 0.337134, + "exit_price": 0.336068, + "quantity": 14416.4, + "sl": 0.336068, + "tp": 0.3382, + "gross_pnl": -15.367974, + "entry_fee": 1.944102, + "exit_fee": 1.937955, + "net_pnl": -19.25003, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 58.81934618554273, + "macd_hist": 9.633358724452359e-06, + "atr": 0.0005330031631932522, + "adx": 34.07177915564808 + }, + "fold": 2 + }, + { + "symbol": "TRXUSDT", + "side": "LONG", + "entry_time": "2025-10-01 08:15:00", + "exit_time": "2025-10-01 08:45:00", + "entry_price": 0.335354, + "exit_price": 0.336308, + "quantity": 14616.9, + "sl": 0.334399, + "tp": 0.336308, + "gross_pnl": 13.951362, + "entry_fee": 1.960732, + "exit_fee": 1.966312, + "net_pnl": 10.024318, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 70.24789531394917, + "macd_hist": 4.729285330987371e-05, + "atr": 0.0004772339591884286, + "adx": 31.542285567700812 + }, + "fold": 2 + }, + { + "symbol": "TRXUSDT", + "side": "SHORT", + "entry_time": "2025-12-08 23:15:00", + "exit_time": "2025-12-09 00:00:00", + "entry_price": 0.281402, + "exit_price": 0.28061, + "quantity": 17766.4, + "sl": 0.282193, + "tp": 0.28061, + "gross_pnl": 14.063894, + "entry_fee": 1.999799, + "exit_fee": 1.994174, + "net_pnl": 10.069921, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 22.36971195563758, + "macd_hist": -5.3411406416355763e-05, + "atr": 0.0003958003322855375, + "adx": 36.500835949606106 + }, + "fold": 3 + }, + { + "symbol": "TRXUSDT", + "side": "SHORT", + "entry_time": "2025-12-12 07:45:00", + "exit_time": "2025-12-12 08:15:00", + "entry_price": 0.278582, + "exit_price": 0.277953, + "quantity": 17915.9, + "sl": 0.279211, + "tp": 0.277953, + "gross_pnl": 11.265055, + "entry_fee": 1.99642, + "exit_fee": 1.991914, + "net_pnl": 7.276721, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 29.438038967517357, + "macd_hist": -2.5520992386730775e-05, + "atr": 0.0003143870866373587, + "adx": 26.711440675930646 + }, + "fold": 3 + }, + { + "symbol": "TRXUSDT", + "side": "SHORT", + "entry_time": "2025-12-12 15:30:00", + "exit_time": "2025-12-12 15:45:00", + "entry_price": 0.276062, + "exit_price": 0.275244, + "quantity": 18057.8, + "sl": 0.276881, + "tp": 0.275244, + "gross_pnl": 14.773959, + "entry_fee": 1.994032, + "exit_fee": 1.988122, + "net_pnl": 10.791805, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 28.751521638219945, + "macd_hist": -8.36146151699088e-06, + "atr": 0.00040907415881422674, + "adx": 39.02029513782675 + }, + "fold": 3 + }, + { + "symbol": "TRXUSDT", + "side": "SHORT", + "entry_time": "2025-12-13 10:15:00", + "exit_time": "2025-12-13 12:30:00", + "entry_price": 0.272363, + "exit_price": 0.271775, + "quantity": 18263.9, + "sl": 0.272951, + "tp": 0.271775, + "gross_pnl": 10.736675, + "entry_fee": 1.989762, + "exit_fee": 1.985468, + "net_pnl": 6.761445, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 28.50309030113114, + "macd_hist": -1.9348391567442782e-05, + "atr": 0.0002939316152227498, + "adx": 25.21703387256171 + }, + "fold": 3 + }, + { + "symbol": "TRXUSDT", + "side": "SHORT", + "entry_time": "2025-12-26 15:00:00", + "exit_time": "2025-12-26 19:30:00", + "entry_price": 0.277452, + "exit_price": 0.278149, + "quantity": 17906.6, + "sl": 0.278149, + "tp": 0.276756, + "gross_pnl": -12.474826, + "entry_fee": 1.987291, + "exit_fee": 1.992281, + "net_pnl": -16.454397, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 29.51622507815984, + "macd_hist": -4.6760678561223154e-05, + "atr": 0.0003483303942996465, + "adx": 36.669526375660595 + }, + "fold": 3 + }, + { + "symbol": "TRXUSDT", + "side": "LONG", + "entry_time": "2025-12-27 20:00:00", + "exit_time": "2025-12-27 22:00:00", + "entry_price": 0.283318, + "exit_price": 0.284114, + "quantity": 17618.3, + "sl": 0.282523, + "tp": 0.284114, + "gross_pnl": 14.013879, + "entry_fee": 1.996635, + "exit_fee": 2.00224, + "net_pnl": 10.015004, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 77.49503286668957, + "macd_hist": 3.5147071292014305e-05, + "atr": 0.00039770804019150625, + "adx": 43.053847108404184 + }, + "fold": 3 + }, + { + "symbol": "TRXUSDT", + "side": "SHORT", + "entry_time": "2026-01-04 00:00:00", + "exit_time": "2026-01-04 00:45:00", + "entry_price": 0.294841, + "exit_price": 0.295553, + "quantity": 16895.1, + "sl": 0.295553, + "tp": 0.294128, + "gross_pnl": -12.034542, + "entry_fee": 1.992544, + "exit_fee": 1.997358, + "net_pnl": -16.024444, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 66.6678799584072, + "macd_hist": -3.2551549800375387e-05, + "atr": 0.00035615479915180313, + "adx": 74.06247870613235 + }, + "fold": 3 + }, + { + "symbol": "DOGEUSDT", + "side": "SHORT", + "entry_time": "2025-06-09 09:45:00", + "exit_time": "2025-06-09 10:30:00", + "entry_price": 0.184312, + "exit_price": 0.186099, + "quantity": 27125.3, + "sl": 0.186099, + "tp": 0.182524, + "gross_pnl": -48.496013, + "entry_fee": 1.999803, + "exit_fee": 2.019201, + "net_pnl": -52.515016, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 67.34545854809373, + "macd_hist": 0.00045777683806403745, + "atr": 0.0008939258330681654, + "adx": 26.753579547378944 + }, + "fold": 1 + }, + { + "symbol": "DOGEUSDT", + "side": "SHORT", + "entry_time": "2025-06-12 15:45:00", + "exit_time": "2025-06-12 16:15:00", + "entry_price": 0.185781, + "exit_price": 0.188043, + "quantity": 25443.6, + "sl": 0.188043, + "tp": 0.18352, + "gross_pnl": -57.548306, + "entry_fee": 1.890779, + "exit_fee": 1.913799, + "net_pnl": -61.352884, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 32.87563936239978, + "macd_hist": -6.154194236816622e-05, + "atr": 0.0011308994454790138, + "adx": 36.72844618637212 + }, + "fold": 1 + }, + { + "symbol": "DOGEUSDT", + "side": "SHORT", + "entry_time": "2025-06-13 00:00:00", + "exit_time": "2025-06-13 00:30:00", + "entry_price": 0.175862, + "exit_price": 0.172419, + "quantity": 25080.8, + "sl": 0.179306, + "tp": 0.172419, + "gross_pnl": 86.371409, + "entry_fee": 1.764308, + "exit_fee": 1.729759, + "net_pnl": 82.877341, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 23.82274308710309, + "macd_hist": -0.00018936322017631762, + "atr": 0.0017218631157866595, + "adx": 49.101001050928005 + }, + "fold": 1 + }, + { + "symbol": "DOGEUSDT", + "side": "LONG", + "entry_time": "2025-06-15 08:00:00", + "exit_time": "2025-06-15 13:45:00", + "entry_price": 0.174757, + "exit_price": 0.176023, + "quantity": 27565.4, + "sl": 0.173492, + "tp": 0.176023, + "gross_pnl": 34.876091, + "entry_fee": 1.926904, + "exit_fee": 1.940854, + "net_pnl": 31.008333, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 24.780054637272638, + "macd_hist": -0.0002590315281965996, + "atr": 0.0006326062990674968, + "adx": 30.652243262468048 + }, + "fold": 1 + }, + { + "symbol": "DOGEUSDT", + "side": "SHORT", + "entry_time": "2025-06-17 15:00:00", + "exit_time": "2025-06-17 15:15:00", + "entry_price": 0.169793, + "exit_price": 0.167789, + "quantity": 29222.0, + "sl": 0.171797, + "tp": 0.167789, + "gross_pnl": 58.558778, + "entry_fee": 1.984677, + "exit_fee": 1.961253, + "net_pnl": 54.612848, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 35.547832446911734, + "macd_hist": -5.0941667818399415e-05, + "atr": 0.0010019638901851717, + "adx": 33.89821436286415 + }, + "fold": 1 + }, + { + "symbol": "DOGEUSDT", + "side": "SHORT", + "entry_time": "2025-06-21 21:15:00", + "exit_time": "2025-06-21 21:30:00", + "entry_price": 0.154635, + "exit_price": 0.152064, + "quantity": 31960.9, + "sl": 0.157205, + "tp": 0.152064, + "gross_pnl": 82.160178, + "entry_fee": 1.976904, + "exit_fee": 1.944039, + "net_pnl": 78.239235, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 26.457816380696, + "macd_hist": -0.00012481742306554315, + "atr": 0.001285323281513888, + "adx": 37.795973656729004 + }, + "fold": 1 + }, + { + "symbol": "DOGEUSDT", + "side": "LONG", + "entry_time": "2025-06-23 05:45:00", + "exit_time": "2025-06-23 09:15:00", + "entry_price": 0.154205, + "exit_price": 0.152478, + "quantity": 31067.9, + "sl": 0.152478, + "tp": 0.155933, + "gross_pnl": -53.668609, + "entry_fee": 1.916335, + "exit_fee": 1.894868, + "net_pnl": -57.479812, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 68.35056270975231, + "macd_hist": 4.524144395032638e-05, + "atr": 0.0008637308750963044, + "adx": 31.64341200149608 + }, + "fold": 1 + }, + { + "symbol": "DOGEUSDT", + "side": "LONG", + "entry_time": "2025-06-24 05:30:00", + "exit_time": "2025-06-24 07:30:00", + "entry_price": 0.165817, + "exit_price": 0.163918, + "quantity": 29644.5, + "sl": 0.163918, + "tp": 0.167715, + "gross_pnl": -56.289792, + "entry_fee": 1.96622, + "exit_fee": 1.943704, + "net_pnl": -60.199716, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 71.91537787231637, + "macd_hist": 7.80952216130269e-05, + "atr": 0.0009494137535534953, + "adx": 33.04146955102302 + }, + "fold": 1 + }, + { + "symbol": "DOGEUSDT", + "side": "SHORT", + "entry_time": "2025-06-30 14:45:00", + "exit_time": "2025-06-30 15:45:00", + "entry_price": 0.163204, + "exit_price": 0.164835, + "quantity": 30626.3, + "sl": 0.164835, + "tp": 0.161573, + "gross_pnl": -49.952474, + "entry_fee": 1.99933, + "exit_fee": 2.019311, + "net_pnl": -53.971115, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 34.694739395161335, + "macd_hist": -2.4481776487695294e-05, + "atr": 0.0008155159726745009, + "adx": 36.86861772419954 + }, + "fold": 1 + }, + { + "symbol": "DOGEUSDT", + "side": "LONG", + "entry_time": "2025-07-01 13:30:00", + "exit_time": "2025-07-01 14:00:00", + "entry_price": 0.158926, + "exit_price": 0.160291, + "quantity": 29695.9, + "sl": 0.157561, + "tp": 0.160291, + "gross_pnl": 40.526071, + "entry_fee": 1.887779, + "exit_fee": 1.903989, + "net_pnl": 36.734302, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 22.477319427427954, + "macd_hist": -9.620625262051722e-05, + "atr": 0.0006823512797731415, + "adx": 54.80815080269273 + }, + "fold": 1 + }, + { + "symbol": "DOGEUSDT", + "side": "SHORT", + "entry_time": "2025-07-04 13:30:00", + "exit_time": "2025-07-04 14:15:00", + "entry_price": 0.165093, + "exit_price": 0.163687, + "quantity": 29636.0, + "sl": 0.1665, + "tp": 0.163687, + "gross_pnl": 41.67986, + "entry_fee": 1.957084, + "exit_fee": 1.940412, + "net_pnl": 37.782364, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 28.005630053291462, + "macd_hist": -2.2292129766276537e-05, + "atr": 0.0007031964563771208, + "adx": 42.184408275078944 + }, + "fold": 1 + }, + { + "symbol": "DOGEUSDT", + "side": "SHORT", + "entry_time": "2025-09-06 09:00:00", + "exit_time": "2025-09-06 12:30:00", + "entry_price": 0.214459, + "exit_price": 0.213417, + "quantity": 23312.2, + "sl": 0.2155, + "tp": 0.213417, + "gross_pnl": 24.283274, + "entry_fee": 1.9998, + "exit_fee": 1.990087, + "net_pnl": 20.293386, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 27.72362652968821, + "macd_hist": -4.1870994937527064e-05, + "atr": 0.0005208275826006094, + "adx": 29.251970601813117 + }, + "fold": 2 + }, + { + "symbol": "DOGEUSDT", + "side": "LONG", + "entry_time": "2025-09-08 13:00:00", + "exit_time": "2025-09-08 13:15:00", + "entry_price": 0.239354, + "exit_price": 0.237676, + "quantity": 20806.8, + "sl": 0.236511, + "tp": 0.242196, + "gross_pnl": -34.907631, + "entry_fee": 1.992076, + "exit_fee": 1.978113, + "net_pnl": -38.877819, + "close_reason": "REVERSE_SIGNAL", + "ml_proba": null, + "indicators": { + "rsi": 77.0407640779084, + "macd_hist": 0.00030723417797429717, + "atr": 0.0014212239323279944, + "adx": 25.511092566066164 + }, + "fold": 2 + }, + { + "symbol": "DOGEUSDT", + "side": "SHORT", + "entry_time": "2025-09-08 13:15:00", + "exit_time": "2025-09-08 21:00:00", + "entry_price": 0.237676, + "exit_price": 0.240614, + "quantity": 20560.0, + "sl": 0.240614, + "tp": 0.234738, + "gross_pnl": -60.405019, + "entry_fee": 1.954649, + "exit_fee": 1.978811, + "net_pnl": -64.33848, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 66.83918953751622, + "macd_hist": 0.00037497263875952314, + "atr": 0.001468993651447424, + "adx": 27.856072192833714 + }, + "fold": 2 + }, + { + "symbol": "DOGEUSDT", + "side": "LONG", + "entry_time": "2025-09-09 12:00:00", + "exit_time": "2025-09-09 12:15:00", + "entry_price": 0.246265, + "exit_price": 0.249434, + "quantity": 18500.9, + "sl": 0.243095, + "tp": 0.249434, + "gross_pnl": 58.645342, + "entry_fee": 1.822447, + "exit_fee": 1.845905, + "net_pnl": 54.97699, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 74.03847788480495, + "macd_hist": 0.00025518498301992164, + "atr": 0.0015849321269105327, + "adx": 33.93033682724456 + }, + "fold": 2 + }, + { + "symbol": "DOGEUSDT", + "side": "LONG", + "entry_time": "2025-09-10 16:45:00", + "exit_time": "2025-09-10 17:15:00", + "entry_price": 0.247915, + "exit_price": 0.244558, + "quantity": 19449.9, + "sl": 0.244558, + "tp": 0.251271, + "gross_pnl": -65.283338, + "entry_fee": 1.928767, + "exit_fee": 1.902654, + "net_pnl": -69.114759, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 69.86492326260483, + "macd_hist": 0.00017047619713731908, + "atr": 0.001678243537964013, + "adx": 34.14678587193939 + }, + "fold": 2 + }, + { + "symbol": "DOGEUSDT", + "side": "LONG", + "entry_time": "2025-09-12 22:15:00", + "exit_time": "2025-09-13 01:00:00", + "entry_price": 0.275988, + "exit_price": 0.279803, + "quantity": 16184.3, + "sl": 0.272173, + "tp": 0.279803, + "gross_pnl": 61.742819, + "entry_fee": 1.786666, + "exit_fee": 1.811364, + "net_pnl": 58.144789, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 76.58805471974998, + "macd_hist": 4.664366386725985e-05, + "atr": 0.0019074911824376896, + "adx": 44.711937954746844 + }, + "fold": 2 + }, + { + "symbol": "DOGEUSDT", + "side": "LONG", + "entry_time": "2025-09-13 09:00:00", + "exit_time": "2025-09-13 09:15:00", + "entry_price": 0.287769, + "exit_price": 0.291574, + "quantity": 16501.0, + "sl": 0.283964, + "tp": 0.291574, + "gross_pnl": 62.782388, + "entry_fee": 1.899389, + "exit_fee": 1.924502, + "net_pnl": 58.958497, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 71.97326146387331, + "macd_hist": 0.00012877809784102843, + "atr": 0.0019023813158768733, + "adx": 36.85858934916456 + }, + "fold": 2 + }, + { + "symbol": "DOGEUSDT", + "side": "SHORT", + "entry_time": "2025-09-19 09:45:00", + "exit_time": "2025-09-19 11:15:00", + "entry_price": 0.273413, + "exit_price": 0.270525, + "quantity": 18260.2, + "sl": 0.2763, + "tp": 0.270525, + "gross_pnl": 52.721881, + "entry_fee": 1.997028, + "exit_fee": 1.975939, + "net_pnl": 48.748914, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 36.94887723496356, + "macd_hist": -2.413666691537049e-05, + "atr": 0.0014436282597533449, + "adx": 26.02356329086619 + }, + "fold": 2 + }, + { + "symbol": "DOGEUSDT", + "side": "SHORT", + "entry_time": "2025-09-19 15:00:00", + "exit_time": "2025-09-20 15:15:00", + "entry_price": 0.264754, + "exit_price": 0.268271, + "quantity": 18617.2, + "sl": 0.268271, + "tp": 0.261236, + "gross_pnl": -65.492096, + "entry_fee": 1.971588, + "exit_fee": 1.997785, + "net_pnl": -69.461469, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 21.865956632847094, + "macd_hist": -0.0003218566897059249, + "atr": 0.0017589137003899537, + "adx": 41.170460149238615 + }, + "fold": 2 + }, + { + "symbol": "DOGEUSDT", + "side": "SHORT", + "entry_time": "2025-09-22 06:00:00", + "exit_time": "2025-09-24 04:00:00", + "entry_price": 0.238686, + "exit_price": 0.232935, + "quantity": 20568.4, + "sl": 0.244438, + "tp": 0.232935, + "gross_pnl": 118.297732, + "entry_fee": 1.963757, + "exit_fee": 1.916438, + "net_pnl": 114.417538, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 16.34153124729428, + "macd_hist": -0.00028414939720653766, + "atr": 0.0028757154782821804, + "adx": 54.56661856743755 + }, + "fold": 2 + }, + { + "symbol": "DOGEUSDT", + "side": "LONG", + "entry_time": "2025-09-24 13:30:00", + "exit_time": "2025-09-24 14:15:00", + "entry_price": 0.244504, + "exit_price": 0.247008, + "quantity": 19846.5, + "sl": 0.242001, + "tp": 0.247008, + "gross_pnl": 49.68547, + "entry_fee": 1.941023, + "exit_fee": 1.960897, + "net_pnl": 45.78355, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 71.2906943818606, + "macd_hist": 2.5862815475293172e-05, + "atr": 0.0012517438871727342, + "adx": 36.53568933530894 + }, + "fold": 2 + }, + { + "symbol": "DOGEUSDT", + "side": "SHORT", + "entry_time": "2025-10-04 15:15:00", + "exit_time": "2025-10-04 20:15:00", + "entry_price": 0.247425, + "exit_price": 0.249899, + "quantity": 19183.7, + "sl": 0.249899, + "tp": 0.244952, + "gross_pnl": -47.453069, + "entry_fee": 1.898613, + "exit_fee": 1.917594, + "net_pnl": -51.269276, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 31.16773615602384, + "macd_hist": -8.582094300284889e-05, + "atr": 0.0012368070043067224, + "adx": 32.76110746771211 + }, + "fold": 2 + }, + { + "symbol": "DOGEUSDT", + "side": "SHORT", + "entry_time": "2025-12-05 16:00:00", + "exit_time": "2025-12-05 16:30:00", + "entry_price": 0.140976, + "exit_price": 0.1391, + "quantity": 35463.5, + "sl": 0.142852, + "tp": 0.1391, + "gross_pnl": 66.529579, + "entry_fee": 1.9998, + "exit_fee": 1.973188, + "net_pnl": 62.556592, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 27.006810663086608, + "macd_hist": -6.804193426309074e-05, + "atr": 0.0009380007520786951, + "adx": 27.496704414120043 + }, + "fold": 3 + }, + { + "symbol": "DOGEUSDT", + "side": "SHORT", + "entry_time": "2025-12-10 19:00:00", + "exit_time": "2025-12-10 20:15:00", + "entry_price": 0.147965, + "exit_price": 0.150171, + "quantity": 33230.4, + "sl": 0.150171, + "tp": 0.14576, + "gross_pnl": -73.29433, + "entry_fee": 1.966777, + "exit_fee": 1.996095, + "net_pnl": -77.257202, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 69.08474596518961, + "macd_hist": 0.00024444618170829343, + "atr": 0.0011028204610718977, + "adx": 25.335388110542468 + }, + "fold": 3 + }, + { + "symbol": "DOGEUSDT", + "side": "SHORT", + "entry_time": "2025-12-11 14:45:00", + "exit_time": "2025-12-11 18:30:00", + "entry_price": 0.137106, + "exit_price": 0.138298, + "quantity": 35783.7, + "sl": 0.138298, + "tp": 0.135914, + "gross_pnl": -42.657392, + "entry_fee": 1.962468, + "exit_fee": 1.979531, + "net_pnl": -46.599392, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 37.48045414695715, + "macd_hist": -1.3197028545546734e-06, + "atr": 0.0005960450211185996, + "adx": 27.54410485048102 + }, + "fold": 3 + }, + { + "symbol": "DOGEUSDT", + "side": "LONG", + "entry_time": "2025-12-12 16:00:00", + "exit_time": "2025-12-13 05:00:00", + "entry_price": 0.135924, + "exit_price": 0.137754, + "quantity": 34315.8, + "sl": 0.134093, + "tp": 0.137754, + "gross_pnl": 62.814779, + "entry_fee": 1.865731, + "exit_fee": 1.890857, + "net_pnl": 59.058191, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 21.047744351941322, + "macd_hist": -0.0005811926109814281, + "atr": 0.0009152457279255846, + "adx": 33.592136040064716 + }, + "fold": 3 + }, + { + "symbol": "DOGEUSDT", + "side": "SHORT", + "entry_time": "2025-12-14 17:00:00", + "exit_time": "2025-12-14 23:30:00", + "entry_price": 0.133937, + "exit_price": 0.132554, + "quantity": 36952.7, + "sl": 0.135319, + "tp": 0.132554, + "gross_pnl": 51.096135, + "entry_fee": 1.979728, + "exit_fee": 1.959289, + "net_pnl": 47.157118, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 29.236488118342884, + "macd_hist": -7.410908928065952e-05, + "atr": 0.0006913721507599538, + "adx": 57.10070430535465 + }, + "fold": 3 + }, + { + "symbol": "DOGEUSDT", + "side": "SHORT", + "entry_time": "2025-12-17 14:45:00", + "exit_time": "2025-12-17 15:00:00", + "entry_price": 0.134427, + "exit_price": 0.136197, + "quantity": 36874.8, + "sl": 0.136197, + "tp": 0.132656, + "gross_pnl": -65.276219, + "entry_fee": 1.982781, + "exit_fee": 2.008891, + "net_pnl": -69.267891, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 78.91819645062768, + "macd_hist": 0.00037594271736105997, + "atr": 0.0008851060762978883, + "adx": 25.790767933896934 + }, + "fold": 3 + }, + { + "symbol": "DOGEUSDT", + "side": "SHORT", + "entry_time": "2025-12-23 13:30:00", + "exit_time": "2025-12-23 14:45:00", + "entry_price": 0.129877, + "exit_price": 0.128859, + "quantity": 37104.1, + "sl": 0.130895, + "tp": 0.128859, + "gross_pnl": 37.77032, + "entry_fee": 1.927588, + "exit_fee": 1.91248, + "net_pnl": 33.930252, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 36.510776854433274, + "macd_hist": -2.074599389111751e-05, + "atr": 0.000508977708552182, + "adx": 25.915224810205064 + }, + "fold": 3 + }, + { + "symbol": "DOGEUSDT", + "side": "LONG", + "entry_time": "2025-12-25 23:30:00", + "exit_time": "2025-12-26 02:00:00", + "entry_price": 0.123402, + "exit_price": 0.124694, + "quantity": 40355.5, + "sl": 0.122111, + "tp": 0.124694, + "gross_pnl": 52.129851, + "entry_fee": 1.991985, + "exit_fee": 2.012837, + "net_pnl": 48.125028, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 21.956332463701127, + "macd_hist": -0.000385472424204334, + "atr": 0.0006458828497821451, + "adx": 30.989184860729928 + }, + "fold": 3 + }, + { + "symbol": "DOGEUSDT", + "side": "SHORT", + "entry_time": "2025-12-29 01:30:00", + "exit_time": "2025-12-29 02:00:00", + "entry_price": 0.125557, + "exit_price": 0.126655, + "quantity": 39399.4, + "sl": 0.126655, + "tp": 0.12446, + "gross_pnl": -43.228085, + "entry_fee": 1.978755, + "exit_fee": 1.996046, + "net_pnl": -47.202887, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 70.93949088379718, + "macd_hist": 0.00021125843649452418, + "atr": 0.0005485881139353086, + "adx": 29.808703571101656 + }, + "fold": 3 + }, + { + "symbol": "DOGEUSDT", + "side": "LONG", + "entry_time": "2025-12-29 09:30:00", + "exit_time": "2025-12-29 12:00:00", + "entry_price": 0.124842, + "exit_price": 0.123687, + "quantity": 39767.9, + "sl": 0.123687, + "tp": 0.125998, + "gross_pnl": -45.954662, + "entry_fee": 1.985889, + "exit_fee": 1.967507, + "net_pnl": -49.908058, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 29.928315069400387, + "macd_hist": -0.0002477948827792159, + "atr": 0.0005777858720937434, + "adx": 25.21798449098985 + }, + "fold": 3 + }, + { + "symbol": "DOGEUSDT", + "side": "LONG", + "entry_time": "2026-01-01 15:30:00", + "exit_time": "2026-01-01 15:45:00", + "entry_price": 0.123192, + "exit_price": 0.124236, + "quantity": 38194.1, + "sl": 0.122149, + "tp": 0.124236, + "gross_pnl": 39.843971, + "entry_fee": 1.882088, + "exit_fee": 1.898025, + "net_pnl": 36.063857, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 81.91382400844881, + "macd_hist": 9.922714809708637e-05, + "atr": 0.0005215985022999254, + "adx": 39.562088065326265 + }, + "fold": 3 + }, + { + "symbol": "DOGEUSDT", + "side": "LONG", + "entry_time": "2026-01-02 03:30:00", + "exit_time": "2026-01-02 09:30:00", + "entry_price": 0.128343, + "exit_price": 0.1295, + "quantity": 37993.1, + "sl": 0.127186, + "tp": 0.1295, + "gross_pnl": 43.948281, + "entry_fee": 1.950457, + "exit_fee": 1.968036, + "net_pnl": 40.029788, + "close_reason": "TAKE_PROFIT", + "ml_proba": null, + "indicators": { + "rsi": 76.09091369250733, + "macd_hist": 4.9930842311590165e-05, + "atr": 0.0005783718724173577, + "adx": 54.52255800580547 + }, + "fold": 3 + }, + { + "symbol": "DOGEUSDT", + "side": "LONG", + "entry_time": "2026-01-02 22:00:00", + "exit_time": "2026-01-03 07:15:00", + "entry_price": 0.143004, + "exit_price": 0.140517, + "quantity": 34867.8, + "sl": 0.140517, + "tp": 0.145491, + "gross_pnl": -86.70983, + "entry_fee": 1.994498, + "exit_fee": 1.959814, + "net_pnl": -90.664143, + "close_reason": "STOP_LOSS", + "ml_proba": null, + "indicators": { + "rsi": 82.24373107208923, + "macd_hist": 3.759488327717141e-05, + "atr": 0.00124340839260955, + "adx": 44.70886575835927 + }, + "fold": 3 + } + ] }, "live_trades": { "count": 0,