Files
DinQuant/frontend/dist/js/497.87c23382.js
T
Dinger 05117f3f5b v3.0.1
Signed-off-by: Dinger <quantdinger@gmail.com>
2026-03-25 18:07:47 +08:00

1 line
40 KiB
JavaScript

"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[497],{41497:function(t,e,a){a.r(e),a.d(e,{default:function(){return D}});var s=function(){var t=this,e=t._self._c;return e("div",{staticClass:"backtest-center",class:{"theme-dark":t.isDarkTheme}},[e("div",{staticClass:"page-header"},[e("h2",{staticClass:"page-title"},[e("a-icon",{staticClass:"title-icon",attrs:{type:"experiment"}}),t._v(" "+t._s(t.$t("backtest-center.title"))+" ")],1),e("p",{staticClass:"page-subtitle"},[t._v(t._s(t.$t("backtest-center.subtitle")))])]),e("a-tabs",{staticClass:"main-tabs",model:{value:t.activeTab,callback:function(e){t.activeTab=e},expression:"activeTab"}},[e("a-tab-pane",{key:"indicator",attrs:{tab:t.$t("backtest-center.tabs.indicator")}},[e("a-row",{staticClass:"workspace",attrs:{gutter:20}},[e("a-col",{staticClass:"config-col",attrs:{xs:24,sm:24,md:9,lg:8}},[e("div",{staticClass:"config-panel"},[e("div",{staticClass:"panel-section"},[e("div",{staticClass:"section-label"},[t._v(t._s(t.$t("backtest-center.indicator.selectIndicator")))]),e("a-select",{staticStyle:{width:"100%"},attrs:{placeholder:t.$t("backtest-center.indicator.selectIndicatorPlaceholder"),loading:t.loadingIndicators,"allow-clear":"","show-search":"","option-filter-prop":"children"},on:{change:t.onIndicatorChange},model:{value:t.selectedIndicatorId,callback:function(e){t.selectedIndicatorId=e},expression:"selectedIndicatorId"}},t._l(t.indicators,function(a){return e("a-select-option",{key:a.id,attrs:{value:a.id}},[t._v(t._s(a.name||"Indicator #"+a.id))])}),1)],1),e("div",{staticClass:"panel-section"},[e("div",{staticClass:"section-label"},[t._v(t._s(t.$t("backtest-center.config.symbol")))]),e("a-select",{staticStyle:{width:"100%","margin-bottom":"8px"},attrs:{placeholder:t.$t("backtest-center.config.marketPlaceholder")},on:{change:t.onMarketChange},model:{value:t.market,callback:function(e){t.market=e},expression:"market"}},[e("a-select-option",{attrs:{value:"Crypto"}},[t._v("Crypto")]),e("a-select-option",{attrs:{value:"USStock"}},[t._v("US Stock")]),e("a-select-option",{attrs:{value:"HKStock"}},[t._v("HK Stock")]),e("a-select-option",{attrs:{value:"Forex"}},[t._v("Forex")]),e("a-select-option",{attrs:{value:"Futures"}},[t._v("Futures")]),e("a-select-option",{attrs:{value:"PredictionMarket"}},[t._v("Prediction")])],1),e("a-auto-complete",{staticStyle:{width:"100%"},attrs:{placeholder:t.$t("backtest-center.config.symbolPlaceholder"),"data-source":t.symbolOptions},on:{search:t.handleSymbolSearch,select:t.handleSymbolSelect},model:{value:t.symbolInput,callback:function(e){t.symbolInput=e},expression:"symbolInput"}})],1),e("div",{staticClass:"panel-section"},[e("div",{staticClass:"section-label"},[t._v(t._s(t.$t("backtest-center.config.timeframe")))]),e("a-radio-group",{staticClass:"tf-group",attrs:{"button-style":"solid",size:"small"},model:{value:t.timeframe,callback:function(e){t.timeframe=e},expression:"timeframe"}},[e("a-radio-button",{attrs:{value:"1m"}},[t._v("1m")]),e("a-radio-button",{attrs:{value:"5m"}},[t._v("5m")]),e("a-radio-button",{attrs:{value:"15m"}},[t._v("15m")]),e("a-radio-button",{attrs:{value:"1H"}},[t._v("1H")]),e("a-radio-button",{attrs:{value:"4H"}},[t._v("4H")]),e("a-radio-button",{attrs:{value:"1D"}},[t._v("1D")]),e("a-radio-button",{attrs:{value:"1W"}},[t._v("1W")])],1)],1),e("div",{staticClass:"panel-section"},[e("div",{staticClass:"section-label"},[t._v(t._s(t.$t("backtest-center.config.dateRange")))]),e("div",{staticClass:"date-presets"},t._l(t.datePresets,function(a){return e("a-button",{key:a.key,attrs:{size:"small",type:t.datePreset===a.key?"primary":"default"},on:{click:function(e){return t.applyDatePreset(a)}}},[t._v(t._s(a.label))])}),1),e("a-row",{staticStyle:{"margin-top":"8px"},attrs:{gutter:8}},[e("a-col",{attrs:{span:12}},[e("a-date-picker",{staticStyle:{width:"100%"},attrs:{placeholder:t.$t("backtest-center.config.startDate"),size:"small"},model:{value:t.startDate,callback:function(e){t.startDate=e},expression:"startDate"}})],1),e("a-col",{attrs:{span:12}},[e("a-date-picker",{staticStyle:{width:"100%"},attrs:{placeholder:t.$t("backtest-center.config.endDate"),size:"small"},model:{value:t.endDate,callback:function(e){t.endDate=e},expression:"endDate"}})],1)],1)],1),e("div",{staticClass:"panel-section"},[e("div",{staticClass:"section-label"},[t._v(t._s(t.$t("backtest-center.config.capital")))]),e("a-row",{attrs:{gutter:8}},[e("a-col",{attrs:{span:12}},[e("div",{staticClass:"field-mini-label"},[t._v(t._s(t.$t("backtest-center.config.initialCapital")))]),e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:1e3,step:1e4,precision:2,size:"small",formatter:function(t){return"$ ".concat(t).replace(/\B(?=(\d{3})+(?!\d))/g,",")},parser:function(t){return t.replace(/\$\s?|(,*)/g,"")}},model:{value:t.initialCapital,callback:function(e){t.initialCapital=e},expression:"initialCapital"}})],1),e("a-col",{attrs:{span:12}},[e("div",{staticClass:"field-mini-label"},[t._v(t._s(t.$t("backtest-center.config.leverage")))]),e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:1,max:125,step:1,precision:0,size:"small",formatter:function(t){return"".concat(t,"x")},parser:function(t){return t.replace("x","")}},model:{value:t.leverage,callback:function(e){t.leverage=e},expression:"leverage"}})],1)],1),e("a-row",{staticStyle:{"margin-top":"8px"},attrs:{gutter:8}},[e("a-col",{attrs:{span:12}},[e("div",{staticClass:"field-mini-label"},[t._v(t._s(t.$t("backtest-center.config.commission"))+" (%)")]),e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,max:10,step:.01,precision:4,size:"small"},model:{value:t.commission,callback:function(e){t.commission=e},expression:"commission"}})],1),e("a-col",{attrs:{span:12}},[e("div",{staticClass:"field-mini-label"},[t._v(t._s(t.$t("backtest-center.config.slippage"))+" (%)")]),e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,max:10,step:.01,precision:4,size:"small"},model:{value:t.slippage,callback:function(e){t.slippage=e},expression:"slippage"}})],1)],1)],1),e("div",{staticClass:"panel-section"},[e("div",{staticClass:"section-label"},[t._v(t._s(t.$t("backtest-center.config.direction")))]),e("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:t.tradeDirection,callback:function(e){t.tradeDirection=e},expression:"tradeDirection"}},[e("a-radio-button",{attrs:{value:"long"}},[t._v(t._s(t.$t("backtest-center.config.long")))]),e("a-radio-button",{attrs:{value:"short"}},[t._v(t._s(t.$t("backtest-center.config.short")))]),e("a-radio-button",{attrs:{value:"both"}},[t._v(t._s(t.$t("backtest-center.config.both")))])],1)],1),e("a-collapse",{staticClass:"strategy-collapse",attrs:{bordered:!1}},[e("a-collapse-panel",{key:"risk",attrs:{header:t.$t("backtest-center.config.riskPanel")}},[e("a-row",{attrs:{gutter:8}},[e("a-col",{attrs:{span:12}},[e("div",{staticClass:"field-mini-label"},[t._v(t._s(t.$t("backtest-center.config.stopLoss"))+" (%)")]),e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,max:100,step:.5,precision:2,size:"small"},model:{value:t.stopLossPct,callback:function(e){t.stopLossPct=e},expression:"stopLossPct"}})],1),e("a-col",{attrs:{span:12}},[e("div",{staticClass:"field-mini-label"},[t._v(t._s(t.$t("backtest-center.config.takeProfit"))+" (%)")]),e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,max:1e3,step:.5,precision:2,size:"small"},model:{value:t.takeProfitPct,callback:function(e){t.takeProfitPct=e},expression:"takeProfitPct"}})],1)],1),e("a-row",{staticStyle:{"margin-top":"8px"},attrs:{gutter:8}},[e("a-col",{attrs:{span:12}},[e("div",{staticClass:"field-mini-label"},[t._v(t._s(t.$t("backtest-center.config.entryPct"))+" (%)")]),e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,max:100,step:5,precision:2,size:"small"},model:{value:t.entryPct,callback:function(e){t.entryPct=e},expression:"entryPct"}})],1),e("a-col",{attrs:{span:12}},[e("a-checkbox",{staticStyle:{"margin-top":"18px"},model:{value:t.trailingEnabled,callback:function(e){t.trailingEnabled=e},expression:"trailingEnabled"}},[t._v(t._s(t.$t("backtest-center.config.trailing")))])],1)],1),t.trailingEnabled?[e("a-row",{staticStyle:{"margin-top":"8px"},attrs:{gutter:8}},[e("a-col",{attrs:{span:12}},[e("div",{staticClass:"field-mini-label"},[t._v(t._s(t.$t("backtest-center.config.trailingPct"))+" (%)")]),e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,max:100,step:.5,precision:2,size:"small"},model:{value:t.trailingStopPct,callback:function(e){t.trailingStopPct=e},expression:"trailingStopPct"}})],1),e("a-col",{attrs:{span:12}},[e("div",{staticClass:"field-mini-label"},[t._v(t._s(t.$t("backtest-center.config.trailingActivation"))+" (%)")]),e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,max:1e3,step:.5,precision:2,size:"small"},model:{value:t.trailingActivationPct,callback:function(e){t.trailingActivationPct=e},expression:"trailingActivationPct"}})],1)],1)]:t._e()],2)],1),e("div",{staticClass:"run-section"},[e("a-button",{attrs:{type:"primary",block:"",size:"large",loading:t.running,disabled:!t.canRun},on:{click:t.runBacktest}},[t.running?t._e():e("a-icon",{attrs:{type:"thunderbolt"}}),t._v(" "+t._s(t.running?t.$t("backtest-center.running"):t.$t("backtest-center.indicator.runBacktest"))+" ")],1),e("a-button",{staticStyle:{"margin-top":"8px"},attrs:{block:"",disabled:!t.selectedIndicatorId},on:{click:t.openIndicatorHistory}},[e("a-icon",{attrs:{type:"history"}}),t._v(" "+t._s(t.$t("backtest-center.indicator.history"))+" ")],1)],1)],1)]),e("a-col",{staticClass:"result-col",attrs:{xs:24,sm:24,md:15,lg:16}},[e("div",{staticClass:"result-panel"},[t.hasResult||t.running?t._e():e("div",{staticClass:"empty-result"},[e("div",{staticClass:"empty-icon"},[e("a-icon",{attrs:{type:"bar-chart"}})],1),e("h3",[t._v(t._s(t.$t("backtest-center.emptyTitle")))]),e("p",[t._v(t._s(t.$t("backtest-center.emptyDesc")))])]),t.running?e("div",{staticClass:"running-overlay"},[e("div",{staticClass:"running-content"},[e("div",{staticClass:"chart-bars"},[e("div",{staticClass:"bar bar1"}),e("div",{staticClass:"bar bar2"}),e("div",{staticClass:"bar bar3"}),e("div",{staticClass:"bar bar4"}),e("div",{staticClass:"bar bar5"})]),e("div",{staticClass:"running-text"},[t._v(t._s(t.$t("backtest-center.running")))]),e("div",{staticClass:"running-sub"},[t._v(t._s(t.runTip))])])]):t._e(),t.hasResult&&!t.running?e("div",{staticClass:"result-content"},[e("div",{staticClass:"result-header"},[e("span",{staticClass:"result-tag"},[e("a-tag",{attrs:{color:"blue"}},[t._v(t._s(t.symbol))]),e("a-tag",[t._v(t._s(t.market))]),e("a-tag",[t._v(t._s(t.timeframe))])],1),t.backtestRunId?e("span",{staticClass:"run-id"},[t._v(" Run #"+t._s(t.backtestRunId)+" ")]):t._e()]),e("div",{staticClass:"metrics-cards"},[e("div",{staticClass:"metric-card",class:t.result.totalReturn>=0?"positive":"negative"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("backtest-center.result.totalReturn")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.fmtPct(t.result.totalReturn)))]),e("div",{staticClass:"metric-sub"},[t._v(t._s(t.fmtMoney(t.result.totalProfit)))])]),e("div",{staticClass:"metric-card",class:t.result.annualReturn>=0?"positive":"negative"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("backtest-center.result.annualReturn")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.fmtPct(t.result.annualReturn)))])]),e("div",{staticClass:"metric-card negative"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("backtest-center.result.maxDrawdown")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.fmtPct(t.result.maxDrawdown)))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("backtest-center.result.sharpe")))]),e("div",{staticClass:"metric-value"},[t._v(t._s((t.result.sharpeRatio||0).toFixed(2)))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("backtest-center.result.winRate")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.fmtPct(t.result.winRate)))])]),e("div",{staticClass:"metric-card",class:t.result.profitFactor>=1.5?"positive":t.result.profitFactor<1?"negative":""},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("backtest-center.result.profitFactor")))]),e("div",{staticClass:"metric-value"},[t._v(t._s((t.result.profitFactor||0).toFixed(2)))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("backtest-center.result.trades")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.result.totalTrades||0))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("backtest-center.result.commission")))]),e("div",{staticClass:"metric-value"},[t._v("-"+t._s(t.fmtMoney(t.result.totalCommission)))])])]),e("div",{staticClass:"chart-section"},[e("div",{staticClass:"chart-title"},[t._v(t._s(t.$t("backtest-center.result.equityCurve")))]),e("div",{ref:"equityChart",staticClass:"equity-chart"})]),e("div",{staticClass:"trades-section"},[e("div",{staticClass:"chart-title"},[t._v(t._s(t.$t("backtest-center.result.tradeHistory")))]),e("a-table",{attrs:{columns:t.tradeColumns,"data-source":t.result.trades||[],pagination:{pageSize:8,size:"small"},size:"small",scroll:{x:700},"row-key":"id"},scopedSlots:t._u([{key:"type",fn:function(a){return[e("a-tag",{attrs:{color:"long"===a||"buy"===a?"green":"red"}},[t._v(" "+t._s("long"===a||"buy"===a?"LONG":"SHORT")+" ")])]}},{key:"profit",fn:function(a){return[e("span",{style:{color:a>0?"#52c41a":a<0?"#f5222d":"#666"}},[t._v(" "+t._s(t.fmtMoney(a))+" ")])]}}],null,!1,284577234)})],1)]):t._e()])])],1)],1),e("a-tab-pane",{key:"strategy",attrs:{tab:t.$t("backtest-center.tabs.strategy")}},[e("a-card",{staticClass:"config-card",attrs:{bordered:!1}},[e("div",{staticClass:"config-section"},[e("a-row",{attrs:{gutter:16,type:"flex",align:"middle"}},[e("a-col",{attrs:{xs:24,sm:12,md:8}},[e("div",{staticClass:"section-label",staticStyle:{"margin-bottom":"8px"}},[t._v(t._s(t.$t("backtest-center.strategy.selectStrategy")))]),e("a-select",{staticStyle:{width:"100%"},attrs:{placeholder:t.$t("backtest-center.strategy.selectStrategyPlaceholder"),loading:t.loadingStrategies,"allow-clear":"","show-search":"","option-filter-prop":"children"},model:{value:t.selectedStrategyId,callback:function(e){t.selectedStrategyId=e},expression:"selectedStrategyId"}},t._l(t.strategies,function(a){return e("a-select-option",{key:a.id,attrs:{value:a.id}},[t._v(t._s(a.strategy_name||"Strategy #"+a.id))])}),1)],1),e("a-col",{attrs:{xs:24,sm:12,md:16}},[e("div",{staticClass:"action-buttons"},[e("a-button",{attrs:{type:"primary",disabled:!t.selectedStrategyObj},on:{click:t.openStrategyBacktest}},[e("a-icon",{attrs:{type:"play-circle"}}),t._v(" "+t._s(t.$t("backtest-center.strategy.runBacktest"))+" ")],1),e("a-button",{on:{click:function(e){return t.$router.push("/trading-assistant?tab=strategy")}}},[e("a-icon",{attrs:{type:"robot"}}),t._v(" "+t._s(t.$t("backtest-center.strategy.goToAssistant"))+" ")],1)],1)])],1)],1),t.loadingStrategies||0!==t.strategies.length?t._e():e("a-empty",{staticStyle:{padding:"40px 0"},attrs:{description:t.$t("backtest-center.strategy.noStrategies")}})],1)],1)],1),e("backtest-history-drawer",{attrs:{visible:t.showHistoryDrawer,userId:t.userId,indicatorId:t.historyIndicatorId,symbol:t.symbol,market:t.market,timeframe:t.timeframe,isMobile:!1},on:{cancel:function(e){t.showHistoryDrawer=!1},view:t.handleViewRun}}),e("backtest-run-viewer",{attrs:{visible:t.showRunViewer,run:t.selectedRun},on:{cancel:function(e){t.showRunViewer=!1,t.selectedRun=null}}})],1)},i=[],r=a(76338),n=a(81127),c=a(56252),o=a(95093),l=a.n(o),d=a(29362),u=a(55434),m=a(75769),h=a(36911),b=a(505),p=a(35038),v=function(){var t=this,e=t._self._c;return e("a-drawer",{attrs:{title:t.$t("dashboard.indicator.backtest.historyTitle"),visible:t.visible,width:t.isMobile?"100%":980,maskClosable:!0},on:{close:function(e){return t.$emit("cancel")}}},[e("div",{staticStyle:{display:"flex",gap:"12px","margin-bottom":"12px","align-items":"center","flex-wrap":"wrap"}},[e("a-switch",{model:{value:t.useCurrentFilters,callback:function(e){t.useCurrentFilters=e},expression:"useCurrentFilters"}}),e("span",{staticStyle:{color:"#8c8c8c"}},[t._v(" "+t._s(t.$t("dashboard.indicator.backtest.historyUseCurrent"))+" ")]),e("a-button",{attrs:{type:"primary",loading:t.loading},on:{click:t.loadRuns}},[t._v(" "+t._s(t.$t("dashboard.indicator.backtest.historyRefresh"))+" ")]),e("a-button",{attrs:{type:"primary",disabled:0===t.selectedRowKeys.length,loading:t.analyzing},on:{click:t.handleAIAnalyze}},[t._v(" "+t._s(t.$t("dashboard.indicator.backtest.historyAIAnalyze"))+" ")])],1),t.useCurrentFilters?t._e():e("div",{staticStyle:{display:"flex",gap:"12px","margin-bottom":"12px","align-items":"center","flex-wrap":"wrap"}},[e("a-input",{staticStyle:{width:"220px"},attrs:{placeholder:t.$t("dashboard.indicator.backtest.historyFilterSymbol")},model:{value:t.filterSymbol,callback:function(e){t.filterSymbol=e},expression:"filterSymbol"}}),e("a-select",{staticStyle:{width:"140px"},attrs:{placeholder:t.$t("dashboard.indicator.backtest.historyFilterTimeframe"),allowClear:""},model:{value:t.filterTimeframe,callback:function(e){t.filterTimeframe=e},expression:"filterTimeframe"}},t._l(t.timeframes,function(a){return e("a-select-option",{key:a,attrs:{value:a}},[t._v(t._s(a))])}),1),e("a-button",{attrs:{loading:t.loading},on:{click:t.loadRuns}},[t._v(t._s(t.$t("dashboard.indicator.backtest.historyApply")))]),e("span",{staticStyle:{color:"#8c8c8c"}},[t._v(t._s(t.filterLabel))])],1),e("a-table",{attrs:{columns:t.columns,"data-source":t.runs,loading:t.loading,size:"small",pagination:{pageSize:10,size:"small"},rowKey:"id",scroll:{x:900},rowSelection:{selectedRowKeys:t.selectedRowKeys,onChange:t.onRowSelectionChange}},scopedSlots:t._u([{key:"range",fn:function(a,s){return[e("span",[t._v(t._s(s.start_date||"")+" ~ "+t._s(s.end_date||""))])]}},{key:"status",fn:function(a){return[e("a-tag",{attrs:{color:"success"===a?"green":"failed"===a?"red":"blue"}},[t._v(" "+t._s("success"===a?t.$t("dashboard.indicator.backtest.historyStatusSuccess"):"failed"===a?t.$t("dashboard.indicator.backtest.historyStatusFailed"):a)+" ")])]}},{key:"actions",fn:function(a,s){return[e("a-button",{attrs:{type:"link",size:"small",loading:t.detailLoadingId===s.id},on:{click:function(e){return t.viewRun(s)}}},[t._v(" "+t._s(t.$t("dashboard.indicator.backtest.historyView"))+" ")])]}}])}),t.loading||0!==t.runs.length?t._e():e("a-empty",{attrs:{description:t.$t("dashboard.indicator.backtest.historyNoData")}}),e("a-modal",{attrs:{title:t.$t("dashboard.indicator.backtest.historyAIAnalyzeTitle"),visible:t.showAIResult,footer:null,width:t.isMobile?"100%":900},on:{cancel:function(e){t.showAIResult=!1}}},[t.analyzing?e("div",{staticStyle:{padding:"12px 0"}},[e("a-spin")],1):e("div",{staticStyle:{"white-space":"pre-wrap","font-family":"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace"}},[t._v(" "+t._s(t.aiResult||t.$t("dashboard.indicator.backtest.historyNoAIResult"))+" ")])])],1)},y=[],f={name:"BacktestHistoryDrawer",props:{visible:{type:Boolean,default:!1},userId:{type:[Number,String],default:1},indicatorId:{type:[Number,String],default:null},symbol:{type:String,default:""},market:{type:String,default:""},timeframe:{type:String,default:""},isMobile:{type:Boolean,default:!1}},data:function(){return{loading:!1,detailLoadingId:null,analyzing:!1,showAIResult:!1,aiResult:"",useCurrentFilters:!0,filterSymbol:"",filterTimeframe:"",timeframes:["1m","5m","15m","30m","1H","4H","1D","1W"],runs:[],columns:[],selectedRowKeys:[]}},computed:{filterLabel:function(){var t=[];this.indicatorId&&t.push("indicatorId=".concat(this.indicatorId));var e=this.useCurrentFilters?this.market:this.market||"",a=this.useCurrentFilters?this.symbol:this.filterSymbol||"",s=this.useCurrentFilters?this.timeframe:this.filterTimeframe||"";return e&&t.push("market=".concat(e)),a&&t.push("symbol=".concat(a)),s&&t.push("timeframe=".concat(s)),t.length?t.join(" | "):""}},watch:{visible:function(t){t&&(this.initColumns(),this.useCurrentFilters=!0,this.filterSymbol=this.symbol||"",this.filterTimeframe=this.timeframe||"",this.selectedRowKeys=[],this.aiResult="",this.showAIResult=!1,this.loadRuns())}},methods:{onRowSelectionChange:function(t){this.selectedRowKeys=t||[]},initColumns:function(){this.columns.length||(this.columns=[{title:this.$t("dashboard.indicator.backtest.historyRunId"),dataIndex:"id",key:"id",width:90},{title:this.$t("dashboard.indicator.backtest.historyCreatedAt"),dataIndex:"created_at",key:"created_at",width:140},{title:this.$t("dashboard.indicator.backtest.tradeDirection"),dataIndex:"trade_direction",key:"trade_direction",width:90},{title:this.$t("dashboard.indicator.backtest.leverage"),dataIndex:"leverage",key:"leverage",width:90},{title:this.$t("dashboard.indicator.backtest.historyRange"),key:"range",width:220,scopedSlots:{customRender:"range"}},{title:this.$t("dashboard.indicator.backtest.historyStatus"),dataIndex:"status",key:"status",width:90,scopedSlots:{customRender:"status"}},{title:this.$t("dashboard.indicator.backtest.historyActions"),key:"actions",width:90,scopedSlots:{customRender:"actions"}}])},loadRuns:function(){var t=this;return(0,c.A)((0,n.A)().m(function e(){var a,s,i,r;return(0,n.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.userId){e.n=1;break}return e.a(2);case 1:return t.loading=!0,e.p=2,a=t.useCurrentFilters?t.symbol:t.filterSymbol||"",s=t.useCurrentFilters?t.timeframe:t.filterTimeframe||"",i=t.market||"",e.n=3,(0,m.Ay)({url:"/api/indicator/backtest/history",method:"get",params:{userid:t.userId,limit:100,offset:0,indicatorId:t.indicatorId,symbol:a,market:i,timeframe:s}});case 3:r=e.v,r&&1===r.code&&Array.isArray(r.data)?t.runs=r.data:t.runs=[];case 4:return e.p=4,t.loading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[2,,4,5]])}))()},viewRun:function(t){var e=this;return(0,c.A)((0,n.A)().m(function a(){var s;return(0,n.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t&&t.id){a.n=1;break}return a.a(2);case 1:return e.detailLoadingId=t.id,a.p=2,a.n=3,(0,m.Ay)({url:"/api/indicator/backtest/get",method:"get",params:{userid:e.userId,runId:t.id}});case 3:s=a.v,s&&1===s.code&&s.data&&e.$emit("view",s.data);case 4:return a.p=4,e.detailLoadingId=null,a.f(4);case 5:return a.a(2)}},a,null,[[2,,4,5]])}))()},handleAIAnalyze:function(){var t=this;return(0,c.A)((0,n.A)().m(function e(){var a,s;return(0,n.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.userId&&t.selectedRowKeys.length){e.n=1;break}return e.a(2);case 1:return t.analyzing=!0,t.showAIResult=!0,t.aiResult="",e.p=2,a=t.$i18n&&t.$i18n.locale?t.$i18n.locale:"zh-CN",e.n=3,(0,m.Ay)({url:"/api/indicator/backtest/aiAnalyze",method:"post",data:{userid:t.userId,runIds:t.selectedRowKeys,lang:a}});case 3:s=e.v,s&&1===s.code&&s.data&&s.data.analysis?t.aiResult=s.data.analysis:t.aiResult=s.msg||t.$t("dashboard.indicator.backtest.historyNoAIResult");case 4:return e.p=4,t.analyzing=!1,e.f(4);case 5:return e.a(2)}},e,null,[[2,,4,5]])}))()}}},g=f,k=a(845),_=(0,k.A)(g,v,y,!1,null,null,null),C=_.exports,w=function(){var t,e,a,s=this,i=s._self._c;return i("a-modal",{staticClass:"backtest-run-viewer",attrs:{title:s.modalTitle,visible:s.visible,width:1100,maskClosable:!1},on:{cancel:function(t){return s.$emit("cancel")}}},[s.run&&s.run.result?i("div",[s.run.id?i("a-alert",{staticStyle:{"margin-bottom":"12px"},attrs:{type:"info","show-icon":"",message:s.$t("dashboard.indicator.backtest.savedRunId",{id:s.run.id})}}):s._e(),i("div",{staticClass:"metrics-cards"},[i("div",{staticClass:"metric-card",class:{positive:s.result.totalReturn>0,negative:s.result.totalReturn<0}},[i("div",{staticClass:"metric-label"},[s._v(s._s(s.$t("dashboard.indicator.backtest.totalReturn")))]),i("div",{staticClass:"metric-value"},[s._v(s._s(s.formatPercent(s.result.totalReturn)))]),i("div",{staticClass:"metric-amount"},[s._v(s._s(s.formatMoney(s.result.totalProfit)))])]),i("div",{staticClass:"metric-card",class:{positive:s.result.annualReturn>0,negative:s.result.annualReturn<0}},[i("div",{staticClass:"metric-label"},[s._v(s._s(s.$t("dashboard.indicator.backtest.annualReturn")))]),i("div",{staticClass:"metric-value"},[s._v(s._s(s.formatPercent(s.result.annualReturn)))])]),i("div",{staticClass:"metric-card negative"},[i("div",{staticClass:"metric-label"},[s._v(s._s(s.$t("dashboard.indicator.backtest.maxDrawdown")))]),i("div",{staticClass:"metric-value"},[s._v(s._s(s.formatPercent(s.result.maxDrawdown)))])]),i("div",{staticClass:"metric-card"},[i("div",{staticClass:"metric-label"},[s._v(s._s(s.$t("dashboard.indicator.backtest.sharpeRatio")))]),i("div",{staticClass:"metric-value"},[s._v(s._s((null!==(t=s.result.sharpeRatio)&&void 0!==t?t:0).toFixed(2)))])]),i("div",{staticClass:"metric-card"},[i("div",{staticClass:"metric-label"},[s._v(s._s(s.$t("dashboard.indicator.backtest.winRate")))]),i("div",{staticClass:"metric-value"},[s._v(s._s(s.formatPercent(s.result.winRate)))])]),i("div",{staticClass:"metric-card",class:{positive:s.result.profitFactor>=1.5,negative:s.result.profitFactor<1}},[i("div",{staticClass:"metric-label"},[s._v(s._s(s.$t("dashboard.indicator.backtest.profitFactor")))]),i("div",{staticClass:"metric-value"},[s._v(s._s((null!==(e=s.result.profitFactor)&&void 0!==e?e:0).toFixed(2)))])]),i("div",{staticClass:"metric-card"},[i("div",{staticClass:"metric-label"},[s._v(s._s(s.$t("dashboard.indicator.backtest.totalTrades")))]),i("div",{staticClass:"metric-value"},[s._v(s._s(null!==(a=s.result.totalTrades)&&void 0!==a?a:0))])]),i("div",{staticClass:"metric-card negative"},[i("div",{staticClass:"metric-label"},[s._v(s._s(s.$t("dashboard.indicator.backtest.totalCommission")))]),i("div",{staticClass:"metric-value"},[s._v("-$"+s._s(s.result.totalCommission?s.result.totalCommission.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}):"0.00"))])])]),i("div",{staticClass:"chart-section"},[i("div",{staticClass:"chart-title"},[s._v(s._s(s.$t("dashboard.indicator.backtest.equityCurve")))]),i("div",{ref:"equityChartRef",staticClass:"equity-chart"})]),i("div",{staticClass:"trades-section"},[i("div",{staticClass:"chart-title"},[s._v(s._s(s.$t("dashboard.indicator.backtest.tradeHistory")))]),i("a-table",{attrs:{columns:s.tradeColumns,"data-source":s.result.trades||[],pagination:{pageSize:10,size:"small"},size:"small",scroll:{x:800},rowKey:s.rowKey},scopedSlots:s._u([{key:"type",fn:function(t){return[i("a-tag",{attrs:{color:s.getTradeTypeColor(t)}},[s._v(" "+s._s(s.getTradeTypeText(t))+" ")])]}},{key:"balance",fn:function(t){return[i("span",{staticStyle:{color:"#1890ff","font-weight":"500"}},[s._v(" $"+s._s(t?t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}):"--")+" ")])]}},{key:"profit",fn:function(t){return[i("span",{style:{color:t>0?"#52c41a":t<0?"#f5222d":"#666"}},[s._v(" "+s._s(s.formatMoney(t))+" ")])]}}])})],1)],1):i("div",{staticStyle:{padding:"12px 0"}},[i("a-empty",{attrs:{description:s.$t("dashboard.indicator.backtest.historyNoData")}})],1),i("template",{slot:"footer"},[i("a-button",{on:{click:function(t){return s.$emit("cancel")}}},[s._v(s._s(s.$t("dashboard.indicator.backtest.close")))])],1)],2)},$=[],S={name:"BacktestRunViewer",props:{visible:{type:Boolean,default:!1},run:{type:Object,default:null}},data:function(){return{equityChart:null,tradeColumns:[]}},computed:{result:function(){return this.run&&this.run.result?this.run.result:{}},modalTitle:function(){var t=this.run&&this.run.id?"#".concat(this.run.id):"";return"".concat(this.$t("dashboard.indicator.backtest.historyTitle")," ").concat(t).trim()}},watch:{visible:function(t){var e=this;t?this.$nextTick(function(){e.initColumns(),e.renderEquityChart()}):this.equityChart&&(this.equityChart.dispose(),this.equityChart=null)}},methods:{rowKey:function(t,e){return e},initColumns:function(){this.tradeColumns.length||(this.tradeColumns=[{title:this.$t("dashboard.indicator.backtest.tradeTime"),dataIndex:"time",key:"time",width:160},{title:this.$t("dashboard.indicator.backtest.tradeType"),dataIndex:"type",key:"type",width:150,scopedSlots:{customRender:"type"}},{title:this.$t("dashboard.indicator.backtest.price"),dataIndex:"price",key:"price",width:110},{title:this.$t("dashboard.indicator.backtest.amount"),dataIndex:"amount",key:"amount",width:100},{title:this.$t("dashboard.indicator.backtest.profit"),dataIndex:"profit",key:"profit",width:110,scopedSlots:{customRender:"profit"}},{title:this.$t("dashboard.indicator.backtest.balance"),dataIndex:"balance",key:"balance",width:120,scopedSlots:{customRender:"balance"}}])},getTradeTypeColor:function(t){var e={buy:"green",sell:"red",liquidation:"orange",open_long:"green",add_long:"cyan",close_long:"orange",close_long_stop:"red",close_long_profit:"lime",close_long_trailing:"gold",reduce_long:"volcano",open_short:"red",add_short:"magenta",close_short:"blue",close_short_stop:"red",close_short_profit:"cyan",close_short_trailing:"gold",reduce_short:"volcano"};return e[t]||"default"},getTradeTypeText:function(t){var e={open_long:this.$t("dashboard.indicator.backtest.openLong"),add_long:this.$t("dashboard.indicator.backtest.addLong"),close_long:this.$t("dashboard.indicator.backtest.closeLong"),close_long_stop:this.$t("dashboard.indicator.backtest.closeLongStop"),close_long_profit:this.$t("dashboard.indicator.backtest.closeLongProfit"),close_long_trailing:this.$t("dashboard.indicator.backtest.closeLongTrailing"),reduce_long:this.$t("dashboard.indicator.backtest.reduceLong"),open_short:this.$t("dashboard.indicator.backtest.openShort"),add_short:this.$t("dashboard.indicator.backtest.addShort"),close_short:this.$t("dashboard.indicator.backtest.closeShort"),close_short_stop:this.$t("dashboard.indicator.backtest.closeShortStop"),close_short_profit:this.$t("dashboard.indicator.backtest.closeShortProfit"),close_short_trailing:this.$t("dashboard.indicator.backtest.closeShortTrailing"),reduce_short:this.$t("dashboard.indicator.backtest.reduceShort"),liquidation:this.$t("dashboard.indicator.backtest.liquidation")};return e[t]||t},formatPercent:function(t){if(null===t||void 0===t)return"--";var e=t>=0?"+":"";return"".concat(e).concat(Number(t).toFixed(2),"%")},formatMoney:function(t){if(null===t||void 0===t)return"--";var e=t>=0?"+":"-";return"".concat(e,"$").concat(Math.abs(t).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}))},renderEquityChart:function(){var t=this;if(this.$refs.equityChartRef){this.equityChart&&this.equityChart.dispose(),this.equityChart=d.init(this.$refs.equityChartRef);var e=this.result.equityCurve||[],a=e.map(function(t){return t.time||t.date}),s=e.map(function(t){return void 0!==t.value?t.value:t.equity}),i=s[0]||1e5,r=s[s.length-1]||i,n=r>=i,c=n?"#52c41a":"#f5222d",o=n?[{offset:0,color:"rgba(82, 196, 26, 0.35)"},{offset:1,color:"rgba(82, 196, 26, 0.02)"}]:[{offset:0,color:"rgba(245, 34, 45, 0.35)"},{offset:1,color:"rgba(245, 34, 45, 0.02)"}],l={tooltip:{trigger:"axis"},grid:{left:"3%",right:"4%",bottom:"12%",top:"8%",containLabel:!0},xAxis:{type:"category",data:a,boundaryGap:!1},yAxis:{type:"value"},series:[{name:this.$t("dashboard.indicator.backtest.strategy"),type:"line",data:s,smooth:.4,symbol:"none",sampling:"lttb",lineStyle:{width:2.5,color:c},areaStyle:{color:new d.graphic.LinearGradient(0,0,0,1,o)}}]};this.equityChart.setOption(l),window.addEventListener("resize",function(){return t.equityChart&&t.equityChart.resize()})}}}},I=S,x=(0,k.A)(I,w,$,!1,null,"a484239a",null),R=x.exports,P={name:"BacktestCenter",mixins:[u.t],components:{BacktestHistoryDrawer:C,BacktestRunViewer:R},data:function(){return{activeTab:"indicator",userId:null,indicators:[],loadingIndicators:!1,selectedIndicatorId:void 0,strategies:[],loadingStrategies:!1,selectedStrategyId:void 0,market:"Crypto",symbolInput:"",symbol:"",symbolOptions:[],symbolSearchTimer:null,timeframe:"1D",startDate:l()().subtract(6,"months"),endDate:l()(),datePreset:"6m",initialCapital:1e4,leverage:1,commission:.02,slippage:0,tradeDirection:"long",stopLossPct:0,takeProfitPct:0,entryPct:100,trailingEnabled:!1,trailingStopPct:0,trailingActivationPct:0,running:!1,runTip:"",runTimer:null,hasResult:!1,backtestRunId:null,result:{},equityChartInstance:null,showHistoryDrawer:!1,historyIndicatorId:null,showRunViewer:!1,selectedRun:null}},computed:{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},selectedIndicatorObj:function(){var t=this;return this.selectedIndicatorId&&this.indicators.find(function(e){return e.id===t.selectedIndicatorId})||null},selectedStrategyObj:function(){var t=this;return this.selectedStrategyId&&this.strategies.find(function(e){return e.id===t.selectedStrategyId})||null},canRun:function(){return this.selectedIndicatorId&&this.symbol&&this.market&&this.startDate&&this.endDate},datePresets:function(){return[{key:"1m",label:"1M",months:1},{key:"3m",label:"3M",months:3},{key:"6m",label:"6M",months:6},{key:"1y",label:"1Y",months:12},{key:"2y",label:"2Y",months:24}]},tradeColumns:function(){return[{title:"#",dataIndex:"id",width:50},{title:this.$t("backtest-center.result.colType"),dataIndex:"type",scopedSlots:{customRender:"type"},width:80},{title:this.$t("backtest-center.result.colEntry"),dataIndex:"entryDate",width:120},{title:this.$t("backtest-center.result.colExit"),dataIndex:"exitDate",width:120},{title:this.$t("backtest-center.result.colEntryPrice"),dataIndex:"entryPrice",width:100},{title:this.$t("backtest-center.result.colExitPrice"),dataIndex:"exitPrice",width:100},{title:this.$t("backtest-center.result.colProfit"),dataIndex:"profit",scopedSlots:{customRender:"profit"},width:120}]}},created:function(){var t=this;return(0,c.A)((0,n.A)().m(function e(){return(0,n.A)().w(function(e){while(1)switch(e.n){case 0:return e.n=1,t.loadUserId();case 1:t.loadIndicators(),t.loadStrategies(),t.parseQuery();case 2:return e.a(2)}},e)}))()},beforeDestroy:function(){this.equityChartInstance&&this.equityChartInstance.dispose(),clearInterval(this.runTimer),clearTimeout(this.symbolSearchTimer)},methods:{loadUserId:function(){var t=this;return(0,c.A)((0,n.A)().m(function e(){var a;return(0,n.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,b.ug)();case 1:a=e.v,a&&a.data&&(t.userId=a.data.id||a.data.user_id||1),e.n=3;break;case 2:e.p=2,e.v,t.userId=1;case 3:return e.a(2)}},e,null,[[0,2]])}))()},loadIndicators:function(){var t=this;return(0,c.A)((0,n.A)().m(function e(){var a;return(0,n.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.userId){e.n=1;break}return e.a(2);case 1:return t.loadingIndicators=!0,e.p=2,e.n=3,(0,m.Ay)({url:"/api/indicator/getIndicators",method:"get",params:{userid:t.userId}});case 3:a=e.v,a&&a.data&&Array.isArray(a.data)&&(t.indicators=a.data.map(function(t){return(0,r.A)((0,r.A)({},t),{},{type:"python",source:1===t.is_buy||"1"===t.is_buy?"purchased":"custom"})})),e.n=5;break;case 4:e.p=4,e.v;case 5:return e.p=5,t.loadingIndicators=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()},loadStrategies:function(){var t=this;return(0,c.A)((0,n.A)().m(function e(){var a;return(0,n.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingStrategies=!0,e.p=1,e.n=2,(0,h.EM)();case 2:a=e.v,a&&a.data&&Array.isArray(a.data)&&(t.strategies=a.data),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.p=4,t.loadingStrategies=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},parseQuery:function(){var t=this,e=this.$route.query;"strategy"===e.tab&&(this.activeTab="strategy"),e.indicator_id&&(this.selectedIndicatorId=Number(e.indicator_id)||void 0,"history"===e.view&&this.$nextTick(function(){return t.openIndicatorHistory()})),e.strategy_id&&(this.selectedStrategyId=Number(e.strategy_id)||void 0)},onIndicatorChange:function(){this.hasResult=!1},onMarketChange:function(){this.symbol="",this.symbolInput="",this.symbolOptions=[]},handleSymbolSearch:function(t){var e=this;clearTimeout(this.symbolSearchTimer),!t||t.length<1?this.symbolOptions=[]:this.symbolSearchTimer=setTimeout((0,c.A)((0,n.A)().m(function a(){var s;return(0,n.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,p._3)({market:e.market,keyword:t,limit:15});case 1:s=a.v,s&&s.data&&Array.isArray(s.data)&&(e.symbolOptions=s.data.map(function(t){return{value:t.symbol,text:"".concat(t.symbol," - ").concat(t.name||"")}})),a.n=3;break;case 2:a.p=2,a.v;case 3:return a.a(2)}},a,null,[[0,2]])})),300)},handleSymbolSelect:function(t){this.symbol=t},applyDatePreset:function(t){this.datePreset=t.key,this.startDate=l()().subtract(t.months,"months"),this.endDate=l()()},fmtPct:function(t){return null===t||void 0===t?"--":(t>=0?"+":"")+(100*t).toFixed(2)+"%"},fmtMoney:function(t){if(null===t||void 0===t)return"$0.00";var e=t>=0?"+":"";return e+"$"+Math.abs(t).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},runBacktest:function(){var t=this;return(0,c.A)((0,n.A)().m(function e(){var a,s,i,r,c;return(0,n.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.symbol){e.n=1;break}return t.$message.warning(t.$t("backtest-center.config.symbolRequired")),e.a(2);case 1:if(t.selectedIndicatorId){e.n=2;break}return e.a(2);case 2:return t.running=!0,t.hasResult=!1,t.runTip="",a=0,t.runTimer=setInterval(function(){a++;var e=[t.$t("backtest-center.tip.fetching"),t.$t("backtest-center.tip.computing"),t.$t("backtest-center.tip.analyzing")];t.runTip=e[Math.min(Math.floor(a/5),e.length-1)]},1e3),e.p=3,s=function(t){return Number(t||0)/100},i={risk:{stopLossPct:s(t.stopLossPct),takeProfitPct:s(t.takeProfitPct),trailing:{enabled:t.trailingEnabled,pct:s(t.trailingStopPct),activationPct:s(t.trailingActivationPct)}},position:{entryPct:s(t.entryPct)},scale:{trendAdd:{enabled:!1,stepPct:0,sizePct:0,maxTimes:0},dcaAdd:{enabled:!1,stepPct:0,sizePct:0,maxTimes:0},trendReduce:{enabled:!1,stepPct:0,sizePct:0,maxTimes:0},adverseReduce:{enabled:!1,stepPct:0,sizePct:0,maxTimes:0}}},e.n=4,(0,m.Ay)({url:"/api/indicator/backtest",method:"post",data:{userid:t.userId||1,indicatorId:t.selectedIndicatorId,symbol:t.symbol,market:t.market,timeframe:t.timeframe,startDate:t.startDate.format("YYYY-MM-DD"),endDate:t.endDate.format("YYYY-MM-DD"),initialCapital:t.initialCapital,commission:s(t.commission),slippage:s(t.slippage),leverage:t.leverage,tradeDirection:t.tradeDirection,strategyConfig:i,enableMtf:t.market&&"crypto"===t.market.toLowerCase()},timeout:6e5});case 4:r=e.v,1===r.code&&r.data?(r.data.runId&&(t.backtestRunId=r.data.runId),t.result=r.data.result||r.data,t.hasResult=!0,t.$nextTick(function(){return t.renderEquityChart()}),t.$message.success(t.$t("backtest-center.result.success"))):t.$message.error(r.msg||t.$t("backtest-center.result.failed")),e.n=6;break;case 5:e.p=5,c=e.v,t.$message.error(c.message||t.$t("backtest-center.result.failed"));case 6:return e.p=6,t.running=!1,clearInterval(t.runTimer),t.runTimer=null,t.runTip="",e.f(6);case 7:return e.a(2)}},e,null,[[3,5,6,7]])}))()},renderEquityChart:function(){if(this.result.equityCurve&&this.result.equityCurve.length){var t=this.$refs.equityChart;if(t){this.equityChartInstance&&this.equityChartInstance.dispose(),this.equityChartInstance=d.init(t);var e=this.isDarkTheme,a=this.result.equityCurve,s=a.map(function(t){return t.date||t[0]}),i=a.map(function(t){return t.equity||t[1]});this.equityChartInstance.setOption({backgroundColor:"transparent",tooltip:{trigger:"axis",backgroundColor:e?"#1e222d":"#fff",borderColor:e?"#333":"#ddd",textStyle:{color:e?"#d1d4dc":"#333"}},grid:{left:60,right:20,top:20,bottom:30},xAxis:{type:"category",data:s,axisLabel:{color:e?"#777":"#999",fontSize:11},axisLine:{lineStyle:{color:e?"#333":"#e0e0e0"}}},yAxis:{type:"value",axisLabel:{color:e?"#777":"#999",formatter:function(t){return"$"+t.toLocaleString()}},splitLine:{lineStyle:{color:e?"rgba(255,255,255,0.06)":"#f0f0f0"}}},series:[{type:"line",data:i,smooth:.3,showSymbol:!1,lineStyle:{width:2,color:"#1890ff"},areaStyle:{color:new d.graphic.LinearGradient(0,0,0,1,[{offset:0,color:"rgba(24,144,255,0.25)"},{offset:1,color:"rgba(24,144,255,0.02)"}])}}]})}}},openIndicatorHistory:function(){this.selectedIndicatorId&&(this.historyIndicatorId=this.selectedIndicatorId,this.showHistoryDrawer=!0)},handleViewRun:function(t){this.selectedRun=t,this.showRunViewer=!0},openStrategyBacktest:function(){var t=this.selectedStrategyObj;if(t){if(t.indicator_id){var e=this.indicators.find(function(e){return e.id===t.indicator_id});if(e)return this.activeTab="indicator",this.selectedIndicatorId=e.id,this.symbol=t.symbol||"",this.symbolInput=t.symbol||"",void(this.market=t.market_type||"Crypto")}this.$message.info(this.$t("backtest-center.strategy.running"))}}}},A=P,T=(0,k.A)(A,s,i,!1,null,"b6096830",null),D=T.exports}}]);