Gunbot's AutoConfig jobs are typically executed based on a cron schedule you define. However, there are scenarios where you might want a particular job to run immediately once Gunbot starts, in addition to its regular schedule, or perhaps only on startup. This is achievable using the onStart parameter within the job's configuration.
Nearly every option that follows can be set without editing files by hand.
Click the โฎ (three-dots) menu โ AutoConfig, step through the wizard, and press Save; it will write a correct autoconfig.json for you.
The onStart Parameter Explainedโ
The onStart parameter is a boolean value (true or false) that you can include in the definition of any AutoConfig job. Its purpose is to trigger a one-time execution of the job as soon as Gunbot has finished its startup procedures and loaded the AutoConfig jobs.
"onStart": true: The job will execute once immediately after Gunbot starts. If the job also has ascheduledefined, it will subsequently run according to that schedule as well."onStart": false(or if the parameter is omitted): The job will only run based on itsschedule. It will not execute automatically at startup.
How to Configure onStartโ
You place the onStart parameter at the top level of the specific job's configuration within your autoconfig.json file.
Here is an example:
{
"initialPairScan": {
"enabled": true,
"type": "addPairs",
"onStart": true, // User setting: This job will run when Gunbot starts
"schedule": "0 0 * * *", // Also runs daily at midnight
"pairs": {
"exchange": "kraken",
"include": "-EUR"
},
"filters": {
"minDailyVolume": {
"filterType": "minVolume24h",
"minVolume": 50000
}
},
"strategy": "spotgriddynamic"
},
"regularOverridesUpdate": {
"enabled": true,
"type": "manageOverrides",
"onStart": false, // This job will NOT run on startup, only on schedule
"schedule": "*/15 * * * *", // Runs every 15 minutes
"pairs": {
"exchange": "kraken",
"include": "-EUR"
},
// ... other settings
}
}
In this setup:
initialPairScan: Because"onStart": true, this job will execute as soon as Gunbot is ready. It will perform an initial scan for EUR pairs on Kraken meeting the volume criteria. After this initial run, it will also run daily at midnight as per itsschedule.regularOverridesUpdate: With"onStart": false, this job will not run at startup. Its first execution will be at the next 15-minute interval according to itsschedule.
Use Cases for onStartโ
The onStart functionality is valuable in several situations:
- Initial State Setup: If you have AutoConfig jobs that set global variables (
setVariable) or per-pair variables (setPairVariable) to establish a baseline state, running these jobsonStartensures your system begins with the correct variable values. - Immediate Pair Scanning: For
addPairsjobs, usingonStartcan populate your trading pairs immediately after a restart, rather than waiting for the first scheduled run. This is useful if Gunbot was down for a while and you want to catch up on potential new pairs quickly. - Applying Default Configurations: A
manageOverridesjob withonStart: truecan ensure that all your active pairs have a specific set of baseline overrides applied as soon as Gunbot starts. - Data Collection Priming: If a
collectDatajob is set withonStart: true, it can fetch an initial set of ticker data immediately, which might be useful for other jobs or for ensuring data continuity after a restart. - "Run-Once" Jobs: If you need a job to perform a task only a single time (e.g., a one-off configuration cleanup or a specific variable initialization that shouldn't repeat), you can set
onStart: trueand give it aschedulethat is very infrequent or effectively in the past (e.g.,0 0 1 1 *for January 1st at midnight, if that date has passed for the year, or a cron for a specific past date). However, ensure theenabledflag is managed if it's truly a one-time task you don't want running even on the infrequent schedule. More robustly, for a true run-once-ever task, manual execution or a script might be better, butonStartcan serve for "run-once-per-startup."
onStart vs. scheduleโ
It's important to remember that onStart triggers an additional run if a schedule is also active.
- To run only on startup and never again automatically: Set
onStart: trueand use aschedulethat will not trigger frequently or is for a past time (e.g.,0 0 1 1 0for a specific past Sunday). Be cautious with this approach, as a very old cron might eventually re-trigger in a future year if not specific enough. A more common pattern for "run at startup then on a normal schedule" is simply usingonStart: truewith your regular cron. - To run on startup and on a regular schedule: Set
onStart: trueand define your desired cron expression inschedule.
The onStart parameter provides a convenient way to ensure specific AutoConfig tasks are executed promptly when Gunbot initializes. This helps in establishing a consistent operational state, performing timely initial actions, and ensuring your automated strategies are primed and ready without delay. When designing your AutoConfig jobs, consider which tasks would benefit from an immediate execution at startup and utilize the onStart parameter accordingly.