@@ -1,12 +1,15 @@
|
||||
import { TradeChart, CardPositionItem } from '..'
|
||||
import { IBotRowDetails } from '../../../global/type'
|
||||
import { CardPosition } from '../../mollecules'
|
||||
import { CardPosition, CardText } from '../../mollecules'
|
||||
|
||||
const BacktestRowDetails: React.FC<IBotRowDetails> = ({
|
||||
candles,
|
||||
positions,
|
||||
walletBalances,
|
||||
strategiesValues,
|
||||
signals,
|
||||
optimizedMoneyManagement,
|
||||
statistics
|
||||
}) => {
|
||||
return (
|
||||
<>
|
||||
@@ -27,17 +30,42 @@ const BacktestRowDetails: React.FC<IBotRowDetails> = ({
|
||||
})}
|
||||
></CardPosition>
|
||||
<CardPositionItem positions={positions}></CardPositionItem>
|
||||
<CardText
|
||||
title="Optimized Money Management"
|
||||
content={
|
||||
"SL: " +optimizedMoneyManagement.stopLoss.toFixed(2) + "% TP: " + optimizedMoneyManagement.takeProfit.toFixed(2) + "%"
|
||||
}
|
||||
></CardText>
|
||||
<CardText
|
||||
title="Max Drowdown"
|
||||
content={
|
||||
statistics.maxDrawdown?.toFixed(4).toString() +
|
||||
'$'
|
||||
}
|
||||
></CardText>
|
||||
<CardText
|
||||
title="Sharpe Ratio"
|
||||
content={
|
||||
(statistics.sharpeRatio
|
||||
? statistics.sharpeRatio * 100
|
||||
: 0
|
||||
)
|
||||
.toFixed(4)
|
||||
.toString() + '%'
|
||||
}
|
||||
></CardText>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
<figure>
|
||||
<TradeChart
|
||||
width={1400}
|
||||
height={1400}
|
||||
height={1100}
|
||||
candles={candles}
|
||||
positions={positions}
|
||||
walletBalances={walletBalances}
|
||||
strategiesValues={strategiesValues}
|
||||
signals={[]}
|
||||
signals={signals}
|
||||
></TradeChart>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
@@ -248,12 +248,16 @@ const BacktestTable: React.FC<IBacktestCards> = ({ list, isFetching }) => {
|
||||
positions={row.original.positions}
|
||||
walletBalances={row.original.walletBalances}
|
||||
strategiesValues={row.original.strategiesValues}
|
||||
signals={row.original.signals}
|
||||
optimizedMoneyManagement={row.original.optimizedMoneyManagement}
|
||||
statistics={row.original.statistics}
|
||||
></BacktestRowDetails>
|
||||
</>
|
||||
),
|
||||
[]
|
||||
)
|
||||
|
||||
|
||||
return (
|
||||
<div
|
||||
className="flex flex-wrap"
|
||||
@@ -261,13 +265,14 @@ const BacktestTable: React.FC<IBacktestCards> = ({ list, isFetching }) => {
|
||||
>
|
||||
{isFetching ? (
|
||||
<progress className="progress progress-primary w-56"></progress>
|
||||
) : (
|
||||
) : (<>
|
||||
<Table
|
||||
columns={columns}
|
||||
data={rows}
|
||||
renderRowSubCompontent={renderRowSubComponent}
|
||||
showPagination={true}
|
||||
/>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
|
||||
@@ -92,6 +92,8 @@ const TradeChart = ({
|
||||
bottomLineColor: theme.secondary,
|
||||
topLineColor: theme.primary,
|
||||
lineWidth: 1,
|
||||
priceLineVisible: true,
|
||||
crosshairMarkerVisible: true,
|
||||
} as BaselineSeriesOptions
|
||||
|
||||
function buildMarker(
|
||||
@@ -406,6 +408,7 @@ const TradeChart = ({
|
||||
stcSeries.setData(stcData)
|
||||
stcSeries.applyOptions({
|
||||
...baselineOptions,
|
||||
priceLineVisible: true,
|
||||
priceFormat: {
|
||||
minMove: 1,
|
||||
precision: 1,
|
||||
|
||||
@@ -2233,6 +2233,8 @@ export enum StrategyType {
|
||||
StochRsiTrend = "StochRsiTrend",
|
||||
Stc = "Stc",
|
||||
StDev = "StDev",
|
||||
LaggingStc = "LaggingStc",
|
||||
SuperTrendCrossEma = "SuperTrendCrossEma",
|
||||
}
|
||||
|
||||
export enum SignalType {
|
||||
|
||||
@@ -13,6 +13,7 @@ import type {
|
||||
IFlow,
|
||||
KeyValuePairOfDateTimeAndDecimal,
|
||||
MoneyManagement,
|
||||
PerformanceMetrics,
|
||||
Position,
|
||||
RiskLevel,
|
||||
Scenario,
|
||||
@@ -147,6 +148,9 @@ export type IBotRowDetails = {
|
||||
positions: Position[]
|
||||
walletBalances?: KeyValuePairOfDateTimeAndDecimal[] | null
|
||||
strategiesValues?: { [key in keyof typeof StrategyType]?: StrategiesResultBase; } | null;
|
||||
signals: Signal[]
|
||||
optimizedMoneyManagement: MoneyManagement
|
||||
statistics: PerformanceMetrics
|
||||
}
|
||||
|
||||
export type IBacktestFormInput = {
|
||||
|
||||
@@ -227,7 +227,7 @@ const StrategyList: React.FC = () => {
|
||||
</>
|
||||
) : null}
|
||||
|
||||
{strategyType == StrategyType.Stc ? (
|
||||
{strategyType == StrategyType.Stc || strategyType == StrategyType.LaggingStc ? (
|
||||
<>
|
||||
<div className="form-control">
|
||||
<div className="input-group">
|
||||
@@ -278,6 +278,7 @@ const StrategyList: React.FC = () => {
|
||||
) : null}
|
||||
|
||||
{strategyType == StrategyType.SuperTrend ||
|
||||
strategyType == StrategyType.SuperTrendCrossEma ||
|
||||
strategyType == StrategyType.ChandelierExit ? (
|
||||
<>
|
||||
<div className="form-control">
|
||||
|
||||
Reference in New Issue
Block a user