[CmdletBinding()] param( [string]$TaskName = "TradeBot LSTM Retrainer", [int]$EveryHours = 6, [string]$Symbols = "BTCUSDT,ETHUSDT,SOLUSDT,XRPUSDT,LTCUSDT", [int]$Limit = 1000 ) $ErrorActionPreference = "Stop" $RepoRoot = (Resolve-Path (Join-Path $PSScriptRoot "..")).Path $Runner = Join-Path $RepoRoot "tools\run_lstm_retrain.ps1" if (-not (Test-Path $Runner)) { throw "Runner not found: $Runner" } $actionArgs = "-NoProfile -ExecutionPolicy Bypass -File `"$Runner`"" if ($Symbols) { $actionArgs += " -Symbols `"$Symbols`"" } if ($Limit -gt 0) { $actionArgs += " -Limit $Limit" } $action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument $actionArgs -WorkingDirectory $RepoRoot $trigger = New-ScheduledTaskTrigger ` -Once ` -At (Get-Date).AddMinutes(5) ` -RepetitionInterval (New-TimeSpan -Hours $EveryHours) ` -RepetitionDuration (New-TimeSpan -Days 3650) $principal = New-ScheduledTaskPrincipal ` -UserId ([System.Security.Principal.WindowsIdentity]::GetCurrent().Name) ` -LogonType Interactive ` -RunLevel Limited $settings = New-ScheduledTaskSettingsSet ` -StartWhenAvailable ` -MultipleInstances IgnoreNew ` -AllowStartIfOnBatteries ` -DontStopIfGoingOnBatteries Register-ScheduledTask ` -TaskName $TaskName ` -Action $action ` -Trigger $trigger ` -Principal $principal ` -Settings $settings ` -Description "Retrains TradeBot LSTM forecast parameters every $EveryHours hours." ` -Force | Out-Null Write-Host "Registered scheduled task '$TaskName' every $EveryHours hours."