mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-13 23:16:45 +00:00
backtester: custom strategy plugins (#989)
* Adds custom strategy * docs and structure * docs * rn * Documents plugins, adds custom strat config * mini fixes. Fleshes strategy test * docgen * Updates plugins to allow for multiple strategies to be loaded * docs * docs regen * fix doc accuracy * why did I add the word custom?
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
{{define "backtester plugins" -}}
|
||||
{{template "backtester-header" .}}
|
||||
## {{.CapitalName}} package overview
|
||||
|
||||
Golang Plugins are supported by the GoCryptoTrader Backtester. At present, only custom strategies are supported.
|
||||
|
||||
Please read the Golang documentation on [plugins](https://golang.org/pkg/plugin/) for more information.
|
||||
|
||||
## Building Golang Plugins
|
||||
|
||||
### Windows
|
||||
Plugin support is not yet available for Windows. However, you can still build via WSL. See below for instructions on a basic setup for WSL. Once completed, follow the instructions for Linux.
|
||||
#### WSL Setup
|
||||
The following is a basic setup for WSL: [here](https://pureinfotech.com/install-wsl-windows-11/)
|
||||
|
||||
### Linux, macOS & WSL
|
||||
A plugin is a Go main package with exported functions and variables that has been built with:
|
||||
|
||||
```bash
|
||||
go build -buildmode=plugin
|
||||
```
|
||||
|
||||
This outputs a file named `{{.Name}}.so` which can be loaded by the backtester. At present, only custom strategies can be loaded. See [here](/strategies/example/README.md) for more information on building custom strategies via plugins.
|
||||
|
||||
You must ensure that the plugin is built with the same version of code as the GoCryptoTrader Backtester. Otherwise the plugin will refuse to load.
|
||||
|
||||
|
||||
|
||||
#### Installing Golang in WSL
|
||||
See the following for instructions on installing Golang in WSL: [here](https://ao.ms/how-to-install-golang-on-wsl-wsl2/)
|
||||
|
||||
|
||||
### Please click GoDocs chevron above to view current GoDoc information for this package
|
||||
{{template "contributions"}}
|
||||
{{template "donations" .}}
|
||||
{{end}}
|
||||
@@ -0,0 +1,37 @@
|
||||
{{define "backtester plugins strategies example" -}}
|
||||
{{template "backtester-header" .}}
|
||||
## {{.CapitalName}} package overview
|
||||
|
||||
This is a custom strategy for the GoCryptoTrader Backtester. It is a simple example of a strategy that trades a pair of assets and is used to highlight how strategies can be loaded from external sources.
|
||||
|
||||
### Designing a strategy
|
||||
- File must contain `main` package.
|
||||
- Custom strategy plugins must adhere to the strategy.Handler interface. See the [strategy.Handler interface documentation](./backtester/eventhandlers/strategies/README.md) for more information.
|
||||
- Must contain function `func GetStrategies() []strategy.Handler` to return a slice of implemented `strategy.Handler`.
|
||||
- If only using one custom strategy, can simply `return []strategy.Handler{&customStrategy{}}`.
|
||||
|
||||
### Building
|
||||
See [here](./backtester/plugins/README.md) for details on how to build the plugin file.
|
||||
|
||||
### Running
|
||||
Plugins can only be loaded via Linux, macOS and WSL. Windows itself is not supported.
|
||||
|
||||
To run this strategy you will need to use the following flags when running the GoCryptoTrader Backtester:
|
||||
|
||||
```bash
|
||||
./backtester -strategypluginpath="path/to/strategy/example.so"
|
||||
```
|
||||
|
||||
To run this specific example strategy, use:
|
||||
|
||||
```bash
|
||||
./backtester --strategypluginpath="./plugins/strategies/example/example.so"
|
||||
```
|
||||
|
||||
Upon startup, the GoCryptoTrader Backtester will load the strategy and run it for all events.
|
||||
|
||||
|
||||
### Please click GoDocs chevron above to view current GoDoc information for this package
|
||||
{{template "contributions"}}
|
||||
{{template "donations" .}}
|
||||
{{end}}
|
||||
@@ -0,0 +1,30 @@
|
||||
{{define "backtester plugins strategies" -}}
|
||||
{{template "backtester-header" .}}
|
||||
## {{.CapitalName}} package overview
|
||||
|
||||
### Designing a strategy
|
||||
- File must contain `main` package
|
||||
- Custom strategy plugins must adhere to the strategy.Handler interface. See the [strategy.Handler interface documentation](./backtester/eventhandlers/strategies/README.md) for more information.
|
||||
- Must contain function `func GetStrategies() []strategy.Handler` to return a slice of implemented `strategy.Handler`.
|
||||
- If only using one custom strategy, can simply `return []strategy.Handler{&customStrategy{}}`.
|
||||
|
||||
|
||||
### Building
|
||||
See [here](./backtester/plugins/README.md) for details on how to build the plugin file.
|
||||
|
||||
### Running
|
||||
Plugins can only be loaded via Linux, macOS and WSL. Windows itself is not supported.
|
||||
|
||||
To run a strategy you will need to use the following flags when running the GoCryptoTrader Backtester:
|
||||
|
||||
```bash
|
||||
./backtester -strategypluginpath="path/to/strategy/example.so"
|
||||
```
|
||||
|
||||
Upon startup, the GoCryptoTrader Backtester will load the strategy and run it for all events.
|
||||
|
||||
|
||||
### Please click GoDocs chevron above to view current GoDoc information for this package
|
||||
{{template "contributions"}}
|
||||
{{template "donations" .}}
|
||||
{{end}}
|
||||
Reference in New Issue
Block a user