75 lines
2.3 KiB
PowerShell
75 lines
2.3 KiB
PowerShell
[CmdletBinding()]
|
|
param(
|
|
[string]$TaskName = "TradeBot PyTorch Forecaster Retrainer",
|
|
[int]$EveryHours = 6,
|
|
[string]$Symbols = "BTCUSDT,ETHUSDT,SOLUSDT,LTCUSDT",
|
|
[int]$Limit = 3000,
|
|
[int]$Horizon = 0,
|
|
[string]$Horizons = "",
|
|
[string]$Features = "",
|
|
[string]$ContextSymbols = "",
|
|
[int]$FirstRunMinutes = 0
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
$RepoRoot = (Resolve-Path (Join-Path $PSScriptRoot "..")).Path
|
|
$Runner = Join-Path $RepoRoot "tools\run_torch_retrain.ps1"
|
|
if (-not (Test-Path $Runner)) {
|
|
throw "Runner not found: $Runner"
|
|
}
|
|
|
|
$LegacyTaskName = "TradeBot LSTM Retrainer"
|
|
if ($TaskName -ne $LegacyTaskName) {
|
|
$legacyTask = Get-ScheduledTask -TaskName $LegacyTaskName -ErrorAction SilentlyContinue
|
|
if ($legacyTask) {
|
|
Unregister-ScheduledTask -TaskName $LegacyTaskName -Confirm:$false
|
|
}
|
|
}
|
|
|
|
$actionArgs = "-NoProfile -ExecutionPolicy Bypass -File `"$Runner`""
|
|
if ($Symbols) {
|
|
$actionArgs += " -Symbols `"$Symbols`""
|
|
}
|
|
if ($Limit -gt 0) {
|
|
$actionArgs += " -Limit $Limit"
|
|
}
|
|
if ($Horizon -gt 0) {
|
|
$actionArgs += " -Horizon $Horizon"
|
|
}
|
|
if ($Horizons) {
|
|
$actionArgs += " -Horizons `"$Horizons`""
|
|
}
|
|
if ($Features) {
|
|
$actionArgs += " -Features `"$Features`""
|
|
}
|
|
if ($ContextSymbols) {
|
|
$actionArgs += " -ContextSymbols `"$ContextSymbols`""
|
|
}
|
|
$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument $actionArgs -WorkingDirectory $RepoRoot
|
|
$trigger = New-ScheduledTaskTrigger `
|
|
-Once `
|
|
-At (Get-Date).AddMinutes($(if ($FirstRunMinutes -gt 0) { $FirstRunMinutes } else { $EveryHours * 60 })) `
|
|
-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 PyTorch recurrent forecast parameters every $EveryHours hours." `
|
|
-Force | Out-Null
|
|
|
|
Write-Host "Registered scheduled task '$TaskName' every $EveryHours hours."
|