03-16-2018, 12:37 PM
Firstly, I agree with loki666 about gekkoga providing overfitted results - putting amazing gekkoga parameters into a live trader doesn't generally return anything near the backtest results. This is especially true if you have the target set to profit - setting it to score (and I've re written the score calculations for mine) can give more realistic parameters.
What I do find it useful for is when you have a lot of configuration parameters it will give you a good guide. From there you need to look at the strategy on tradingview or similar and adjust it to be more general.
As for your issue, gekkoga can't work with nested variables - each of the [bracketed] lines represents an array, and you have parameters of the same name inside different arrays. You need to go into the strategy , remove the arrays and give each parameter a unique name.
For instance you have
[EMAshort]
optInTimePeriod = 9
This will be passed as the array into the EMA constructor in the strategy file as this.settings.EMAshort
You need to alter the TOML file to give it a unique name outside an array - something like:
EMAShortOptInTimePeriod = 9
Then in the strategy where previously the settings.EMAshort array was passed in, now replace it with { optInTimePeriod : this.settings.EMAShortOptInTimePeriod }
It is a bit of a faff to swap it all over - the arrays make everything far neater and we need to make it messy to work with gekkoga!
What I do find it useful for is when you have a lot of configuration parameters it will give you a good guide. From there you need to look at the strategy on tradingview or similar and adjust it to be more general.
As for your issue, gekkoga can't work with nested variables - each of the [bracketed] lines represents an array, and you have parameters of the same name inside different arrays. You need to go into the strategy , remove the arrays and give each parameter a unique name.
For instance you have
[EMAshort]
optInTimePeriod = 9
This will be passed as the array into the EMA constructor in the strategy file as this.settings.EMAshort
You need to alter the TOML file to give it a unique name outside an array - something like:
EMAShortOptInTimePeriod = 9
Then in the strategy where previously the settings.EMAshort array was passed in, now replace it with { optInTimePeriod : this.settings.EMAShortOptInTimePeriod }
It is a bit of a faff to swap it all over - the arrays make everything far neater and we need to make it messy to work with gekkoga!