-
Notifications
You must be signed in to change notification settings - Fork 0
Feature: Visualize Indicators
[In development] specification for the development of the feature to visualize indicators while backtesting in Gekko
Create a feature to visualize market indicators which is robust enough so that:
- data visualizations can be implemented in indicators
- data visualizations can be implimented from within a strategy
- default support for plain
result.resultvalues in indicators where it has not been implemented - graphs can include multiple datasets and styles
- some properties such as colors are able to be overwritten by the strategy
When adding an indicator inside a strategy, the visualization properties can be passed into the addIndicator method.
this.addIndicator("myRSI","RSI",{Object config},{Object visualization})In the case where default settings are to be used, just a true boolean will enable the visualization. The default value for enableVisualization is false.
this.addIndicator("myRSI","RSI",{Object config},{Boolean enableVisualization})The default properties of the visualization, such as color, lineWidth, range, etc, can be over-written from within the strategy when creating the indicator.
this.addIndicator("myPPO","PPO",{Object config},{
histogram:{
colors:["#00ff00","#ff0000"]
}
})In the Vue frontend application, there is a chart data model at:
Root > App > Backtester > Result > ResultSummary > Chart
The chart object has a data property inside of it, which looks like this:
<chart>.data:{
candles:{},
indicatorResults:{},
report:{},
roundtrips:{},
trades:{}
}{
main:[{...Object dataset}], // contains indicators which are drawn on the main chart
subCharts:[{...Object subChart}] // contains sub charts which are drawn below in lister order
}Object subChart:{
title:"Stoch RSI",
name:"stochRSI",
datasets:[{...Object dataset}]
}Object dataset:{
type:"bars",
name:"histogram",
range:[],
colors:[],
data:[{...Object datapoint}]
}-
type: One of a set of compatible D3 graph types -
name: The name/identifier of the dataset -
range: Array of min/max values ie.[0,100], or for auto-scale set tofalse