From 185ec2ed5d2064afc059bbeae20f6181cc320fda Mon Sep 17 00:00:00 2001 From: FxPouya <59786270+FxPouya@users.noreply.github.com> Date: Fri, 26 Dec 2025 15:19:15 +0330 Subject: [PATCH] Add files via upload --- css/style.css | 171 ++++++++++++++++++++++++++++++++++++++ index.html | 52 ++++++++---- js/ga-engine.js | 38 ++++++++- js/main.js | 57 ++++++++++++- js/strategy.js | 2 + js/walk-forward.js | 203 +++++++++++++++++++++++++++++++++++++++++++++ manual.html | 97 ++++++++++++++++++++++ 7 files changed, 603 insertions(+), 17 deletions(-) create mode 100644 js/walk-forward.js diff --git a/css/style.css b/css/style.css index b303ff5..64778bc 100644 --- a/css/style.css +++ b/css/style.css @@ -814,4 +814,175 @@ tbody tr:hover { .loading { animation: pulse 2s ease-in-out infinite; +} + +/* Walk-Forward Analysis Badges */ +.wf-badge { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 6px 12px; + border-radius: 20px; + font-size: 12px; + font-weight: 600; + margin-left: 10px; +} + +.wf-badge-pass { + background: rgba(72, 187, 120, 0.15); + color: var(--accent-success); + border: 1px solid rgba(72, 187, 120, 0.3); +} + +.wf-badge-fail { + background: rgba(237, 137, 54, 0.15); + color: var(--accent-warning); + border: 1px solid rgba(237, 137, 54, 0.3); +} + +.wf-icon { + font-size: 14px; + font-weight: 700; +} + +.wf-text { + font-size: 11px; + text-transform: uppercase; + letter-spacing: 0.5px; +} + +.wf-score { + background: rgba(255, 255, 255, 0.1); + padding: 2px 6px; + border-radius: 10px; + font-size: 11px; + font-weight: 700; +} + +/* Walk-Forward Results Tab */ +.wf-summary { + display: flex; + gap: 30px; + margin-bottom: 30px; + align-items: center; +} + +.robustness-gauge { + text-align: center; + padding: 25px; + background: linear-gradient(135deg, var(--accent-primary) 0%, var(--accent-secondary) 100%); + border-radius: 15px; + color: white; + min-width: 160px; + box-shadow: var(--shadow); +} + +.gauge-value { + font-size: 52px; + font-weight: 700; + line-height: 1; +} + +.gauge-label { + font-size: 13px; + opacity: 0.95; + margin-top: 8px; + text-transform: uppercase; + letter-spacing: 1px; +} + +.wf-status { + flex: 1; + padding: 20px 25px; + border-radius: 12px; + font-size: 16px; +} + +.status-pass { + background: rgba(72, 187, 120, 0.15); + border-left: 4px solid var(--accent-success); + color: var(--accent-success); +} + +.status-fail { + background: rgba(245, 101, 101, 0.15); + border-left: 4px solid var(--accent-danger); + color: var(--accent-danger); +} + +.comparison-table { + margin: 25px 0; + background: var(--bg-secondary); + border-radius: 12px; + overflow: hidden; +} + +.comparison-table table { + width: 100%; + border-collapse: collapse; +} + +.comparison-table th, +.comparison-table td { + padding: 15px 20px; + text-align: left; + border-bottom: 1px solid var(--border-color); +} + +.comparison-table th { + background: var(--bg-card); + font-weight: 600; + color: var(--text-secondary); + text-transform: uppercase; + font-size: 11px; + letter-spacing: 1px; +} + +.comparison-table tbody tr:hover { + background: var(--bg-hover); +} + +.comparison-table .good { + color: var(--accent-success); + font-weight: 600; +} + +.comparison-table .warning { + color: var(--accent-warning); + font-weight: 600; +} + +.comparison-table .bad { + color: var(--accent-danger); + font-weight: 600; +} + +.wf-charts { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 25px; + margin-top: 30px; +} + +.wf-chart-container { + background: var(--bg-secondary); + padding: 20px; + border-radius: 12px; +} + +.wf-chart-container h4 { + margin-bottom: 15px; + color: var(--accent-primary); + font-size: 16px; +} + +@media (max-width: 768px) { + .wf-charts { + grid-template-columns: 1fr; + } + + .wf-summary { + flex-direction: column; + align-items: stretch; + } } \ No newline at end of file diff --git a/index.html b/index.html index 216c7d2..32d8226 100644 --- a/index.html +++ b/index.html @@ -211,6 +211,29 @@ Minimum trade count (10-200) + + +