mirror of
https://github.com/freqtrade/frequi.git
synced 2024-09-20 17:41:08 +00:00
chore: remaining batch of bootstrap-vue PascalCase
This commit is contained in:
parent
97b6cc4211
commit
4cd553d300
|
@ -35,14 +35,14 @@
|
||||||
>Blacklist</label
|
>Blacklist</label
|
||||||
>
|
>
|
||||||
<div class="float-end d-flex d-flex-columns pe-1">
|
<div class="float-end d-flex d-flex-columns pe-1">
|
||||||
<b-button
|
<BButton
|
||||||
id="blacklist-add-btn"
|
id="blacklist-add-btn"
|
||||||
class="me-1"
|
class="me-1"
|
||||||
:class="botStore.activeBot.botApiVersion >= 1.12 ? 'col-6' : ''"
|
:class="botStore.activeBot.botApiVersion >= 1.12 ? 'col-6' : ''"
|
||||||
size="sm"
|
size="sm"
|
||||||
><i-mdi-plus-box-outline />
|
><i-mdi-plus-box-outline />
|
||||||
</b-button>
|
</BButton>
|
||||||
<b-button
|
<BButton
|
||||||
v-if="botStore.activeBot.botApiVersion >= 1.12"
|
v-if="botStore.activeBot.botApiVersion >= 1.12"
|
||||||
size="sm"
|
size="sm"
|
||||||
class="col-6"
|
class="col-6"
|
||||||
|
@ -51,7 +51,7 @@
|
||||||
@click="deletePairs"
|
@click="deletePairs"
|
||||||
>
|
>
|
||||||
<i-mdi-delete />
|
<i-mdi-delete />
|
||||||
</b-button>
|
</BButton>
|
||||||
</div>
|
</div>
|
||||||
<BPopover
|
<BPopover
|
||||||
title="Add to blacklist"
|
title="Add to blacklist"
|
||||||
|
@ -62,17 +62,17 @@
|
||||||
>
|
>
|
||||||
<form ref="form" @submit.prevent="addBlacklistPair">
|
<form ref="form" @submit.prevent="addBlacklistPair">
|
||||||
<div>
|
<div>
|
||||||
<b-form-group label-cols="2" label="Pair" label-for="pair-input">
|
<BFormGroup label-cols="2" label="Pair" label-for="pair-input">
|
||||||
<b-form-input
|
<BFormInput
|
||||||
id="pair-input"
|
id="pair-input"
|
||||||
v-model="newblacklistpair"
|
v-model="newblacklistpair"
|
||||||
required
|
required
|
||||||
autofocus
|
autofocus
|
||||||
></b-form-input>
|
></BFormInput>
|
||||||
</b-form-group>
|
</BFormGroup>
|
||||||
<b-button id="blacklist-submit" class="float-end mb-2" size="sm" type="submit">
|
<BButton id="blacklist-submit" class="float-end mb-2" size="sm" type="submit">
|
||||||
Add
|
Add
|
||||||
</b-button>
|
</BButton>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</BPopover>
|
</BPopover>
|
||||||
|
|
|
@ -2,23 +2,23 @@
|
||||||
<div>
|
<div>
|
||||||
<div class="mb-2">
|
<div class="mb-2">
|
||||||
<label class="me-auto h3">Pair Locks</label>
|
<label class="me-auto h3">Pair Locks</label>
|
||||||
<b-button class="float-end" size="sm" @click="botStore.activeBot.getLocks">
|
<BButton class="float-end" size="sm" @click="botStore.activeBot.getLocks">
|
||||||
<i-mdi-refresh />
|
<i-mdi-refresh />
|
||||||
</b-button>
|
</BButton>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<b-table class="table-sm" :items="botStore.activeBot.activeLocks" :fields="tableFields">
|
<BTable class="table-sm" :items="botStore.activeBot.activeLocks" :fields="tableFields">
|
||||||
<template #cell(actions)="row">
|
<template #cell(actions)="row">
|
||||||
<b-button
|
<BButton
|
||||||
class="btn-xs ms-1"
|
class="btn-xs ms-1"
|
||||||
size="sm"
|
size="sm"
|
||||||
title="Delete trade"
|
title="Delete trade"
|
||||||
@click="removePairLock(row.item as unknown as Lock)"
|
@click="removePairLock(row.item as unknown as Lock)"
|
||||||
>
|
>
|
||||||
<i-mdi-delete />
|
<i-mdi-delete />
|
||||||
</b-button>
|
</BButton>
|
||||||
</template>
|
</template>
|
||||||
</b-table>
|
</BTable>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<b-form-group
|
<BFormGroup
|
||||||
label-for="trade-filter"
|
label-for="trade-filter"
|
||||||
class="mb-2 ms-2"
|
class="mb-2 ms-2"
|
||||||
:class="{
|
:class="{
|
||||||
|
@ -8,10 +8,10 @@
|
||||||
'me-2': !backtestMode,
|
'me-2': !backtestMode,
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<b-form-input id="trade-filter" v-model="filterText" type="text" placeholder="Filter" />
|
<BFormInput id="trade-filter" v-model="filterText" type="text" placeholder="Filter" />
|
||||||
</b-form-group>
|
</BFormGroup>
|
||||||
<b-list-group>
|
<BListGroup>
|
||||||
<b-list-group-item
|
<BListGroupItem
|
||||||
v-for="comb in combinedPairList"
|
v-for="comb in combinedPairList"
|
||||||
:key="comb.pair"
|
:key="comb.pair"
|
||||||
button
|
button
|
||||||
|
@ -31,8 +31,8 @@
|
||||||
:profit-ratio="comb.profit"
|
:profit-ratio="comb.profit"
|
||||||
:stake-currency="botStore.activeBot.stakeCurrency"
|
:stake-currency="botStore.activeBot.stakeCurrency"
|
||||||
/>
|
/>
|
||||||
</b-list-group-item>
|
</BListGroupItem>
|
||||||
</b-list-group>
|
</BListGroup>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -1,26 +1,26 @@
|
||||||
<template>
|
<template>
|
||||||
<b-form-group label-cols="4" label-size="md" class="pb-1 text-start" :description="param.help">
|
<BFormGroup label-cols="4" label-size="md" class="pb-1 text-start" :description="param.help">
|
||||||
<b-form-input
|
<BFormInput
|
||||||
v-if="param.type === PairlistParamType.string || param.type === PairlistParamType.number"
|
v-if="param.type === PairlistParamType.string || param.type === PairlistParamType.number"
|
||||||
v-model="paramValue"
|
v-model="paramValue"
|
||||||
size="sm"
|
size="sm"
|
||||||
></b-form-input>
|
></BFormInput>
|
||||||
|
|
||||||
<b-form-checkbox
|
<BFormCheckbox
|
||||||
v-if="param.type === PairlistParamType.boolean"
|
v-if="param.type === PairlistParamType.boolean"
|
||||||
v-model="paramValue"
|
v-model="paramValue"
|
||||||
></b-form-checkbox>
|
></BFormCheckbox>
|
||||||
|
|
||||||
<b-form-select
|
<BFormSelect
|
||||||
v-if="param.type === PairlistParamType.option"
|
v-if="param.type === PairlistParamType.option"
|
||||||
v-model="paramValue"
|
v-model="paramValue"
|
||||||
:options="param.options"
|
:options="param.options"
|
||||||
></b-form-select>
|
></BFormSelect>
|
||||||
|
|
||||||
<template #label>
|
<template #label>
|
||||||
<label> {{ param.description }}</label>
|
<label> {{ param.description }}</label>
|
||||||
</template>
|
</template>
|
||||||
</b-form-group>
|
</BFormGroup>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
<div>
|
<div>
|
||||||
<div v-if="whitelist.length > 0" class="d-flex flex-column flex-lg-row px-2">
|
<div v-if="whitelist.length > 0" class="d-flex flex-column flex-lg-row px-2">
|
||||||
<!-- TODO: look into flexbox solution to have overflow scroll? -->
|
<!-- TODO: look into flexbox solution to have overflow scroll? -->
|
||||||
<b-list-group class="col-12 col-md-2 overflow-auto" style="height: calc(100vh - 135px)">
|
<BListGroup class="col-12 col-md-2 overflow-auto" style="height: calc(100vh - 135px)">
|
||||||
<b-list-group-item
|
<BListGroupItem
|
||||||
v-for="(pair, i) in whitelist"
|
v-for="(pair, i) in whitelist"
|
||||||
:key="pair.pair"
|
:key="pair.pair"
|
||||||
button
|
button
|
||||||
|
@ -12,10 +12,10 @@
|
||||||
:title="pair.pair"
|
:title="pair.pair"
|
||||||
@click="botStore.activeBot.selectedPair = pair.pair"
|
@click="botStore.activeBot.selectedPair = pair.pair"
|
||||||
>
|
>
|
||||||
<b-form-checkbox v-model="whitelist[i].enabled"></b-form-checkbox>
|
<BFormCheckbox v-model="whitelist[i].enabled"></BFormCheckbox>
|
||||||
{{ pair.pair }}
|
{{ pair.pair }}
|
||||||
</b-list-group-item>
|
</BListGroupItem>
|
||||||
</b-list-group>
|
</BListGroup>
|
||||||
<div class="flex-fill">
|
<div class="flex-fill">
|
||||||
<ChartView />
|
<ChartView />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="d-flex px-3 mb-3 gap-3 flex-column flex-lg-row">
|
<div class="d-flex px-3 mb-3 gap-3 flex-column flex-lg-row">
|
||||||
<b-list-group ref="availablePairlistsEl" class="available-pairlists">
|
<BListGroup ref="availablePairlistsEl" class="available-pairlists">
|
||||||
<b-list-group-item
|
<BListGroupItem
|
||||||
v-for="pairlist in availablePairlists"
|
v-for="pairlist in availablePairlists"
|
||||||
:key="pairlist.name"
|
:key="pairlist.name"
|
||||||
:class="{
|
:class="{
|
||||||
|
@ -13,7 +13,7 @@
|
||||||
<span class="fw-bold">{{ pairlist.name }}</span>
|
<span class="fw-bold">{{ pairlist.name }}</span>
|
||||||
<span class="text-small">{{ pairlist.description }}</span>
|
<span class="text-small">{{ pairlist.description }}</span>
|
||||||
</div>
|
</div>
|
||||||
<b-button
|
<BButton
|
||||||
class="p-0 add-pairlist"
|
class="p-0 add-pairlist"
|
||||||
style="border: none"
|
style="border: none"
|
||||||
variant="outline-light"
|
variant="outline-light"
|
||||||
|
@ -21,21 +21,21 @@
|
||||||
@click="pairlistStore.addToConfig(pairlist, pairlistStore.config.pairlists.length)"
|
@click="pairlistStore.addToConfig(pairlist, pairlistStore.config.pairlists.length)"
|
||||||
>
|
>
|
||||||
<i-mdi-arrow-right-bold-box-outline class="fs-4" />
|
<i-mdi-arrow-right-bold-box-outline class="fs-4" />
|
||||||
</b-button>
|
</BButton>
|
||||||
</b-list-group-item>
|
</BListGroupItem>
|
||||||
</b-list-group>
|
</BListGroup>
|
||||||
<div class="d-flex flex-column flex-fill">
|
<div class="d-flex flex-column flex-fill">
|
||||||
<PairlistConfigActions />
|
<PairlistConfigActions />
|
||||||
<div class="border rounded-1 p-2 mb-2">
|
<div class="border rounded-1 p-2 mb-2">
|
||||||
<div class="d-flex align-items-center gap-2 my-2">
|
<div class="d-flex align-items-center gap-2 my-2">
|
||||||
<span class="col-auto">Stake currency: </span>
|
<span class="col-auto">Stake currency: </span>
|
||||||
<b-form-input v-model="pairlistStore.stakeCurrency" size="sm" />
|
<BFormInput v-model="pairlistStore.stakeCurrency" size="sm" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mb-2 border rounded-1 p-2 text-start">
|
<div class="mb-2 border rounded-1 p-2 text-start">
|
||||||
<b-form-checkbox v-model="pairlistStore.customExchange" class="mb-2">
|
<BFormCheckbox v-model="pairlistStore.customExchange" class="mb-2">
|
||||||
Custom Exchange
|
Custom Exchange
|
||||||
</b-form-checkbox>
|
</BFormCheckbox>
|
||||||
<ExchangeSelect
|
<ExchangeSelect
|
||||||
v-if="pairlistStore.customExchange"
|
v-if="pairlistStore.customExchange"
|
||||||
v-model="pairlistStore.selectedExchange"
|
v-model="pairlistStore.selectedExchange"
|
||||||
|
@ -43,7 +43,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<PairlistConfigBlacklist />
|
<PairlistConfigBlacklist />
|
||||||
<b-alert
|
<BAlert
|
||||||
:model-value="
|
:model-value="
|
||||||
pairlistStore.config.pairlists.length > 0 && !pairlistStore.firstPairlistIsGenerator
|
pairlistStore.config.pairlists.length > 0 && !pairlistStore.firstPairlistIsGenerator
|
||||||
"
|
"
|
||||||
|
@ -51,7 +51,7 @@
|
||||||
>
|
>
|
||||||
First entry in the pairlist must be a Generating pairlist, like StaticPairList or
|
First entry in the pairlist must be a Generating pairlist, like StaticPairList or
|
||||||
VolumePairList.
|
VolumePairList.
|
||||||
</b-alert>
|
</BAlert>
|
||||||
<div
|
<div
|
||||||
ref="pairlistConfigsEl"
|
ref="pairlistConfigsEl"
|
||||||
class="d-flex flex-column flex-grow-1 position-relative border rounded-1 p-1"
|
class="d-flex flex-column flex-grow-1 position-relative border rounded-1 p-1"
|
||||||
|
@ -67,12 +67,12 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="d-flex flex-column col-12 col-lg-3">
|
<div class="d-flex flex-column col-12 col-lg-3">
|
||||||
<b-form-radio-group v-model="selectedView" class="mb-2" size="sm" buttons>
|
<BFormRadioGroup v-model="selectedView" class="mb-2" size="sm" buttons>
|
||||||
<b-form-radio button value="Config"> Config</b-form-radio>
|
<BFormRadio button value="Config"> Config</BFormRadio>
|
||||||
<b-form-radio button value="Results" :disabled="pairlistStore.whitelist.length === 0">
|
<BFormRadio button value="Results" :disabled="pairlistStore.whitelist.length === 0">
|
||||||
Results</b-form-radio
|
Results</BFormRadio
|
||||||
>
|
>
|
||||||
</b-form-radio-group>
|
</BFormRadioGroup>
|
||||||
<div class="position-relative flex-fill overflow-auto">
|
<div class="position-relative flex-fill overflow-auto">
|
||||||
<CopyableTextfield
|
<CopyableTextfield
|
||||||
v-if="selectedView === 'Config'"
|
v-if="selectedView === 'Config'"
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
<div>
|
<div>
|
||||||
<div class="mb-2">
|
<div class="mb-2">
|
||||||
<h3 class="me-auto d-inline">{{ hasWeekly ? 'Period' : 'Daily' }} Breakdown</h3>
|
<h3 class="me-auto d-inline">{{ hasWeekly ? 'Period' : 'Daily' }} Breakdown</h3>
|
||||||
<b-button class="float-end" size="sm" @click="refreshSummary">
|
<BButton class="float-end" size="sm" @click="refreshSummary">
|
||||||
<i-mdi-refresh />
|
<i-mdi-refresh />
|
||||||
</b-button>
|
</BButton>
|
||||||
</div>
|
</div>
|
||||||
<b-form-radio-group
|
<BFormRadioGroup
|
||||||
v-if="hasWeekly"
|
v-if="hasWeekly"
|
||||||
id="order-direction"
|
id="order-direction"
|
||||||
v-model="periodicBreakdownPeriod"
|
v-model="periodicBreakdownPeriod"
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
style="min-width: 10em"
|
style="min-width: 10em"
|
||||||
button-variant="outline-primary"
|
button-variant="outline-primary"
|
||||||
@change="refreshSummary"
|
@change="refreshSummary"
|
||||||
></b-form-radio-group>
|
></BFormRadioGroup>
|
||||||
|
|
||||||
<div class="ps-1">
|
<div class="ps-1">
|
||||||
<TimePeriodChart
|
<TimePeriodChart
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<b-table class="table-sm" :items="selectedStats.data" :fields="dailyFields"> </b-table>
|
<BTable class="table-sm" :items="selectedStats.data" :fields="dailyFields"> </BTable>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="d-flex align-items-center ms-2">
|
<div class="d-flex align-items-center ms-2">
|
||||||
<b-form-checkbox
|
<BFormCheckbox
|
||||||
v-model="autoRefreshLoc"
|
v-model="autoRefreshLoc"
|
||||||
class="float-end my-auto mt-1"
|
class="float-end my-auto mt-1"
|
||||||
title="AutoRefresh"
|
title="AutoRefresh"
|
||||||
></b-form-checkbox>
|
></BFormCheckbox>
|
||||||
<b-button
|
<BButton
|
||||||
class="m-1"
|
class="m-1"
|
||||||
variant="secondary"
|
variant="secondary"
|
||||||
size="sm"
|
size="sm"
|
||||||
|
@ -13,7 +13,7 @@
|
||||||
@click="botStore.allRefreshFull"
|
@click="botStore.allRefreshFull"
|
||||||
>
|
>
|
||||||
<i-mdi-refresh />
|
<i-mdi-refresh />
|
||||||
</b-button>
|
</BButton>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div class="w-100 d-flex">
|
<div class="w-100 d-flex">
|
||||||
<b-form-select
|
<BFormSelect
|
||||||
id="strategy-select"
|
id="strategy-select"
|
||||||
v-model="locStrategy"
|
v-model="locStrategy"
|
||||||
:options="botStore.activeBot.strategyList"
|
:options="botStore.activeBot.strategyList"
|
||||||
>
|
>
|
||||||
</b-form-select>
|
</BFormSelect>
|
||||||
<div class="ms-1">
|
<div class="ms-1">
|
||||||
<b-button @click="botStore.activeBot.getStrategyList">
|
<BButton @click="botStore.activeBot.getStrategyList">
|
||||||
<i-mdi-refresh />
|
<i-mdi-refresh />
|
||||||
</b-button>
|
</BButton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
<template>
|
<template>
|
||||||
<b-form-select
|
<BFormSelect
|
||||||
v-model="selectedTimeframe"
|
v-model="selectedTimeframe"
|
||||||
placeholder="Use strategy default"
|
placeholder="Use strategy default"
|
||||||
:options="availableTimeframes"
|
:options="availableTimeframes"
|
||||||
@change="emitSelectedTimeframe"
|
@change="emitSelectedTimeframe"
|
||||||
></b-form-select>
|
></BFormSelect>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="d-flex flex-column">
|
<div class="d-flex flex-column">
|
||||||
<b-button
|
<BButton
|
||||||
v-if="botApiVersion <= 1.1"
|
v-if="botApiVersion <= 1.1"
|
||||||
class="btn-xs text-start"
|
class="btn-xs text-start"
|
||||||
size="sm"
|
size="sm"
|
||||||
|
@ -8,8 +8,8 @@
|
||||||
@click="$emit('forceExit', trade)"
|
@click="$emit('forceExit', trade)"
|
||||||
>
|
>
|
||||||
<i-mdi-close-box class="me-1" />Forceexit
|
<i-mdi-close-box class="me-1" />Forceexit
|
||||||
</b-button>
|
</BButton>
|
||||||
<b-button
|
<BButton
|
||||||
v-if="botApiVersion > 1.1"
|
v-if="botApiVersion > 1.1"
|
||||||
class="btn-xs text-start"
|
class="btn-xs text-start"
|
||||||
size="sm"
|
size="sm"
|
||||||
|
@ -17,8 +17,8 @@
|
||||||
@click="$emit('forceExit', trade, 'limit')"
|
@click="$emit('forceExit', trade, 'limit')"
|
||||||
>
|
>
|
||||||
<i-mdi-close-box class="me-1" />Forceexit limit
|
<i-mdi-close-box class="me-1" />Forceexit limit
|
||||||
</b-button>
|
</BButton>
|
||||||
<b-button
|
<BButton
|
||||||
v-if="botApiVersion > 1.1"
|
v-if="botApiVersion > 1.1"
|
||||||
class="btn-xs text-start mt-1"
|
class="btn-xs text-start mt-1"
|
||||||
size="sm"
|
size="sm"
|
||||||
|
@ -26,8 +26,8 @@
|
||||||
@click="$emit('forceExit', trade, 'market')"
|
@click="$emit('forceExit', trade, 'market')"
|
||||||
>
|
>
|
||||||
<i-mdi-close-box class="me-1" />Forceexit market
|
<i-mdi-close-box class="me-1" />Forceexit market
|
||||||
</b-button>
|
</BButton>
|
||||||
<b-button
|
<BButton
|
||||||
v-if="botApiVersion > 2.16"
|
v-if="botApiVersion > 2.16"
|
||||||
class="btn-xs text-start mt-1"
|
class="btn-xs text-start mt-1"
|
||||||
size="sm"
|
size="sm"
|
||||||
|
@ -35,8 +35,8 @@
|
||||||
@click="$emit('forceExitPartial', trade)"
|
@click="$emit('forceExitPartial', trade)"
|
||||||
>
|
>
|
||||||
<i-mdi-close-box-multiple class="me-1" />Forceexit partial
|
<i-mdi-close-box-multiple class="me-1" />Forceexit partial
|
||||||
</b-button>
|
</BButton>
|
||||||
<b-button
|
<BButton
|
||||||
v-if="botApiVersion >= 2.24 && (trade.open_order_id || trade.has_open_orders)"
|
v-if="botApiVersion >= 2.24 && (trade.open_order_id || trade.has_open_orders)"
|
||||||
class="btn-xs text-start mt-1"
|
class="btn-xs text-start mt-1"
|
||||||
size="sm"
|
size="sm"
|
||||||
|
@ -44,8 +44,8 @@
|
||||||
@click="$emit('cancelOpenOrder', trade)"
|
@click="$emit('cancelOpenOrder', trade)"
|
||||||
>
|
>
|
||||||
<i-mdi-cancel class="me-1" />Cancel open order
|
<i-mdi-cancel class="me-1" />Cancel open order
|
||||||
</b-button>
|
</BButton>
|
||||||
<b-button
|
<BButton
|
||||||
v-if="enableForceEntry"
|
v-if="enableForceEntry"
|
||||||
class="btn-xs text-start mt-1"
|
class="btn-xs text-start mt-1"
|
||||||
size="sm"
|
size="sm"
|
||||||
|
@ -53,8 +53,8 @@
|
||||||
@click="$emit('forceEntry', trade)"
|
@click="$emit('forceEntry', trade)"
|
||||||
>
|
>
|
||||||
<i-mdi-plus-box-multiple-outline class="me-1" />Increase position
|
<i-mdi-plus-box-multiple-outline class="me-1" />Increase position
|
||||||
</b-button>
|
</BButton>
|
||||||
<b-button
|
<BButton
|
||||||
v-if="botApiVersion >= 2.28"
|
v-if="botApiVersion >= 2.28"
|
||||||
class="btn-xs text-start mt-1"
|
class="btn-xs text-start mt-1"
|
||||||
size="sm"
|
size="sm"
|
||||||
|
@ -62,8 +62,8 @@
|
||||||
@click="$emit('reloadTrade', trade)"
|
@click="$emit('reloadTrade', trade)"
|
||||||
>
|
>
|
||||||
<i-mdi-reload-alert class="me-1" />Reload Trade
|
<i-mdi-reload-alert class="me-1" />Reload Trade
|
||||||
</b-button>
|
</BButton>
|
||||||
<b-button
|
<BButton
|
||||||
class="btn-xs text-start mt-1"
|
class="btn-xs text-start mt-1"
|
||||||
size="sm"
|
size="sm"
|
||||||
title="Delete trade"
|
title="Delete trade"
|
||||||
|
@ -71,7 +71,7 @@
|
||||||
>
|
>
|
||||||
<i-mdi-delete class="me-1" />
|
<i-mdi-delete class="me-1" />
|
||||||
Delete
|
Delete
|
||||||
</b-button>
|
</BButton>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ function handleForceEntry(item: Trade) {
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<b-button
|
<BButton
|
||||||
:id="`btn-actions-${id}`"
|
:id="`btn-actions-${id}`"
|
||||||
class="btn-xs"
|
class="btn-xs"
|
||||||
size="sm"
|
size="sm"
|
||||||
|
@ -53,7 +53,7 @@ function handleForceEntry(item: Trade) {
|
||||||
@click="popoverOpen = !popoverOpen"
|
@click="popoverOpen = !popoverOpen"
|
||||||
>
|
>
|
||||||
<i-mdi-gesture-tap />
|
<i-mdi-gesture-tap />
|
||||||
</b-button>
|
</BButton>
|
||||||
<BPopover
|
<BPopover
|
||||||
teleport-to="body"
|
teleport-to="body"
|
||||||
:target="`btn-actions-${id}`"
|
:target="`btn-actions-${id}`"
|
||||||
|
@ -73,9 +73,9 @@ function handleForceEntry(item: Trade) {
|
||||||
@reload-trade="handleReloadTrade"
|
@reload-trade="handleReloadTrade"
|
||||||
@force-entry="handleForceEntry"
|
@force-entry="handleForceEntry"
|
||||||
/>
|
/>
|
||||||
<b-button class="mt-1 w-100 text-start" size="sm" @click="popoverOpen = false">
|
<BButton class="mt-1 w-100 text-start" size="sm" @click="popoverOpen = false">
|
||||||
<i-mdi-cancel class="me-1" />Close Actions menu
|
<i-mdi-cancel class="me-1" />Close Actions menu
|
||||||
</b-button>
|
</BButton>
|
||||||
</BPopover>
|
</BPopover>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="h-100 overflow-auto w-100">
|
<div class="h-100 overflow-auto w-100">
|
||||||
<b-table
|
<BTable
|
||||||
ref="tradesTable"
|
ref="tradesTable"
|
||||||
small
|
small
|
||||||
hover
|
hover
|
||||||
|
@ -66,18 +66,18 @@
|
||||||
<template #cell(close_timestamp)="row">
|
<template #cell(close_timestamp)="row">
|
||||||
<DateTimeTZ :date="(row.item as unknown as Trade).close_timestamp ?? 0" />
|
<DateTimeTZ :date="(row.item as unknown as Trade).close_timestamp ?? 0" />
|
||||||
</template>
|
</template>
|
||||||
</b-table>
|
</BTable>
|
||||||
<div class="w-100 d-flex justify-content-between">
|
<div class="w-100 d-flex justify-content-between">
|
||||||
<b-pagination
|
<BPagination
|
||||||
v-if="!activeTrades"
|
v-if="!activeTrades"
|
||||||
v-model="currentPage"
|
v-model="currentPage"
|
||||||
:total-rows="rows"
|
:total-rows="rows"
|
||||||
:per-page="perPage"
|
:per-page="perPage"
|
||||||
aria-controls="my-table"
|
aria-controls="my-table"
|
||||||
></b-pagination>
|
></BPagination>
|
||||||
<b-form-group v-if="showFilter" label-for="trade-filter">
|
<BFormGroup v-if="showFilter" label-for="trade-filter">
|
||||||
<b-form-input id="trade-filter" v-model="filterText" type="text" placeholder="Filter" />
|
<BFormInput id="trade-filter" v-model="filterText" type="text" placeholder="Filter" />
|
||||||
</b-form-group>
|
</BFormGroup>
|
||||||
</div>
|
</div>
|
||||||
<ForceExitForm v-if="activeTrades" v-model="forceExitVisible" :trade="feTrade" />
|
<ForceExitForm v-if="activeTrades" v-model="forceExitVisible" :trade="feTrade" />
|
||||||
<ForceEntryForm
|
<ForceEntryForm
|
||||||
|
@ -86,9 +86,9 @@
|
||||||
position-increase
|
position-increase
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<b-modal v-model="removeTradeVisible" title="Exit trade" @ok="forceExitExecuter">
|
<BModal v-model="removeTradeVisible" title="Exit trade" @ok="forceExitExecuter">
|
||||||
{{ confirmExitText }}
|
{{ confirmExitText }}
|
||||||
</b-modal>
|
</BModal>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<b-list-group>
|
<BListGroup>
|
||||||
<b-list-group-item
|
<BListGroupItem
|
||||||
button
|
button
|
||||||
class="d-flex flex-wrap justify-content-center align-items-center"
|
class="d-flex flex-wrap justify-content-center align-items-center"
|
||||||
:title="'Trade Navigation'"
|
:title="'Trade Navigation'"
|
||||||
@click="sortNewestFirst = !sortNewestFirst"
|
@click="sortNewestFirst = !sortNewestFirst"
|
||||||
>Trade Navigation {{ sortNewestFirst ? '↓' : '↑' }}
|
>Trade Navigation {{ sortNewestFirst ? '↓' : '↑' }}
|
||||||
</b-list-group-item>
|
</BListGroupItem>
|
||||||
<b-list-group-item
|
<BListGroupItem
|
||||||
v-for="(trade, i) in sortedTrades"
|
v-for="(trade, i) in sortedTrades"
|
||||||
:key="trade.open_timestamp"
|
:key="trade.open_timestamp"
|
||||||
button
|
button
|
||||||
|
@ -32,16 +32,16 @@
|
||||||
:stake-currency="botStore.activeBot.stakeCurrency"
|
:stake-currency="botStore.activeBot.stakeCurrency"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<b-button
|
<BButton
|
||||||
size="sm"
|
size="sm"
|
||||||
class="ms-auto mt-auto"
|
class="ms-auto mt-auto"
|
||||||
variant="outline-secondary"
|
variant="outline-secondary"
|
||||||
@click="ordersVisible[i] = !ordersVisible[i]"
|
@click="ordersVisible[i] = !ordersVisible[i]"
|
||||||
><i-mdi-chevron-right v-if="!ordersVisible[i]" width="24" height="24" />
|
><i-mdi-chevron-right v-if="!ordersVisible[i]" width="24" height="24" />
|
||||||
<i-mdi-chevron-down v-if="ordersVisible[i]" width="24" height="24" />
|
<i-mdi-chevron-down v-if="ordersVisible[i]" width="24" height="24" />
|
||||||
</b-button>
|
</BButton>
|
||||||
</div>
|
</div>
|
||||||
<b-collapse v-model="ordersVisible[i]">
|
<BCollapse v-model="ordersVisible[i]">
|
||||||
<ul class="px-3 m-0">
|
<ul class="px-3 m-0">
|
||||||
<li
|
<li
|
||||||
v-for="order in trade.orders?.filter((o) => o.order_filled_timestamp !== null)"
|
v-for="order in trade.orders?.filter((o) => o.order_filled_timestamp !== null)"
|
||||||
|
@ -50,10 +50,10 @@
|
||||||
{{ order.ft_order_side }} {{ order.amount }} at {{ order.safe_price }}
|
{{ order.ft_order_side }} {{ order.amount }} at {{ order.safe_price }}
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</b-collapse>
|
</BCollapse>
|
||||||
</b-list-group-item>
|
</BListGroupItem>
|
||||||
<b-list-group-item v-if="trades.length === 0">No trades to show...</b-list-group-item>
|
<BListGroupItem v-if="trades.length === 0">No trades to show...</BListGroupItem>
|
||||||
</b-list-group>
|
</BListGroup>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -2,22 +2,22 @@
|
||||||
<form class="d-flex flex-row" @submit.prevent="saveNewName">
|
<form class="d-flex flex-row" @submit.prevent="saveNewName">
|
||||||
<div class="flex-grow-1">
|
<div class="flex-grow-1">
|
||||||
<slot v-if="mode === EditState.None"> </slot>
|
<slot v-if="mode === EditState.None"> </slot>
|
||||||
<b-form-input v-else v-model="localName" size="sm"> </b-form-input>
|
<BFormInput v-else v-model="localName" size="sm"> </BFormInput>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="flex-grow-2 mt-auto d-flex gap-1 ms-1"
|
class="flex-grow-2 mt-auto d-flex gap-1 ms-1"
|
||||||
:class="alignVertical ? 'flex-column' : 'flex-row'"
|
:class="alignVertical ? 'flex-column' : 'flex-row'"
|
||||||
>
|
>
|
||||||
<template v-if="allowEdit && mode === EditState.None">
|
<template v-if="allowEdit && mode === EditState.None">
|
||||||
<b-button
|
<BButton
|
||||||
size="sm"
|
size="sm"
|
||||||
variant="secondary"
|
variant="secondary"
|
||||||
:title="`Edit this ${editableName}.`"
|
:title="`Edit this ${editableName}.`"
|
||||||
@click="mode = EditState.Editing"
|
@click="mode = EditState.Editing"
|
||||||
>
|
>
|
||||||
<i-mdi-pencil />
|
<i-mdi-pencil />
|
||||||
</b-button>
|
</BButton>
|
||||||
<b-button
|
<BButton
|
||||||
v-if="allowDuplicate"
|
v-if="allowDuplicate"
|
||||||
size="sm"
|
size="sm"
|
||||||
variant="secondary"
|
variant="secondary"
|
||||||
|
@ -25,36 +25,36 @@
|
||||||
@click="duplicate"
|
@click="duplicate"
|
||||||
>
|
>
|
||||||
<i-mdi-content-copy />
|
<i-mdi-content-copy />
|
||||||
</b-button>
|
</BButton>
|
||||||
<b-button
|
<BButton
|
||||||
size="sm"
|
size="sm"
|
||||||
variant="secondary"
|
variant="secondary"
|
||||||
:title="`Delete this ${editableName}.`"
|
:title="`Delete this ${editableName}.`"
|
||||||
@click="$emit('delete', modelValue)"
|
@click="$emit('delete', modelValue)"
|
||||||
>
|
>
|
||||||
<i-mdi-delete />
|
<i-mdi-delete />
|
||||||
</b-button>
|
</BButton>
|
||||||
</template>
|
</template>
|
||||||
<b-button
|
<BButton
|
||||||
v-if="allowAdd && mode === EditState.None"
|
v-if="allowAdd && mode === EditState.None"
|
||||||
size="sm"
|
size="sm"
|
||||||
:title="`Add new ${editableName}.`"
|
:title="`Add new ${editableName}.`"
|
||||||
variant="primary"
|
variant="primary"
|
||||||
@click="addNewClick"
|
@click="addNewClick"
|
||||||
><i-mdi-plus-box-outline />
|
><i-mdi-plus-box-outline />
|
||||||
</b-button>
|
</BButton>
|
||||||
<template v-if="mode !== EditState.None">
|
<template v-if="mode !== EditState.None">
|
||||||
<b-button
|
<BButton
|
||||||
size="sm"
|
size="sm"
|
||||||
:title="`Add new ${editableName}`"
|
:title="`Add new ${editableName}`"
|
||||||
variant="primary"
|
variant="primary"
|
||||||
@click="saveNewName"
|
@click="saveNewName"
|
||||||
>
|
>
|
||||||
<i-mdi-check />
|
<i-mdi-check />
|
||||||
</b-button>
|
</BButton>
|
||||||
<b-button size="sm" title="Abort" variant="secondary" @click="abort">
|
<BButton size="sm" title="Abort" variant="secondary" @click="abort">
|
||||||
<i-mdi-close />
|
<i-mdi-close />
|
||||||
</b-button>
|
</BButton>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<b-modal
|
<BModal
|
||||||
id="MsgBoxModal"
|
id="MsgBoxModal"
|
||||||
ref="removeTradeModal"
|
ref="removeTradeModal"
|
||||||
v-model="showRef"
|
v-model="showRef"
|
||||||
|
@ -10,7 +10,7 @@
|
||||||
@keyup.enter="msgBoxOK"
|
@keyup.enter="msgBoxOK"
|
||||||
>
|
>
|
||||||
{{ message }}
|
{{ message }}
|
||||||
</b-modal>
|
</BModal>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<header>
|
<header>
|
||||||
<b-navbar toggleable="sm" dark variant="primary">
|
<BNavbar toggleable="sm" dark variant="primary">
|
||||||
<RouterLink class="navbar-brand" exact to="/">
|
<RouterLink class="navbar-brand" exact to="/">
|
||||||
<img class="logo" src="@/assets/freqtrade-logo.png" alt="Home Logo" />
|
<img class="logo" src="@/assets/freqtrade-logo.png" alt="Home Logo" />
|
||||||
<span class="navbar-brand-title d-sm-none d-md-inline">Freqtrade UI</span>
|
<span class="navbar-brand-title d-sm-none d-md-inline">Freqtrade UI</span>
|
||||||
|
@ -8,28 +8,28 @@
|
||||||
|
|
||||||
<!-- TODO: For XS breakpoint, this should be here... -->
|
<!-- TODO: For XS breakpoint, this should be here... -->
|
||||||
<!-- <ReloadControl class="me-3" /> -->
|
<!-- <ReloadControl class="me-3" /> -->
|
||||||
<b-navbar-toggle target="nav-collapse"></b-navbar-toggle>
|
<BNavbarToggle target="nav-collapse"></BNavbarToggle>
|
||||||
|
|
||||||
<b-collapse id="nav-collapse" class="text-center" is-nav>
|
<BCollapse id="nav-collapse" class="text-center" is-nav>
|
||||||
<b-navbar-nav>
|
<BNavbarNav>
|
||||||
<b-nav-item v-if="!botStore.canRunBacktest" to="/trade">Trade</b-nav-item>
|
<BNavItem v-if="!botStore.canRunBacktest" to="/trade">Trade</BNavItem>
|
||||||
<b-nav-item v-if="!botStore.canRunBacktest" to="/dashboard">Dashboard</b-nav-item>
|
<BNavItem v-if="!botStore.canRunBacktest" to="/dashboard">Dashboard</BNavItem>
|
||||||
<b-nav-item to="/graph">Chart</b-nav-item>
|
<BNavItem to="/graph">Chart</BNavItem>
|
||||||
<b-nav-item to="/logs">Logs</b-nav-item>
|
<BNavItem to="/logs">Logs</BNavItem>
|
||||||
<b-nav-item v-if="botStore.canRunBacktest" to="/backtest">Backtest</b-nav-item>
|
<BNavItem v-if="botStore.canRunBacktest" to="/backtest">Backtest</BNavItem>
|
||||||
<b-nav-item
|
<BNavItem
|
||||||
v-if="
|
v-if="
|
||||||
(botStore.activeBot?.isWebserverMode ?? false) &&
|
(botStore.activeBot?.isWebserverMode ?? false) &&
|
||||||
botStore.activeBot.botApiVersion >= 2.3
|
botStore.activeBot.botApiVersion >= 2.3
|
||||||
"
|
"
|
||||||
to="/pairlist_config"
|
to="/pairlist_config"
|
||||||
>Pairlist Config</b-nav-item
|
>Pairlist Config</BNavItem
|
||||||
>
|
>
|
||||||
<ThemeSelect />
|
<ThemeSelect />
|
||||||
</b-navbar-nav>
|
</BNavbarNav>
|
||||||
|
|
||||||
<!-- Right aligned nav items -->
|
<!-- Right aligned nav items -->
|
||||||
<b-navbar-nav class="ms-auto" menu-class="w-100">
|
<BNavbarNav class="ms-auto" menu-class="w-100">
|
||||||
<!-- TODO This should show outside of the dropdown in XS mode -->
|
<!-- TODO This should show outside of the dropdown in XS mode -->
|
||||||
<div
|
<div
|
||||||
v-if="!settingsStore.confirmDialog"
|
v-if="!settingsStore.confirmDialog"
|
||||||
|
@ -41,7 +41,7 @@
|
||||||
<i-mdi-alert />
|
<i-mdi-alert />
|
||||||
</div>
|
</div>
|
||||||
<div class="d-flex justify-content-between">
|
<div class="d-flex justify-content-between">
|
||||||
<b-dropdown
|
<BDropdown
|
||||||
v-if="botStore.botCount > 1"
|
v-if="botStore.botCount > 1"
|
||||||
size="sm"
|
size="sm"
|
||||||
class="m-1"
|
class="m-1"
|
||||||
|
@ -54,47 +54,47 @@
|
||||||
<BotEntry :bot="botStore.selectedBotObj" :no-buttons="true" />
|
<BotEntry :bot="botStore.selectedBotObj" :no-buttons="true" />
|
||||||
</template>
|
</template>
|
||||||
<BotList :small="true" />
|
<BotList :small="true" />
|
||||||
</b-dropdown>
|
</BDropdown>
|
||||||
<ReloadControl class="me-3" title="Confirm Dialog deactivated." />
|
<ReloadControl class="me-3" title="Confirm Dialog deactivated." />
|
||||||
</div>
|
</div>
|
||||||
<li
|
<li
|
||||||
class="d-none d-sm-flex flex-sm-wrap flex-lg-nowrap align-items-center nav-item text-secondary me-2"
|
class="d-none d-sm-flex flex-sm-wrap flex-lg-nowrap align-items-center nav-item text-secondary me-2"
|
||||||
>
|
>
|
||||||
<b-nav-text class="verticalCenter small me-2">
|
<BNavText class="verticalCenter small me-2">
|
||||||
{{
|
{{
|
||||||
(botStore.activeBotorUndefined && botStore.activeBotorUndefined.botName) ||
|
(botStore.activeBotorUndefined && botStore.activeBotorUndefined.botName) ||
|
||||||
'No bot selected'
|
'No bot selected'
|
||||||
}}
|
}}
|
||||||
</b-nav-text>
|
</BNavText>
|
||||||
<b-nav-text v-if="botStore.botCount === 1" class="verticalCenter">
|
<BNavText v-if="botStore.botCount === 1" class="verticalCenter">
|
||||||
{{
|
{{
|
||||||
botStore.activeBotorUndefined && botStore.activeBotorUndefined.isBotOnline
|
botStore.activeBotorUndefined && botStore.activeBotorUndefined.isBotOnline
|
||||||
? 'Online'
|
? 'Online'
|
||||||
: 'Offline'
|
: 'Offline'
|
||||||
}}
|
}}
|
||||||
</b-nav-text>
|
</BNavText>
|
||||||
</li>
|
</li>
|
||||||
<li v-if="botStore.hasBots" class="nav-item">
|
<li v-if="botStore.hasBots" class="nav-item">
|
||||||
<!-- Hide dropdown on xs, instead show below -->
|
<!-- Hide dropdown on xs, instead show below -->
|
||||||
<b-nav-item-dropdown id="avatar-drop" right auto-close class="d-none d-sm-block">
|
<BNavItemDropdown id="avatar-drop" right auto-close class="d-none d-sm-block">
|
||||||
<template #button-content>
|
<template #button-content>
|
||||||
<b-avatar size="2em" button>FT</b-avatar>
|
<BAvatar size="2em" button>FT</BAvatar>
|
||||||
</template>
|
</template>
|
||||||
<span class="ps-3">V: {{ settingsStore.uiVersion }}</span>
|
<span class="ps-3">V: {{ settingsStore.uiVersion }}</span>
|
||||||
<!-- Link active-class to non-existant class to avoid it getting the "light" active color -->
|
<!-- Link active-class to non-existant class to avoid it getting the "light" active color -->
|
||||||
<b-dropdown-item active-class="non-existant" to="/settings">Settings</b-dropdown-item>
|
<BDropdownItem active-class="non-existant" to="/settings">Settings</BDropdownItem>
|
||||||
<div class="ps-3">
|
<div class="ps-3">
|
||||||
<b-form-checkbox v-model="layoutStore.layoutLocked">Lock layout</b-form-checkbox>
|
<BFormCheckbox v-model="layoutStore.layoutLocked">Lock layout</BFormCheckbox>
|
||||||
</div>
|
</div>
|
||||||
<b-dropdown-item @click="resetDynamicLayout">Reset Layout</b-dropdown-item>
|
<BDropdownItem @click="resetDynamicLayout">Reset Layout</BDropdownItem>
|
||||||
<template v-if="botStore.botCount === 1">
|
<template v-if="botStore.botCount === 1">
|
||||||
<BDropdownDivider />
|
<BDropdownDivider />
|
||||||
<b-dropdown-item active-class="non-existant" @click="clickLogout()">
|
<BDropdownItem active-class="non-existant" @click="clickLogout()">
|
||||||
<i-mdi-logout class="me-1" />
|
<i-mdi-logout class="me-1" />
|
||||||
Sign Out
|
Sign Out
|
||||||
</b-dropdown-item>
|
</BDropdownItem>
|
||||||
</template>
|
</template>
|
||||||
</b-nav-item-dropdown>
|
</BNavItemDropdown>
|
||||||
<div class="d-block d-sm-none">
|
<div class="d-block d-sm-none">
|
||||||
<!-- Visible only on XS -->
|
<!-- Visible only on XS -->
|
||||||
<!-- <li class="nav-item text-secondary ms-2 d-sm-none d-flex justify-content-between">
|
<!-- <li class="nav-item text-secondary ms-2 d-sm-none d-flex justify-content-between">
|
||||||
|
@ -107,15 +107,15 @@
|
||||||
</b-nav-text>
|
</b-nav-text>
|
||||||
</div>
|
</div>
|
||||||
</li> -->
|
</li> -->
|
||||||
<b-nav-item class="py-0" to="/settings" title="Settings">
|
<BNavItem class="py-0" to="/settings" title="Settings">
|
||||||
Settings <i-mdi-cog class="ms-auto" />
|
Settings <i-mdi-cog class="ms-auto" />
|
||||||
</b-nav-item>
|
</BNavItem>
|
||||||
<b-nav-item
|
<BNavItem
|
||||||
v-if="botStore.botCount === 1"
|
v-if="botStore.botCount === 1"
|
||||||
class="nav-link navbar-nav"
|
class="nav-link navbar-nav"
|
||||||
to="/"
|
to="/"
|
||||||
@click="clickLogout()"
|
@click="clickLogout()"
|
||||||
>Sign Out</b-nav-item
|
>Sign Out</BNavItem
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
@ -123,9 +123,9 @@
|
||||||
<!-- should open Modal window! -->
|
<!-- should open Modal window! -->
|
||||||
<LoginModal v-if="route?.path !== '/login'" />
|
<LoginModal v-if="route?.path !== '/login'" />
|
||||||
</li>
|
</li>
|
||||||
</b-navbar-nav>
|
</BNavbarNav>
|
||||||
</b-collapse>
|
</BCollapse>
|
||||||
</b-navbar>
|
</BNavbar>
|
||||||
</header>
|
</header>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<div
|
<div
|
||||||
class="mx-md-5 d-flex flex-wrap justify-content-md-center justify-content-between mb-4 gap-2"
|
class="mx-md-5 d-flex flex-wrap justify-content-md-center justify-content-between mb-4 gap-2"
|
||||||
>
|
>
|
||||||
<b-form-radio
|
<BFormRadio
|
||||||
v-if="botStore.activeBot.botApiVersion >= 2.15"
|
v-if="botStore.activeBot.botApiVersion >= 2.15"
|
||||||
v-model="btFormMode"
|
v-model="btFormMode"
|
||||||
name="bt-form-radios"
|
name="bt-form-radios"
|
||||||
|
@ -18,18 +18,18 @@
|
||||||
class="mx-1 flex-samesize-items"
|
class="mx-1 flex-samesize-items"
|
||||||
value="historicResults"
|
value="historicResults"
|
||||||
:disabled="!botStore.activeBot.canRunBacktest"
|
:disabled="!botStore.activeBot.canRunBacktest"
|
||||||
><i-mdi-cloud-download class="me-2" />Load Results</b-form-radio
|
><i-mdi-cloud-download class="me-2" />Load Results</BFormRadio
|
||||||
>
|
>
|
||||||
<b-form-radio
|
<BFormRadio
|
||||||
v-model="btFormMode"
|
v-model="btFormMode"
|
||||||
name="bt-form-radios"
|
name="bt-form-radios"
|
||||||
button
|
button
|
||||||
class="mx-1 flex-samesize-items"
|
class="mx-1 flex-samesize-items"
|
||||||
value="run"
|
value="run"
|
||||||
:disabled="!botStore.activeBot.canRunBacktest"
|
:disabled="!botStore.activeBot.canRunBacktest"
|
||||||
><i-mdi-run-fast class="me-2" />Run backtest</b-form-radio
|
><i-mdi-run-fast class="me-2" />Run backtest</BFormRadio
|
||||||
>
|
>
|
||||||
<b-form-radio
|
<BFormRadio
|
||||||
id="bt-analyze-btn"
|
id="bt-analyze-btn"
|
||||||
v-model="btFormMode"
|
v-model="btFormMode"
|
||||||
name="bt-form-radios"
|
name="bt-form-radios"
|
||||||
|
@ -37,9 +37,9 @@
|
||||||
class="mx-1 flex-samesize-items"
|
class="mx-1 flex-samesize-items"
|
||||||
value="results"
|
value="results"
|
||||||
:disabled="!hasBacktestResult"
|
:disabled="!hasBacktestResult"
|
||||||
><i-mdi-table-eye class="me-2" />Analyze result</b-form-radio
|
><i-mdi-table-eye class="me-2" />Analyze result</BFormRadio
|
||||||
>
|
>
|
||||||
<b-form-radio
|
<BFormRadio
|
||||||
v-if="hasMultiBacktestResult"
|
v-if="hasMultiBacktestResult"
|
||||||
v-model="btFormMode"
|
v-model="btFormMode"
|
||||||
name="bt-form-radios"
|
name="bt-form-radios"
|
||||||
|
@ -47,25 +47,25 @@
|
||||||
class="mx-1 flex-samesize-items"
|
class="mx-1 flex-samesize-items"
|
||||||
value="compare-results"
|
value="compare-results"
|
||||||
:disabled="!hasMultiBacktestResult"
|
:disabled="!hasMultiBacktestResult"
|
||||||
><i-mdi-compare-horizontal class="me-2" />Compare results</b-form-radio
|
><i-mdi-compare-horizontal class="me-2" />Compare results</BFormRadio
|
||||||
>
|
>
|
||||||
<b-form-radio
|
<BFormRadio
|
||||||
v-model="btFormMode"
|
v-model="btFormMode"
|
||||||
name="bt-form-radios"
|
name="bt-form-radios"
|
||||||
button
|
button
|
||||||
class="mx-1 flex-samesize-items"
|
class="mx-1 flex-samesize-items"
|
||||||
value="visualize-summary"
|
value="visualize-summary"
|
||||||
:disabled="!hasBacktestResult"
|
:disabled="!hasBacktestResult"
|
||||||
><i-mdi-chart-bell-curve-cumulative class="me-2" />Visualize summary</b-form-radio
|
><i-mdi-chart-bell-curve-cumulative class="me-2" />Visualize summary</BFormRadio
|
||||||
>
|
>
|
||||||
<b-form-radio
|
<BFormRadio
|
||||||
v-model="btFormMode"
|
v-model="btFormMode"
|
||||||
name="bt-form-radios"
|
name="bt-form-radios"
|
||||||
button
|
button
|
||||||
class="mx-1 flex-samesize-items"
|
class="mx-1 flex-samesize-items"
|
||||||
value="visualize"
|
value="visualize"
|
||||||
:disabled="!hasBacktestResult"
|
:disabled="!hasBacktestResult"
|
||||||
><i-mdi-chart-timeline-variant-shimmer class="me-2" />Visualize result</b-form-radio
|
><i-mdi-chart-timeline-variant-shimmer class="me-2" />Visualize result</BFormRadio
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<small v-show="botStore.activeBot.backtestRunning" class="text-end bt-running-label"
|
<small v-show="botStore.activeBot.backtestRunning" class="text-end bt-running-label"
|
||||||
|
@ -83,7 +83,7 @@
|
||||||
class="sticky-top sticky-offset me-3 d-flex flex-column absolute"
|
class="sticky-top sticky-offset me-3 d-flex flex-column absolute"
|
||||||
style="max-height: calc(100vh - 60px)"
|
style="max-height: calc(100vh - 60px)"
|
||||||
>
|
>
|
||||||
<b-button
|
<BButton
|
||||||
class="align-self-start"
|
class="align-self-start"
|
||||||
aria-label="Close"
|
aria-label="Close"
|
||||||
size="sm"
|
size="sm"
|
||||||
|
@ -92,7 +92,7 @@
|
||||||
>
|
>
|
||||||
<i-mdi-chevron-right v-if="!showLeftBar" width="24" height="24" />
|
<i-mdi-chevron-right v-if="!showLeftBar" width="24" height="24" />
|
||||||
<i-mdi-chevron-left v-if="showLeftBar" width="24" height="24" />
|
<i-mdi-chevron-left v-if="showLeftBar" width="24" height="24" />
|
||||||
</b-button>
|
</BButton>
|
||||||
<Transition name="fade">
|
<Transition name="fade">
|
||||||
<BacktestResultSelect
|
<BacktestResultSelect
|
||||||
v-if="showLeftBar"
|
v-if="showLeftBar"
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<b-card header="Freqtrade bot Login">
|
<BCard header="Freqtrade bot Login">
|
||||||
<BotLogin ref="loginForm" />
|
<BotLogin ref="loginForm" />
|
||||||
</b-card>
|
</BCard>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -26,11 +26,11 @@
|
||||||
v-if="botStore.activeBot.detailTradeId && botStore.activeBot.tradeDetail"
|
v-if="botStore.activeBot.detailTradeId && botStore.activeBot.tradeDetail"
|
||||||
class="d-flex flex-column"
|
class="d-flex flex-column"
|
||||||
>
|
>
|
||||||
<b-button
|
<BButton
|
||||||
size="sm"
|
size="sm"
|
||||||
class="align-self-start my-1 ms-1"
|
class="align-self-start my-1 ms-1"
|
||||||
@click="botStore.activeBot.setDetailTrade(null)"
|
@click="botStore.activeBot.setDetailTrade(null)"
|
||||||
><i-mdi-arrow-left /> Back</b-button
|
><i-mdi-arrow-left /> Back</BButton
|
||||||
>
|
>
|
||||||
<TradeDetail
|
<TradeDetail
|
||||||
:trade="botStore.activeBot.tradeDetail"
|
:trade="botStore.activeBot.tradeDetail"
|
||||||
|
|
|
@ -1,83 +1,78 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="container mt-3">
|
<div class="container mt-3">
|
||||||
<b-card header="FreqUI Settings">
|
<BCard header="FreqUI Settings">
|
||||||
<div class="text-start d-flex flex-column gap-2">
|
<div class="text-start d-flex flex-column gap-2">
|
||||||
<p>UI Version: {{ settingsStore.uiVersion }}</p>
|
<p>UI Version: {{ settingsStore.uiVersion }}</p>
|
||||||
<div class="d-flex flex-column border rounded p-2 mb-2 gap-2">
|
<div class="d-flex flex-column border rounded p-2 mb-2 gap-2">
|
||||||
<h4>UI settings</h4>
|
<h4>UI settings</h4>
|
||||||
<b-form-group
|
<BFormGroup
|
||||||
description="Lock dynamic layouts, so they cannot move anymore. Can also be set from the navbar at the top."
|
description="Lock dynamic layouts, so they cannot move anymore. Can also be set from the navbar at the top."
|
||||||
>
|
>
|
||||||
<b-form-checkbox v-model="layoutStore.layoutLocked">Lock layout</b-form-checkbox>
|
<BFormCheckbox v-model="layoutStore.layoutLocked">Lock layout</BFormCheckbox>
|
||||||
</b-form-group>
|
</BFormGroup>
|
||||||
<b-form-group description="Reset dynamic layouts to how they were.">
|
<BFormGroup description="Reset dynamic layouts to how they were.">
|
||||||
<b-button size="sm" class="me-1" @click="resetDynamicLayout">Reset layout</b-button>
|
<BButton size="sm" class="me-1" @click="resetDynamicLayout">Reset layout</BButton>
|
||||||
</b-form-group>
|
</BFormGroup>
|
||||||
<b-form-group
|
<BFormGroup
|
||||||
label="Show open trades in header"
|
label="Show open trades in header"
|
||||||
description="Decide if open trades should be visualized"
|
description="Decide if open trades should be visualized"
|
||||||
>
|
>
|
||||||
<b-form-select
|
<BFormSelect
|
||||||
v-model="settingsStore.openTradesInTitle"
|
v-model="settingsStore.openTradesInTitle"
|
||||||
:options="openTradesOptions"
|
:options="openTradesOptions"
|
||||||
></b-form-select>
|
></BFormSelect>
|
||||||
</b-form-group>
|
</BFormGroup>
|
||||||
<b-form-group
|
<BFormGroup
|
||||||
label="UTC Timezone"
|
label="UTC Timezone"
|
||||||
description="Select timezone (we recommend UTC is recommended as exchanges usually work in UTC)"
|
description="Select timezone (we recommend UTC is recommended as exchanges usually work in UTC)"
|
||||||
>
|
>
|
||||||
<b-form-select
|
<BFormSelect v-model="settingsStore.timezone" :options="timezoneOptions"></BFormSelect>
|
||||||
v-model="settingsStore.timezone"
|
</BFormGroup>
|
||||||
:options="timezoneOptions"
|
<BFormGroup description="Keep background sync running while other bots are selected.">
|
||||||
></b-form-select>
|
<BFormCheckbox v-model="settingsStore.backgroundSync">Background sync</BFormCheckbox>
|
||||||
</b-form-group>
|
</BFormGroup>
|
||||||
<b-form-group description="Keep background sync running while other bots are selected.">
|
<BFormGroup description="Use confirmation dialogs when force-exiting a trade.">
|
||||||
<b-form-checkbox v-model="settingsStore.backgroundSync"
|
<BFormCheckbox v-model="settingsStore.confirmDialog"
|
||||||
>Background sync</b-form-checkbox
|
>Show Confirm Dialog for Trade Exits</BFormCheckbox
|
||||||
>
|
>
|
||||||
</b-form-group>
|
</BFormGroup>
|
||||||
<b-form-group description="Use confirmation dialogs when force-exiting a trade.">
|
|
||||||
<b-form-checkbox v-model="settingsStore.confirmDialog"
|
|
||||||
>Show Confirm Dialog for Trade Exits</b-form-checkbox
|
|
||||||
>
|
|
||||||
</b-form-group>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="d-flex flex-column border rounded p-2 mb-2 gap-2">
|
<div class="d-flex flex-column border rounded p-2 mb-2 gap-2">
|
||||||
<h4>Chart settings</h4>
|
<h4>Chart settings</h4>
|
||||||
<b-form-group
|
<BFormGroup
|
||||||
description="Chart scale Side (Should the scale be displayed on the right or left?)"
|
description="Chart scale Side (Should the scale be displayed on the right or left?)"
|
||||||
>
|
>
|
||||||
<b-form-radio-group
|
<BFormRadioGroup
|
||||||
v-model="settingsStore.chartLabelSide"
|
v-model="settingsStore.chartLabelSide"
|
||||||
name="chart-preference-options"
|
name="chart-preference-options"
|
||||||
:options="[
|
:options="[
|
||||||
{ value: 'left', text: 'Left' },
|
{ value: 'left', text: 'Left' },
|
||||||
{ value: 'right', text: 'Right' },
|
{ value: 'right', text: 'Right' },
|
||||||
]"
|
]"
|
||||||
></b-form-radio-group>
|
></BFormRadioGroup>
|
||||||
</b-form-group>
|
</BFormGroup>
|
||||||
|
|
||||||
<b-form-group description="Use Heikin Ashi candles in your charts">
|
<BFormGroup description="Use Heikin Ashi candles in your charts">
|
||||||
<b-form-checkbox v-model="settingsStore.useHeikinAshiCandles"
|
<BFormCheckbox v-model="settingsStore.useHeikinAshiCandles"
|
||||||
>Use Heikin Ashi candles.</b-form-checkbox
|
>Use Heikin Ashi candles.</BFormCheckbox
|
||||||
>
|
>
|
||||||
</b-form-group>
|
</BFormGroup>
|
||||||
<b-form-group
|
<BFormGroup
|
||||||
description="Can reduce the transfer size for large dataframes. May require additional calls if the plot config changes."
|
description="Can reduce the transfer size for large dataframes. May require additional calls if the plot config changes."
|
||||||
>
|
>
|
||||||
<b-form-checkbox v-model="settingsStore.useReducedPairCalls"
|
<BFormCheckbox v-model="settingsStore.useReducedPairCalls"
|
||||||
>Only request necessary columns (recommended to be checked).</b-form-checkbox
|
>Only request necessary columns (recommended to be checked).</BFormCheckbox
|
||||||
>
|
>
|
||||||
</b-form-group>
|
</BFormGroup>
|
||||||
<b-form-group description="Candle Color Preference">
|
<BFormGroup description="Candle Color Preference">
|
||||||
<b-form-radio-group
|
<BFormRadioGroup
|
||||||
id="settings-color-preference-radio-group"
|
id="settings-color-preference-radio-group"
|
||||||
v-model="colorStore.colorPreference"
|
v-model="colorStore.colorPreference"
|
||||||
name="color-preference-options"
|
name="color-preference-options"
|
||||||
@change="colorStore.updateProfitLossColor"
|
@change="colorStore.updateProfitLossColor"
|
||||||
>
|
>
|
||||||
<b-form-radio
|
<BFormRadio
|
||||||
v-for="option in colorPreferenceOptions"
|
v-for="option in colorPreferenceOptions"
|
||||||
:key="option.value"
|
:key="option.value"
|
||||||
:value="option.value"
|
:value="option.value"
|
||||||
|
@ -101,29 +96,29 @@
|
||||||
class="color-candle-arrows"
|
class="color-candle-arrows"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</b-form-radio>
|
</BFormRadio>
|
||||||
</b-form-radio-group>
|
</BFormRadioGroup>
|
||||||
</b-form-group>
|
</BFormGroup>
|
||||||
</div>
|
</div>
|
||||||
<div class="d-flex flex-column border rounded p-2 mb-2 gap-2">
|
<div class="d-flex flex-column border rounded p-2 mb-2 gap-2">
|
||||||
<b-form-group description="Notifications">
|
<BFormGroup description="Notifications">
|
||||||
<h4>Notification Settings</h4>
|
<h4>Notification Settings</h4>
|
||||||
<b-form-checkbox v-model="settingsStore.notifications[FtWsMessageTypes.entryFill]"
|
<BFormCheckbox v-model="settingsStore.notifications[FtWsMessageTypes.entryFill]"
|
||||||
>Entry notifications</b-form-checkbox
|
>Entry notifications</BFormCheckbox
|
||||||
>
|
>
|
||||||
<b-form-checkbox v-model="settingsStore.notifications[FtWsMessageTypes.exitFill]"
|
<BFormCheckbox v-model="settingsStore.notifications[FtWsMessageTypes.exitFill]"
|
||||||
>Exit notifications</b-form-checkbox
|
>Exit notifications</BFormCheckbox
|
||||||
>
|
>
|
||||||
<b-form-checkbox v-model="settingsStore.notifications[FtWsMessageTypes.entryCancel]"
|
<BFormCheckbox v-model="settingsStore.notifications[FtWsMessageTypes.entryCancel]"
|
||||||
>Entry Cancel notifications</b-form-checkbox
|
>Entry Cancel notifications</BFormCheckbox
|
||||||
>
|
>
|
||||||
<b-form-checkbox v-model="settingsStore.notifications[FtWsMessageTypes.exitCancel]"
|
<BFormCheckbox v-model="settingsStore.notifications[FtWsMessageTypes.exitCancel]"
|
||||||
>Exit Cancel notifications</b-form-checkbox
|
>Exit Cancel notifications</BFormCheckbox
|
||||||
>
|
>
|
||||||
</b-form-group>
|
</BFormGroup>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</b-card>
|
</BCard>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -28,34 +28,34 @@
|
||||||
<div class="mt-1 d-flex justify-content-center">
|
<div class="mt-1 d-flex justify-content-center">
|
||||||
<BotControls class="mt-1 mb-2" />
|
<BotControls class="mt-1 mb-2" />
|
||||||
</div>
|
</div>
|
||||||
<b-tabs content-class="mt-3" class="mt-1">
|
<BTabs content-class="mt-3" class="mt-1">
|
||||||
<b-tab title="Pairs combined" active>
|
<BTab title="Pairs combined" active>
|
||||||
<PairSummary
|
<PairSummary
|
||||||
:pairlist="botStore.activeBot.whitelist"
|
:pairlist="botStore.activeBot.whitelist"
|
||||||
:current-locks="botStore.activeBot.activeLocks"
|
:current-locks="botStore.activeBot.activeLocks"
|
||||||
:trades="botStore.activeBot.openTrades"
|
:trades="botStore.activeBot.openTrades"
|
||||||
/>
|
/>
|
||||||
</b-tab>
|
</BTab>
|
||||||
<b-tab title="General">
|
<BTab title="General">
|
||||||
<BotStatus />
|
<BotStatus />
|
||||||
</b-tab>
|
</BTab>
|
||||||
<b-tab title="Performance" lazy>
|
<BTab title="Performance" lazy>
|
||||||
<BotPerformance />
|
<BotPerformance />
|
||||||
</b-tab>
|
</BTab>
|
||||||
<b-tab title="Balance" lazy>
|
<BTab title="Balance" lazy>
|
||||||
<BotBalance />
|
<BotBalance />
|
||||||
</b-tab>
|
</BTab>
|
||||||
<b-tab title="Time Breakdown" lazy>
|
<BTab title="Time Breakdown" lazy>
|
||||||
<PeriodBreakdown />
|
<PeriodBreakdown />
|
||||||
</b-tab>
|
</BTab>
|
||||||
|
|
||||||
<b-tab title="Pairlist" lazy>
|
<BTab title="Pairlist" lazy>
|
||||||
<PairListLive />
|
<PairListLive />
|
||||||
</b-tab>
|
</BTab>
|
||||||
<b-tab title="Pair Locks" lazy>
|
<BTab title="Pair Locks" lazy>
|
||||||
<PairLockList />
|
<PairLockList />
|
||||||
</b-tab>
|
</BTab>
|
||||||
</b-tabs>
|
</BTabs>
|
||||||
</DraggableContainer>
|
</DraggableContainer>
|
||||||
</GridItem>
|
</GridItem>
|
||||||
<GridItem
|
<GridItem
|
||||||
|
|
Loading…
Reference in New Issue
Block a user