List historic backtest results

This commit is contained in:
Matthias 2021-01-14 08:04:28 +01:00
parent 8426475ea5
commit 2cc7c88975
3 changed files with 22 additions and 0 deletions

View File

@ -195,6 +195,11 @@ export default {
},
updateBacktestResult(state, backtestResult: BacktestResult) {
state.backtestResult = backtestResult;
// TODO: Properly identify duplicates to avoid pushing the same multiple times
Object.entries(backtestResult.strategy).forEach(([key, strat]) => {
const xxx = `${key}_${strat.total_trades}_${strat.profit_total.toFixed(3)}`;
state.backtestHistory[xxx] = strat;
});
},
},
actions: {

View File

@ -44,6 +44,7 @@ export interface FtbotStateType {
currentLocks?: LockResponse;
backtestRunning: boolean;
backtestResult?: BacktestResult;
backtestHistory: Record<string, BacktestResult>;
}
const state: FtbotStateType = {
version: '',
@ -75,6 +76,7 @@ const state: FtbotStateType = {
// backtesting
backtestRunning: false,
backtestResult: undefined,
backtestHistory: {},
};
export default state;

View File

@ -144,6 +144,16 @@
</div>
</div>
<div v-if="hasBacktestResult && btFormMode == 'results'" class="text-center w-100 mt-2">
<div class="d-flex">
<b-list-group-item
v-for="[key, strat] in Object.entries(backtestHistory)"
:key="key"
button
class="d-flex justify-content-between align-items-center py-1"
>
{{ key }} {{ strat.total_trades }} {{ formatPercent(strat.profit_total) }}
</b-list-group-item>
</div>
<BacktestResultView :strategy="strategy" :backtest-result="selectedBacktestResult" />
</div>
<div
@ -204,6 +214,7 @@ import {
} from '@/types';
import { getCustomPlotConfig, getPlotConfigName } from '@/shared/storage';
import { formatPercent } from '@/shared/formatters';
const ftbot = namespace('ftbot');
@Component({
@ -261,6 +272,8 @@ export default class Backtesting extends Vue {
@ftbot.State backtestResult!: BacktestResult;
@ftbot.State backtestHistory!: StrategyBacktestResult[];
@ftbot.State history;
// eslint-disable-next-line @typescript-eslint/no-unused-vars
@ -273,6 +286,8 @@ export default class Backtesting extends Vue {
@ftbot.Action removeBacktest!: () => void;
formatPercent = formatPercent;
get canRunBacktest() {
// TODO: Analyze if parameters and strategy has been selected.
return true;