Add freqAI Model selection to backtesting

This commit is contained in:
Matthias 2022-12-20 07:13:08 +01:00
parent 1a686fab57
commit 1579200bc8
5 changed files with 77 additions and 0 deletions

View File

@ -0,0 +1,43 @@
<template>
<div>
<div class="w-100 d-flex">
<b-form-select
id="freqaiModel-select"
v-model="locFreqaiModel"
:options="botStore.activeBot.freqaiModelList"
>
</b-form-select>
<div class="ms-2">
<b-button @click="botStore.activeBot.getFreqAIModelList">&#x21bb;</b-button>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { useBotStore } from '@/stores/ftbotwrapper';
import { computed, onMounted } from 'vue';
const props = defineProps({
modelValue: { type: String, required: true },
});
const emit = defineEmits(['update:modelValue']);
const botStore = useBotStore();
const locFreqaiModel = computed({
get() {
return props.modelValue;
},
set(freqaiModel: string) {
emit('update:modelValue', freqaiModel);
},
});
onMounted(() => {
if (botStore.activeBot.freqaiModelList.length === 0) {
botStore.activeBot.getFreqAIModelList();
}
});
</script>
<style></style>

View File

@ -41,6 +41,7 @@ import { showAlert } from './alerts';
import { useWebSocket } from '@vueuse/core';
import { FTWsMessage, FtWsMessageTypes } from '@/types/wsMessageTypes';
import { showNotification } from '@/shared/notifications';
import { FreqAIModelListResult } from '../types/types';
export function createBotSubStore(botId: string, botName: string) {
const userService = useUserService(botId);
@ -81,6 +82,7 @@ export function createBotSubStore(botId: string, botName: string) {
historyStatus: LoadingStatus.loading,
strategyPlotConfig: undefined as PlotConfig | undefined,
strategyList: [] as string[],
freqaiModelList: [] as string[],
strategy: {} as StrategyResult,
pairlist: [] as string[],
currentLocks: undefined as LockResponse | undefined,
@ -432,6 +434,16 @@ export function createBotSubStore(botId: string, botName: string) {
return Promise.reject(error);
}
},
async getFreqAIModelList() {
try {
const { data } = await api.get<FreqAIModelListResult>('/freqaimodels');
this.freqaiModelList = data.freqaimodels;
return Promise.resolve(data);
} catch (error) {
console.error(error);
return Promise.reject(error);
}
},
async getAvailablePairs(payload: AvailablePairPayload) {
try {
const { data } = await api.get<AvailablePairResult>('/available_pairs', {

View File

@ -11,6 +11,7 @@ export interface BacktestPayload {
stake_amount?: string;
dry_run_wallet?: number;
enable_protections?: boolean;
freqaimodel?: string;
}
export interface PairResult {

View File

@ -175,6 +175,10 @@ export interface StrategyResult {
code: string;
}
export interface FreqAIModelListResult {
freqaimodels: string[];
}
export interface AvailablePairPayload {
timeframe?: string;
stake_currency?: string;

View File

@ -194,6 +194,17 @@
v-model="enableProtections"
></b-form-checkbox>
</b-form-group>
<template v-if="botStore.activeBot.botApiVersion >= 2.22">
<b-form-group
label-cols-sm="5"
label="Enable FreqAI:"
label-align-sm="right"
label-for="enable-freqai"
>
<b-form-checkbox id="enable-freqai" v-model="enableFreqAI"></b-form-checkbox>
</b-form-group>
<FreqaiModelSelect v-if="enableFreqAI" v-model="freqaiModel"></FreqaiModelSelect>
</template>
<!-- <b-form-group label-cols-sm="5" label="Fee:" label-align-sm="right" label-for="fee">
<b-form-input
@ -277,6 +288,7 @@ import TimeRangeSelect from '@/components/ftbot/TimeRangeSelect.vue';
import BacktestResultView from '@/components/ftbot/BacktestResultView.vue';
import BacktestResultSelect from '@/components/ftbot/BacktestResultSelect.vue';
import StrategySelect from '@/components/ftbot/StrategySelect.vue';
import FreqaiModelSelect from '@/components/ftbot/FreqaiModelSelect.vue';
import TimeframeSelect from '@/components/ftbot/TimeframeSelect.vue';
import BacktestHistoryLoad from '@/components/ftbot/BacktestHistoryLoad.vue';
import BacktestGraphsView from '@/components/ftbot/BacktestGraphsView.vue';
@ -309,6 +321,8 @@ const selectedDetailTimeframe = ref('');
const timerange = ref('');
const showLeftBar = ref(false);
const enableProtections = ref(false);
const enableFreqAI = ref(false);
const freqaiModel = ref('');
const stakeAmountUnlimited = ref(false);
const maxOpenTrades = ref('');
const stakeAmount = ref('');
@ -367,6 +381,9 @@ const clickBacktest = () => {
// eslint-disable-next-line @typescript-eslint/camelcase
btPayload.timeframe_detail = selectedDetailTimeframe.value;
}
if (enableFreqAI.value) {
btPayload.freqaimodel = freqaiModel.value;
}
botStore.activeBot.startBacktest(btPayload);
};