Python copy-trading script to copy Futures positions between Kraken acounts.
- Fork this repository
- Add the required secrets
- Enable GitHub Actions
- Add external scheduling
- KRAKEN_SOURCE_KEY
- KRAKEN_SOURCE_SECRET
- KRAKEN_YOUR_KEY
- KRAKEN_YOUR_SECRET
Add these in: Settings > Secrets and variables > Actions > New repository secret
Enable Actions at repository level:
- Click the Settings tab
- In the left sidebar, click Actions > General
- Under Actions permissions, select: Allow all actions and reusable workflows. Click Save
- Under Workflow permissions, select: Read repository contents. Click Save
Enable Actions for a fork:
- Click the Actions tab
- Click “I understand my workflows, go ahead and enable them”
Test via "Run workflow"
This project does not use GitHub’s internal scheduler.
All scheduled execution is done via cron-job.org, which reliably triggers the workflow using workflow_dispatch.
Why cron-job.org?
- GitHub’s internal scheduler can pause after repository inactivity (especially in private forks)
- cron-job.org runs indefinitely and predictably
- You can fully control start / stop without touching GitHub config
You need a token that allows cron-job.org to trigger the workflow.
- GitHub → Settings
- Developer settings
- Personal access tokens
- Fine-grained tokens
- Generate new token
Configure the token as follows:
- Repository access: Only select this repository (your fork)
- Permissions:
- Actions → Read and write
- Expiration: Choose No expiration if you want it to keep running
Copy the token immediately — you will not see it again.
- Log in to https://cron-job.org
- Click Create cronjob
Basic settings
- Title:
GitHub – run workflow - URL:
https://api.github.com/repos/<OWNER>/<REPO>/actions/workflows/run.yml/dispatches - Replace:
<OWNER>with your GitHub username<REPO>with your repository name- Execute: every 5 minutes Advanced settings
- Headers:
- Accept: application/vnd.github+json
- Authorization: Bearer YOUR_GITHUB_TOKEN
- Content-Type: application/json
- Request method: POST
- Request body:
{"ref":"main"}
- Pause: Disable the cron-job.org job
- Resume: Re-enable it
No changes in GitHub are required to stop execution.
- Click "Sync fork" in GitHub