"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[878],{18878:function(t,e,a){a.r(e),a.d(e,{default:function(){return Mt}});a(74423);var s=function(){var t,e=this,a=e._self._c;return a("div",{staticClass:"trading-assistant",class:{"theme-dark":e.isDarkTheme}},[a("div",{staticClass:"assistant-guide-bar"},[a("div",{staticClass:"assistant-guide-copy"},[a("div",{staticClass:"assistant-guide-eyebrow"},[e._v(e._s(e.$t("trading-assistant.guide.eyebrow")))]),a("div",{staticClass:"assistant-guide-title"},[e._v(e._s(e.$t("trading-assistant.guide.title")))]),a("div",{staticClass:"assistant-guide-desc"},[e._v(e._s(e.$t("trading-assistant.guide.desc")))])]),a("div",{staticClass:"assistant-guide-steps"},[a("div",{staticClass:"assistant-step-card"},[a("div",{staticClass:"assistant-step-index"},[e._v("1")]),a("div",{staticClass:"assistant-step-body"},[a("div",{staticClass:"assistant-step-title"},[e._v(e._s(e.$t("trading-assistant.guide.step1Title")))]),a("div",{staticClass:"assistant-step-desc"},[e._v(e._s(e.$t("trading-assistant.guide.step1Desc")))])])]),a("div",{staticClass:"assistant-step-card"},[a("div",{staticClass:"assistant-step-index"},[e._v("2")]),a("div",{staticClass:"assistant-step-body"},[a("div",{staticClass:"assistant-step-title"},[e._v(e._s(e.$t("trading-assistant.guide.step2Title")))]),a("div",{staticClass:"assistant-step-desc"},[e._v(e._s(e.$t("trading-assistant.guide.step2Desc")))])])]),a("div",{staticClass:"assistant-step-card"},[a("div",{staticClass:"assistant-step-index"},[e._v("3")]),a("div",{staticClass:"assistant-step-body"},[a("div",{staticClass:"assistant-step-title"},[e._v(e._s(e.$t("trading-assistant.guide.step3Title")))]),a("div",{staticClass:"assistant-step-desc"},[e._v(e._s(e.$t("trading-assistant.guide.step3Desc")))])])])]),a("div",{staticClass:"assistant-guide-actions"},[a("a-button",{on:{click:e.goToStrategyTab}},[a("a-icon",{attrs:{type:"appstore"}}),e._v(" "+e._s(e.$t("trading-assistant.guide.secondary"))+" ")],1),a("a-button",{attrs:{type:"primary"},on:{click:e.openCreateStrategyFromGuide}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" "+e._s(e.$t("trading-assistant.guide.primary"))+" ")],1)],1)]),a("a-tabs",{staticClass:"top-level-tabs",attrs:{animated:!1},model:{value:e.topTab,callback:function(t){e.topTab=t},expression:"topTab"}},[a("a-tab-pane",{key:"overview",attrs:{tab:e.$t("trading-assistant.tabs.overview")}},["overview"===e.topTab?a("dashboard-overview"):e._e()],1),a("a-tab-pane",{key:"strategy",attrs:{tab:e.$t("trading-assistant.tabs.strategyManage")}},[a("a-row",{staticClass:"strategy-layout",attrs:{gutter:24}},[a("a-col",{staticClass:"strategy-list-col",attrs:{xs:24,sm:24,md:10,lg:8,xl:8}},[a("a-card",{staticClass:"strategy-list-card",attrs:{bordered:!1}},[a("div",{staticClass:"card-title",attrs:{slot:"title"},slot:"title"},[a("span",[e._v(e._s(e.$t("trading-assistant.strategyList")))]),a("a-button",{attrs:{type:"primary",size:"small"},on:{click:e.handleCreateStrategy}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" "+e._s(e.$t("trading-assistant.createStrategy"))+" ")],1)],1),a("div",{staticClass:"group-mode-switch"},[a("span",{staticClass:"group-mode-label"},[e._v(e._s(e.$t("trading-assistant.groupBy"))+":")]),a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:e.groupByMode,callback:function(t){e.groupByMode=t},expression:"groupByMode"}},[a("a-radio-button",{attrs:{value:"strategy"}},[a("a-icon",{attrs:{type:"folder"}}),e._v(" "+e._s(e.$t("trading-assistant.groupByStrategy"))+" ")],1),a("a-radio-button",{attrs:{value:"symbol"}},[a("a-icon",{attrs:{type:"stock"}}),e._v(" "+e._s(e.$t("trading-assistant.groupBySymbol"))+" ")],1)],1)],1),a("a-spin",{attrs:{spinning:e.loading}},[e.loading||0!==e.strategies.length?a("div",{staticClass:"strategy-grouped-list"},[e._l(e.groupedStrategies.groups,function(t){return a("div",{key:t.id,staticClass:"strategy-group"},[a("div",{staticClass:"strategy-group-header",on:{click:function(a){return e.toggleGroup(t.id)}}},[a("div",{staticClass:"group-header-left"},[a("a-icon",{staticClass:"collapse-icon",attrs:{type:e.collapsedGroups[t.id]?"right":"down"}}),a("a-icon",{staticClass:"group-icon",attrs:{type:"symbol"===e.groupByMode?"stock":"folder"}}),a("span",{staticClass:"group-name"},[e._v(e._s(t.baseName))]),a("a-tag",{attrs:{size:"small",color:"blue"}},[e._v(e._s(t.strategies.length)+" "+e._s("symbol"===e.groupByMode?e.$t("trading-assistant.strategyCount"):e.$t("trading-assistant.symbolCount")))])],1),a("div",{staticClass:"group-header-right",on:{click:function(t){t.stopPropagation()}}},[t.runningCount>0?a("span",{staticClass:"group-status running"},[e._v(" "+e._s(t.runningCount)+" "+e._s(e.$t("trading-assistant.status.running"))+" ")]):e._e(),t.stoppedCount>0?a("span",{staticClass:"group-status stopped"},[e._v(" "+e._s(t.stoppedCount)+" "+e._s(e.$t("trading-assistant.status.stopped"))+" ")]):e._e(),a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var s=a.key;return e.handleGroupMenuClick(s,t)}},slot:"overlay"},[a("a-menu-item",{key:"startAll"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startAll"))+" ")],1),a("a-menu-item",{key:"stopAll"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopAll"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"deleteAll",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteAll"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)]),a("div",{directives:[{name:"show",rawName:"v-show",value:!e.collapsedGroups[t.id],expression:"!collapsedGroups[group.id]"}],staticClass:"strategy-group-content"},e._l(t.strategies,function(t){return a("div",{key:t.id,class:["strategy-list-item",{active:e.selectedStrategy&&e.selectedStrategy.id===t.id}],on:{click:function(a){return e.handleSelectStrategy(t)}}},[a("div",{staticClass:"strategy-item-content"},[a("div",{staticClass:"strategy-item-header"},[a("div",{staticClass:"strategy-name-wrapper"},["strategy"===e.groupByMode?[t.trading_config&&t.trading_config.symbol?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"dollar"}}),e._v(" "+e._s(t.trading_config.symbol)+" ")],1):e._e()]:[a("span",{staticClass:"info-item strategy-name-text"},[a("a-icon",{attrs:{type:"thunderbolt"}}),e._v(" "+e._s(t.displayInfo?t.displayInfo.strategyName:t.strategy_name)+" ")],1),t.displayInfo&&t.displayInfo.timeframe?a("a-tag",{attrs:{size:"small",color:"cyan"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"clock-circle"}}),e._v(" "+e._s(t.displayInfo.timeframe)+" ")],1):e._e(),t.displayInfo&&t.displayInfo.indicatorName&&"-"!==t.displayInfo.indicatorName?a("a-tag",{attrs:{size:"small",color:"purple"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"line-chart"}}),e._v(" "+e._s(t.displayInfo.indicatorName)+" ")],1):e._e()],"script"===t.strategy_mode?a("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{size:"small",color:"green"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"code"}}),e._v(e._s(e.$t("trading-assistant.strategyMode.script"))+" ")],1):e._e(),a("span",{staticClass:"status-label",class:[t.status?"status-".concat(t.status):"",{"status-stopped":"stopped"===t.status}]},[e._v(" "+e._s(e.getStatusText(t.status))+" ")])],2)])]),a("div",{staticClass:"strategy-item-actions",on:{click:function(t){t.stopPropagation()}}},[a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var s=a.key;return e.handleMenuClick(s,t)}},slot:"overlay"},["stopped"===t.status?a("a-menu-item",{key:"start"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===t.status?a("a-menu-item",{key:"stop"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e(),a("a-menu-divider"),a("a-menu-item",{key:"edit"},[a("a-icon",{attrs:{type:"edit"}}),e._v(" "+e._s(e.$t("trading-assistant.editStrategy"))+" ")],1),a("a-menu-item",{key:"backtest"},[a("a-icon",{attrs:{type:"experiment"}}),e._v(" "+e._s(e.$t("dashboard.indicator.action.backtest"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"delete",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteStrategy"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)])}),0)])}),e._l(e.groupedStrategies.ungrouped,function(t){return a("div",{key:t.id,class:["strategy-list-item",{active:e.selectedStrategy&&e.selectedStrategy.id===t.id}],on:{click:function(a){return e.handleSelectStrategy(t)}}},[a("div",{staticClass:"strategy-item-content"},[a("div",{staticClass:"strategy-item-header"},[a("div",{staticClass:"strategy-name-wrapper"},[t.exchange_config&&t.exchange_config.exchange_id?a("a-tag",{staticClass:"exchange-tag",attrs:{color:e.getExchangeTagColor(t.exchange_config.exchange_id),size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"bank"}}),e._v(" "+e._s(e.getExchangeDisplayName(t.exchange_config.exchange_id))+" ")],1):e._e(),a("span",{staticClass:"strategy-name"},[e._v(e._s(t.strategy_name))]),"PromptBasedStrategy"===t.strategy_type?a("a-tag",{staticClass:"strategy-type-tag",attrs:{color:"purple",size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"robot"}}),e._v(" AI ")],1):e._e()],1)]),a("div",{staticClass:"strategy-item-info"},[t.trading_config&&t.trading_config.symbol?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"dollar"}}),e._v(" "+e._s(t.trading_config.symbol)+" ")],1):e._e(),a("span",{staticClass:"status-label",class:[t.status?"status-".concat(t.status):"",{"status-stopped":"stopped"===t.status}]},[e._v(" "+e._s(e.getStatusText(t.status))+" ")])])]),a("div",{staticClass:"strategy-item-actions",on:{click:function(t){t.stopPropagation()}}},[a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var s=a.key;return e.handleMenuClick(s,t)}},slot:"overlay"},["stopped"===t.status?a("a-menu-item",{key:"start"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===t.status?a("a-menu-item",{key:"stop"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e(),a("a-menu-divider"),a("a-menu-item",{key:"edit"},[a("a-icon",{attrs:{type:"edit"}}),e._v(" "+e._s(e.$t("trading-assistant.editStrategy"))+" ")],1),a("a-menu-item",{key:"backtest"},[a("a-icon",{attrs:{type:"experiment"}}),e._v(" "+e._s(e.$t("dashboard.indicator.action.backtest"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"delete",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteStrategy"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)])})],2):a("div",{staticClass:"strategy-empty-state"},[a("a-empty",{attrs:{description:e.$t("trading-assistant.empty.title")}}),a("div",{staticClass:"strategy-empty-desc"},[e._v(e._s(e.$t("trading-assistant.empty.desc")))]),a("div",{staticClass:"strategy-empty-path"},[e._v(e._s(e.$t("trading-assistant.empty.path")))]),a("a-button",{attrs:{type:"primary"},on:{click:e.openCreateStrategyFromGuide}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" "+e._s(e.$t("trading-assistant.empty.primary"))+" ")],1)],1)])],1)],1),a("a-col",{staticClass:"strategy-detail-col",attrs:{xs:24,sm:24,md:14,lg:16,xl:16}},[e.selectedStrategy?a("div",{staticClass:"strategy-detail-panel"},[a("a-card",{staticClass:"strategy-header-card",attrs:{bordered:!1}},[a("div",{staticClass:"strategy-header"},[a("div",{staticClass:"header-left"},[a("div",{staticClass:"strategy-title-row"},[a("h3",{staticClass:"strategy-title"},[e._v(e._s(e.selectedStrategy.strategy_name))]),a("div",{staticClass:"status-badge",class:["status-".concat(e.selectedStrategy.status)]},[a("span",{staticClass:"status-dot"}),e._v(" "+e._s(e.getStatusText(e.selectedStrategy.status))+" ")])]),a("div",{staticClass:"key-stats-grid"},[e.selectedStrategy.initial_capital||e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.initial_capital?a("div",{staticClass:"stat-card"},[a("div",{staticClass:"stat-icon investment"},[a("a-icon",{attrs:{type:"wallet"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.totalInvestment")))]),a("div",{staticClass:"stat-value"},[e._v("$"+e._s(parseFloat(e.selectedStrategy.initial_capital||(null===(t=e.selectedStrategy.trading_config)||void 0===t?void 0:t.initial_capital)||0).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})))])])]):e._e(),null!==e.currentEquity?a("div",{staticClass:"stat-card"},[a("div",{staticClass:"stat-icon equity"},[a("a-icon",{attrs:{type:"fund"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.currentEquity")))]),a("div",{staticClass:"stat-value",class:e.getEquityColorClass},[e._v(e._s(e.formatCurrency(e.currentEquity)))])])]):e._e(),null!==e.totalPnl?a("div",{staticClass:"stat-card pnl-card",class:{profit:e.totalPnl>0,loss:e.totalPnl<0}},[a("div",{staticClass:"stat-icon pnl"},[a("a-icon",{attrs:{type:e.totalPnl>=0?"rise":"fall"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.totalPnl")))]),a("div",{staticClass:"stat-value",class:e.getPnlColorClass},[e._v(" "+e._s(e.formatPnl(e.totalPnl))+" "),a("span",{staticClass:"pnl-percent"},[e._v("("+e._s(e.formatPnlPercent(e.totalPnlPercent))+")")])])])]):e._e()]),a("div",{staticClass:"strategy-tags"},[e.selectedStrategy.trading_config?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"stock"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.symbol))])],1):e._e(),e.selectedStrategy.indicator_config&&e.selectedStrategy.indicator_config.indicator_name?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"line-chart"}}),a("span",[e._v(e._s(e.selectedStrategy.indicator_config.indicator_name))])],1):e._e(),e.selectedStrategy.trading_config?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"thunderbolt"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.leverage||1)+"x")])],1):e._e(),e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.trade_direction?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"swap"}}),a("span",[e._v(e._s(e.getTradeDirectionText(e.selectedStrategy.trading_config.trade_direction)))])],1):e._e(),e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.timeframe?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"clock-circle"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.timeframe))])],1):e._e()])]),a("div",{staticClass:"header-right"},["stopped"===e.selectedStrategy.status?a("a-button",{staticClass:"action-btn start-btn",attrs:{type:"primary",size:"large"},on:{click:function(t){return e.handleStartStrategy(e.selectedStrategy.id)}}},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===e.selectedStrategy.status?a("a-button",{staticClass:"action-btn stop-btn",attrs:{type:"danger",size:"large"},on:{click:function(t){return e.handleStopStrategy(e.selectedStrategy.id)}}},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e()],1)])]),a("a-card",{staticClass:"strategy-content-card",attrs:{bordered:!1}},[a("a-tabs",{attrs:{defaultActiveKey:"positions"}},[a("a-tab-pane",{key:"positions",attrs:{tab:e.$t("trading-assistant.tabs.positions")}},[a("position-records",{attrs:{"strategy-id":e.selectedStrategy.id,"market-type":e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.market_type||"swap",leverage:e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.leverage||1,loading:e.loadingRecords}})],1),a("a-tab-pane",{key:"trades",attrs:{tab:e.$t("trading-assistant.tabs.tradingRecords")}},[a("trading-records",{attrs:{"strategy-id":e.selectedStrategy.id,loading:e.loadingRecords}})],1),a("a-tab-pane",{key:"performance",attrs:{tab:e.$t("trading-assistant.tabs.performance")}},[a("performance-analysis",{attrs:{"strategy-id":e.selectedStrategy.id,"is-dark":e.isDarkTheme}})],1),a("a-tab-pane",{key:"logs",attrs:{tab:e.$t("trading-assistant.tabs.logs")}},[a("strategy-logs",{attrs:{"strategy-id":e.selectedStrategy.id,"is-dark":e.isDarkTheme}})],1)],1)],1)],1):a("div",{staticClass:"empty-detail"},[a("a-empty",{attrs:{description:e.$t("trading-assistant.selectStrategy")}})],1)])],1),a("a-modal",{staticClass:"mode-selector-modal",attrs:{visible:e.showModeSelector,title:e.$t("trading-assistant.selectMode"),width:e.isMobile?"95%":700,footer:null,maskClosable:!0,bodyStyle:{padding:"16px 24px"}},on:{cancel:function(t){e.showModeSelector=!1}}},[a("strategy-type-selector",{attrs:{selected:e.strategyMode,"is-dark":e.isDarkTheme},on:{select:e.handleModeSelect,"use-template":e.handleUseTemplate}})],1),a("a-modal",{attrs:{visible:e.showFormModal,title:e.editingStrategy?e.$t("trading-assistant.editStrategy"):e.$t("trading-assistant.createStrategy")+("script"===e.strategyMode?" - "+e.$t("trading-assistant.strategyMode.script"):""),width:e.isMobile?"95%":1120,confirmLoading:e.saving,maskClosable:!1,wrapClassName:e.strategyFormWrapClass,bodyStyle:{maxHeight:"76vh",overflowY:"auto",paddingBottom:"8px"}},on:{ok:e.handleSubmit,cancel:e.handleCloseModal}},[a("a-spin",{attrs:{spinning:e.loadingIndicators}},[e.editingStrategy||"script"===e.strategyMode?e._e():a("div",{staticClass:"creation-mode-toggle"},[a("div",{staticClass:"mode-meta"},[a("div",{staticClass:"mode-title"},[e._v(e._s(e.$t("trading-assistant.selectMode")))]),a("div",{staticClass:"mode-hint"},[e._v(e._s(e.isSimpleMode?e.$t("trading-assistant.form.simpleModeHint"):e.$t("trading-assistant.form.advancedModeHint")))])]),a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:e.creationMode,callback:function(t){e.creationMode=t},expression:"creationMode"}},[a("a-radio-button",{attrs:{value:"simple"}},[a("a-icon",{attrs:{type:"rocket"}}),e._v(" "+e._s(e.$t("trading-assistant.form.simpleMode"))+" ")],1),a("a-radio-button",{attrs:{value:"advanced"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.advancedMode"))+" ")],1)],1)],1),a("a-steps",{staticClass:"steps-container",attrs:{current:e.displayCurrentStep}},["script"===e.strategyMode?[a("a-step",{attrs:{title:e.$t("trading-assistant.form.simpleStep1")}}),a("a-step",{attrs:{title:e.$t("trading-assistant.editor.title")}}),a("a-step",{attrs:{title:e.$t("trading-assistant.form.step3Signal")}})]:[a("a-step",{attrs:{title:e.isSimpleMode&&!e.editingStrategy?e.$t("trading-assistant.form.simpleStep1"):e.$t("trading-assistant.form.step1")}}),e.isAdvancedMode||e.editingStrategy?a("a-step",{attrs:{title:e.$t("trading-assistant.form.step2Params")}}):e._e(),a("a-step",{attrs:{title:e.isSimpleMode&&!e.editingStrategy?e.$t("trading-assistant.form.simpleStep2"):e.$t("trading-assistant.form.step3Signal")}})]],2),a("div",{staticClass:"form-container"},[a("div",{directives:[{name:"show",rawName:"v-show",value:0===e.currentStep,expression:"currentStep === 0"}],staticClass:"step-content"},["indicator"===e.strategyType&&"script"!==e.strategyMode?a("div",[a("a-form",{attrs:{form:e.form,layout:"vertical"}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicator")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["indicator_id",{rules:[{required:!0,message:e.$t("trading-assistant.validation.indicatorRequired")}]}],expression:"['indicator_id', { rules: [{ required: true, message: $t('trading-assistant.validation.indicatorRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectIndicator"),"show-search":"",optionLabelProp:"label","filter-option":e.filterIndicatorOption,loading:e.loadingIndicators,getPopupContainer:function(t){return t.parentNode}},on:{focus:e.handleIndicatorSelectFocus,change:e.handleIndicatorChange}},e._l(e.availableIndicators,function(t){return a("a-select-option",{key:String(t.id),attrs:{value:String(t.id),label:e.getIndicatorOptionLabel(t)}},[a("div",{staticClass:"indicator-option"},[a("div",{staticClass:"indicator-option-main"},[a("span",{staticClass:"indicator-name"},[e._v(e._s(t.name))]),t.description?a("span",{staticClass:"indicator-option-desc"},[e._v(e._s(t.description))]):e._e()]),t.type?a("a-tag",{attrs:{size:"small",color:e.getIndicatorTypeColor(t.type)}},[e._v(" "+e._s(e.getIndicatorTypeName(t.type))+" ")]):e._e()],1)])}),1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.indicatorHint"))+" ")])],1),e.selectedIndicator?a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicatorDescription")}},[a("div",{staticClass:"selected-indicator-card"},[a("div",{staticClass:"selected-indicator-header"},[a("span",{staticClass:"selected-indicator-name"},[e._v(e._s(e.selectedIndicator.name))]),e.selectedIndicator.type?a("a-tag",{attrs:{size:"small",color:e.getIndicatorTypeColor(e.selectedIndicator.type)}},[e._v(" "+e._s(e.getIndicatorTypeName(e.selectedIndicator.type))+" ")]):e._e()],1),a("div",{staticClass:"indicator-description"},[e._v(" "+e._s(e.selectedIndicator.description||e.$t("trading-assistant.form.noDescription"))+" ")])])]):e._e(),e.indicatorParams.length>0?a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicatorParams")}},[a("div",{staticClass:"indicator-params-form"},[a("a-row",{attrs:{gutter:16}},e._l(e.indicatorParams,function(t){return a("a-col",{key:t.name,attrs:{xs:24,sm:12,md:8}},[a("div",{staticClass:"param-item"},[a("label",{staticClass:"param-label"},[e._v(" "+e._s(t.name)+" "),t.description?a("a-tooltip",{attrs:{title:t.description}},[a("a-icon",{staticStyle:{"margin-left":"4px",color:"#999"},attrs:{type:"question-circle"}})],1):e._e()],1),"int"===t.type?a("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:0,size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):"float"===t.type?a("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:4,size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):"bool"===t.type?a("a-switch",{attrs:{size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):a("a-input",{attrs:{size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}})],1)])}),1),a("div",{staticClass:"form-item-hint",staticStyle:{"margin-top":"8px"}},[e._v(" "+e._s(e.$t("trading-assistant.form.indicatorParamsHint"))+" ")])],1)]):e._e(),a("a-divider"),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyName")}},[a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["strategy_name",{rules:[{required:!0,message:e.$t("trading-assistant.validation.strategyNameRequired")}]}],expression:"['strategy_name', { rules: [{ required: true, message: $t('trading-assistant.validation.strategyNameRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.inputStrategyName")}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.strategyNameHint"))+" ")])],1),e.isSimpleMode&&!e.editingStrategy?a("div",{staticClass:"simple-essentials-card"},[a("div",{staticClass:"simple-mode-hero"},[a("div",{staticClass:"simple-mode-hero-main"},[a("div",{staticClass:"simple-mode-kicker"},[e._v(e._s(e.$t("trading-assistant.form.simpleModePreset")))]),a("div",{staticClass:"simple-mode-hero-desc"},[e._v(e._s(e.$t("trading-assistant.form.simpleModePresetValue")))])]),a("div",{staticClass:"simple-mode-badges"},[a("a-tag",[e._v("15m")]),a("a-tag",{attrs:{color:"blue"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),a("a-tag",{attrs:{color:"purple"}},[e._v("5x")])],1)]),a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.simpleModeSectionCore")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.simpleModeSectionCoreDesc")))])]),a("a-form-item",{staticClass:"compact-form-item"},[a("span",{staticClass:"required-label",attrs:{slot:"label"},slot:"label"},[a("span",{staticClass:"required-star"},[e._v("*")]),e._v(e._s(e.$t("trading-assistant.form.symbol"))+" ")]),a("a-select",{attrs:{value:e.selectedSymbols[0],placeholder:e.$t("trading-assistant.placeholders.selectSymbol"),"show-search":"","filter-option":e.filterWatchlistOptionWithAdd,loading:e.loadingWatchlist,"allow-clear":"",getPopupContainer:function(t){return t.parentNode}},on:{change:e.handleSimpleSymbolChange}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.symbolHintCrypto"))+" ")])],1),a("a-row",{staticClass:"compact-grid-row",attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.initialCapital")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["initial_capital",{rules:[{required:!0,message:e.$t("trading-assistant.validation.initialCapitalRequired")}],initialValue:1e3}],expression:"['initial_capital', { rules: [{ required: true, message: $t('trading-assistant.validation.initialCapitalRequired') }], initialValue: 1000 }]"}],staticStyle:{width:"100%"},attrs:{min:10,step:100,precision:2}})],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.leverage")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["leverage",{initialValue:5,rules:[{required:!0,message:e.$t("trading-assistant.validation.leverageRequired")}]}],expression:"['leverage', { initialValue: 5, rules: [{ required: true, message: $t('trading-assistant.validation.leverageRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:"spot"===e.form.getFieldValue("market_type")?1:125,step:1,disabled:"spot"===e.form.getFieldValue("market_type")}})],1)],1)],1),a("a-row",{staticClass:"compact-grid-row",attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.marketType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["market_type",{initialValue:"swap"}],expression:"['market_type', { initialValue: 'swap' }]"}],on:{change:e.handleMarketTypeChange}},[a("a-radio",{attrs:{value:"swap"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),a("a-radio",{attrs:{value:"spot"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeSpot")))])],1)],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.tradeDirection")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["trade_direction",{initialValue:"long"}],expression:"['trade_direction', { initialValue: 'long' }]"}],attrs:{disabled:"spot"===e.form.getFieldValue("market_type")}},[a("a-radio",{attrs:{value:"long"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionLong")))]),a("a-radio",{attrs:{value:"short",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionShort"))+" ")]),a("a-radio",{attrs:{value:"both",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionBoth"))+" ")])],1)],1)],1)],1),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.klinePeriod")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["timeframe",{initialValue:"15m",rules:[{required:!0}]}],expression:"['timeframe', { initialValue: '15m', rules: [{ required: true }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectKlinePeriod"),getPopupContainer:function(t){return t.parentNode}}},[a("a-select-option",{attrs:{value:"1m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1m")))]),a("a-select-option",{attrs:{value:"5m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe5m")))]),a("a-select-option",{attrs:{value:"15m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe15m")))]),a("a-select-option",{attrs:{value:"30m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe30m")))]),a("a-select-option",{attrs:{value:"1H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1H")))]),a("a-select-option",{attrs:{value:"4H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe4H")))]),a("a-select-option",{attrs:{value:"1D"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1D")))])],1)],1)],1):e._e(),e.isAdvancedMode||e.editingStrategy?a("div",{staticClass:"advanced-settings-shell"},[a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.advancedMode")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.advancedModeHint")))])]),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["cs_strategy_type",{initialValue:"single"}],expression:"['cs_strategy_type', { initialValue: 'single' }]"}],on:{change:e.handleStrategyTypeChange}},[a("a-radio",{attrs:{value:"single"}},[e._v(e._s(e.$t("trading-assistant.form.strategyTypeSingle")))]),a("a-radio",{attrs:{value:"cross_sectional"}},[e._v(e._s(e.$t("trading-assistant.form.strategyTypeCrossSectional")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.strategyTypeHint"))+" ")])],1)],1):e._e(),(e.isAdvancedMode||e.editingStrategy)&&"cross_sectional"===e.form.getFieldValue("cs_strategy_type")?[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.symbolList")}},[a("a-select",{attrs:{mode:"multiple",placeholder:e.$t("trading-assistant.placeholders.selectSymbols"),"show-search":"","filter-option":e.filterWatchlistOptionWithAdd,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode},maxTagCount:5},on:{change:e.handleCrossSectionalSymbolChange},model:{value:e.crossSectionalSymbols,callback:function(t){e.crossSectionalSymbols=t},expression:"crossSectionalSymbols"}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.symbolListHint"))+" ")])],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.portfolioSize")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["portfolio_size",{initialValue:10,rules:[{required:!0,message:e.$t("trading-assistant.validation.portfolioSizeRequired")}]}],expression:"['portfolio_size', { initialValue: 10, rules: [{ required: true, message: $t('trading-assistant.validation.portfolioSizeRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:100,step:1}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.portfolioSizeHint"))+" ")])],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.longRatio")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["long_ratio",{initialValue:.5,rules:[{required:!0,message:e.$t("trading-assistant.validation.longRatioRequired")}]}],expression:"['long_ratio', { initialValue: 0.5, rules: [{ required: true, message: $t('trading-assistant.validation.longRatioRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:1,step:.1,precision:2}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.longRatioHint"))+" ")])],1)],1)],1),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.rebalanceFrequency")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["rebalance_frequency",{initialValue:"daily"}],expression:"['rebalance_frequency', { initialValue: 'daily' }]"}],staticStyle:{width:"100%"}},[a("a-select-option",{attrs:{value:"daily"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceDaily")))]),a("a-select-option",{attrs:{value:"weekly"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceWeekly")))]),a("a-select-option",{attrs:{value:"monthly"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceMonthly")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.rebalanceFrequencyHint"))+" ")])],1)]:e._e(),(e.isAdvancedMode||e.editingStrategy)&&"cross_sectional"!==e.form.getFieldValue("cs_strategy_type")?a("a-form-item",{attrs:{label:e.isEditMode?e.$t("trading-assistant.form.symbol"):e.$t("trading-assistant.form.symbols")}},[e.isEditMode?a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol",{rules:[{required:!0,message:e.$t("trading-assistant.validation.symbolRequired")}]}],expression:"['symbol', { rules: [{ required: true, message: $t('trading-assistant.validation.symbolRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSymbol"),"show-search":"","filter-option":e.filterWatchlistOption,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode}},on:{change:e.handleWatchlistSymbolChange}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2):a("a-select",{attrs:{mode:"multiple",placeholder:e.$t("trading-assistant.placeholders.selectSymbols"),"show-search":"","filter-option":e.filterWatchlistOptionWithAdd,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode},maxTagCount:3},on:{change:e.handleMultiSymbolChangeWithAdd},model:{value:e.selectedSymbols,callback:function(t){e.selectedSymbols=t},expression:"selectedSymbols"}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.isEditMode?e.$t("trading-assistant.form.symbolHintCrypto"):e.$t("trading-assistant.form.symbolsHint"))+" ")])],1):e._e(),e.isAdvancedMode||e.editingStrategy?a("div",[a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.initialCapital")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["initial_capital",{rules:[{required:!0,message:e.$t("trading-assistant.validation.initialCapitalRequired")}],initialValue:1e3}],expression:"['initial_capital', { rules: [{ required: true, message: $t('trading-assistant.validation.initialCapitalRequired') }], initialValue: 1000 }]"}],staticStyle:{width:"100%"},attrs:{min:10,step:100,precision:2}})],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.marketType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["market_type",{initialValue:"swap"}],expression:"['market_type', { initialValue: 'swap' }]"}],on:{change:e.handleMarketTypeChange}},[a("a-radio",{attrs:{value:"swap"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),a("a-radio",{attrs:{value:"spot"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeSpot")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.marketTypeHint"))+" ")])],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:"".concat(e.$t("trading-assistant.form.leverage")," (x)")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["leverage",{initialValue:5,rules:[{required:!0,message:e.$t("trading-assistant.validation.leverageRequired")}]}],expression:"['leverage', { initialValue: 5, rules: [{ required: true, message: $t('trading-assistant.validation.leverageRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:"spot"===e.form.getFieldValue("market_type")?1:125,step:1,disabled:"spot"===e.form.getFieldValue("market_type")}}),a("div",{staticClass:"form-item-hint"},["spot"===e.form.getFieldValue("market_type")?a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.spotLeverageFixed"))+" ")]):a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.leverageHint"))+" ")])])],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.tradeDirection")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["trade_direction",{initialValue:"long"}],expression:"['trade_direction', { initialValue: 'long' }]"}],attrs:{disabled:"spot"===e.form.getFieldValue("market_type")}},[a("a-radio",{attrs:{value:"long"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionLong")))]),a("a-radio",{attrs:{value:"short",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionShort"))+" ")]),a("a-radio",{attrs:{value:"both",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionBoth"))+" ")])],1),"spot"===e.form.getFieldValue("market_type")?a("div",{staticClass:"form-item-hint",staticStyle:{color:"#ff9800"}},[e._v(" "+e._s(e.$t("trading-assistant.form.spotOnlyLongHint"))+" ")]):e._e()],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.klinePeriod")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["timeframe",{initialValue:"15m",rules:[{required:!0}]}],expression:"['timeframe', { initialValue: '15m', rules: [{ required: true }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectKlinePeriod"),getPopupContainer:function(t){return t.parentNode}}},[a("a-select-option",{attrs:{value:"1m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1m")))]),a("a-select-option",{attrs:{value:"5m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe5m")))]),a("a-select-option",{attrs:{value:"15m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe15m")))]),a("a-select-option",{attrs:{value:"30m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe30m")))]),a("a-select-option",{attrs:{value:"1H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1H")))]),a("a-select-option",{attrs:{value:"4H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe4H")))]),a("a-select-option",{attrs:{value:"1D"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1D")))])],1)],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}})],1)],1):e._e()],2)],1):e._e(),"script"===e.strategyMode?a("div",[a("a-form",{attrs:{form:e.form,layout:"vertical"}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyName")}},[a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["strategy_name",{rules:[{required:!0,message:e.$t("trading-assistant.validation.strategyNameRequired")}]}],expression:"['strategy_name', { rules: [{ required: true, message: $t('trading-assistant.validation.strategyNameRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.inputStrategyName")}})],1),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.symbol")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol",{rules:[{required:!0,message:e.$t("trading-assistant.validation.symbolRequired")}]}],expression:"['symbol', { rules: [{ required: true, message: $t('trading-assistant.validation.symbolRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSymbol"),"show-search":"","filter-option":e.filterWatchlistOption,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode}},on:{change:e.handleWatchlistSymbolChange}},e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.initialCapital")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["initial_capital",{initialValue:1e3,rules:[{required:!0}]}],expression:"['initial_capital', { initialValue: 1000, rules: [{ required: true }] }]"}],staticStyle:{width:"100%"},attrs:{min:10,step:100,precision:2}})],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.klinePeriod")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["timeframe",{initialValue:"15m",rules:[{required:!0}]}],expression:"['timeframe', { initialValue: '15m', rules: [{ required: true }] }]"}],attrs:{getPopupContainer:function(t){return t.parentNode}}},[a("a-select-option",{attrs:{value:"1m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1m")))]),a("a-select-option",{attrs:{value:"5m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe5m")))]),a("a-select-option",{attrs:{value:"15m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe15m")))]),a("a-select-option",{attrs:{value:"30m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe30m")))]),a("a-select-option",{attrs:{value:"1H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1H")))]),a("a-select-option",{attrs:{value:"4H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe4H")))]),a("a-select-option",{attrs:{value:"1D"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1D")))])],1)],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.marketType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["market_type",{initialValue:"swap"}],expression:"['market_type', { initialValue: 'swap' }]"}]},[a("a-radio",{attrs:{value:"swap"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),a("a-radio",{attrs:{value:"spot"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeSpot")))])],1)],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:"".concat(e.$t("trading-assistant.form.leverage")," (x)")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["leverage",{initialValue:5}],expression:"['leverage', { initialValue: 5 }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:125,step:1}})],1)],1)],1)],1)],1):e._e()]),"script"===e.strategyMode?a("div",{directives:[{name:"show",rawName:"v-show",value:1===e.currentStep,expression:"currentStep === 1"}],staticClass:"step-content"},[a("strategy-editor",{ref:"strategyEditor",attrs:{"is-dark":e.isDarkTheme,"user-id":1,visible:e.showFormModal&&"script"===e.strategyMode&&1===e.currentStep,"initial-template-key":e.pendingScriptTemplateKey},model:{value:e.strategyCode,callback:function(t){e.strategyCode=t},expression:"strategyCode"}})],1):e._e(),a("div",{directives:[{name:"show",rawName:"v-show",value:"script"!==e.strategyMode&&1===e.currentStep,expression:"strategyMode !== 'script' && currentStep === 1"}],staticClass:"step-content"},["indicator"===e.strategyType?a("div",[a("a-form",{attrs:{form:e.form,layout:"vertical"}},[a("a-collapse",{staticStyle:{background:"#fafafa"},attrs:{bordered:!1},model:{value:e.backtestCollapseKeys,callback:function(t){e.backtestCollapseKeys=t},expression:"backtestCollapseKeys"}},[a("a-collapse-panel",{key:"risk",attrs:{header:e.$t("dashboard.indicator.backtest.panel.risk")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.stopLossPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["stop_loss_pct",{initialValue:3}],expression:"['stop_loss_pct', { initialValue: 3 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.takeProfitPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["take_profit_pct",{initialValue:6}],expression:"['take_profit_pct', { initialValue: 6 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trailing_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onTrailingToggle}})],1)],1),a("a-col",{attrs:{span:12}})],1),e.trailingEnabledUi?[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingStopPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_stop_pct",{initialValue:0}],expression:"['trailing_stop_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingActivationPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_activation_pct",{initialValue:0}],expression:"['trailing_activation_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1)]:e._e()],2),a("a-collapse-panel",{key:"scale",attrs:{header:e.$t("dashboard.indicator.backtest.panel.scale")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trend_add_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onTrendAddToggle}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['dca_add_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onDcaAddToggle}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_step_pct",{initialValue:0}],expression:"['trend_add_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_step_pct",{initialValue:0}],expression:"['dca_add_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4},on:{change:e.onScaleParamsChange}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_size_pct",{initialValue:0}],expression:"['trend_add_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_size_pct",{initialValue:0}],expression:"['dca_add_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4},on:{change:e.onScaleParamsChange}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_max_times",{initialValue:0}],expression:"['trend_add_max_times', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:50,step:1,precision:0},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_max_times",{initialValue:0}],expression:"['dca_add_max_times', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:50,step:1,precision:0},on:{change:e.onScaleParamsChange}})],1)],1)],1)],1),a("a-collapse-panel",{key:"reduce",attrs:{header:e.$t("dashboard.indicator.backtest.panel.reduce")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trend_reduce_enabled', { valuePropName: 'checked', initialValue: false }]"}]})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['adverse_reduce_enabled', { valuePropName: 'checked', initialValue: false }]"}]})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_step_pct",{initialValue:0}],expression:"['trend_reduce_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_step_pct",{initialValue:0}],expression:"['adverse_reduce_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_size_pct",{initialValue:0}],expression:"['trend_reduce_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_size_pct",{initialValue:0}],expression:"['adverse_reduce_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_max_times",{initialValue:0}],expression:"['trend_reduce_max_times', { initialValue: 0 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:50,step:1,precision:0}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_max_times",{initialValue:0}],expression:"['adverse_reduce_max_times', { initialValue: 0 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:50,step:1,precision:0}})],1)],1)],1)],1),a("a-collapse-panel",{key:"position",attrs:{header:e.$t("dashboard.indicator.backtest.panel.position")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.entryPct"),help:e.$t("dashboard.indicator.backtest.hint.entryPctMax",{maxPct:Number(e.entryPctMaxUi||0).toFixed(0)})}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["entry_pct",{initialValue:100}],expression:"['entry_pct', { initialValue: 100 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:e.entryPctMaxUi,step:.1,precision:4},on:{change:e.onEntryPctChange}})],1)],1),a("a-col",{attrs:{span:12}})],1)],1)],1),a("div",{staticClass:"ai-filter-box"},[a("div",{staticClass:"ai-filter-header"},[a("div",{staticClass:"ai-filter-title"},[a("a-icon",{attrs:{type:"robot"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.enableAiFilter")))])],1),a("a-switch",{attrs:{checked:e.aiFilterEnabledUi},on:{change:e.onAiFilterToggle}})],1),a("div",{staticClass:"ai-filter-hint"},[e._v(e._s(e.$t("trading-assistant.form.enableAiFilterHint")))])])],1)],1):e._e()]),a("div",{directives:[{name:"show",rawName:"v-show",value:2===e.currentStep,expression:"currentStep === 2"}],staticClass:"step-content"},[a("a-form",{attrs:{form:e.form,layout:"vertical",autocomplete:"off"}},[a("div",{staticClass:"execution-step-layout"},[a("div",{staticClass:"execution-step-hero"},[a("div",{staticClass:"simple-mode-kicker"},[e._v(e._s(e.$t("trading-assistant.form.step2HeroTitle")))]),a("div",{staticClass:"execution-step-hero-desc"},[e._v(e._s(e.$t("trading-assistant.form.step2HeroDesc")))])]),a("div",{staticClass:"execution-section-card"},[a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.executionSectionTitle")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.executionSectionDesc")))])]),a("a-form-item",{staticClass:"compact-form-item",attrs:{label:e.$t("trading-assistant.form.executionMode")}},[a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["execution_mode",{initialValue:"signal"}],expression:"['execution_mode', { initialValue: 'signal' }]"}],staticStyle:{display:"none"}}),a("div",{staticClass:"execution-mode-cards"},[a("div",{class:["execution-mode-card",{active:"signal"===e.executionModeUi}],on:{click:function(t){return e.setExecutionModeUi("signal")}}},[a("div",{staticClass:"execution-mode-card-icon signal"},[a("a-icon",{attrs:{type:"notification"}})],1),a("div",{staticClass:"execution-mode-card-body"},[a("div",{staticClass:"execution-mode-card-title"},[e._v(e._s(e.$t("trading-assistant.form.executionModeSignal")))]),a("div",{staticClass:"execution-mode-card-desc"},[e._v(e._s(e.$t("trading-assistant.form.executionModeSignalDesc")))])]),"signal"===e.executionModeUi?a("a-icon",{staticClass:"execution-mode-card-check",attrs:{type:"check-circle",theme:"filled"}}):e._e()],1),a("div",{class:["execution-mode-card","live-card",{active:"live"===e.executionModeUi,disabled:!e.canUseLiveTrading}],on:{click:function(t){e.canUseLiveTrading&&e.setExecutionModeUi("live")}}},[a("div",{staticClass:"execution-mode-card-icon live"},[a("a-icon",{attrs:{type:"thunderbolt"}})],1),a("div",{staticClass:"execution-mode-card-body"},[a("div",{staticClass:"execution-mode-card-title"},[e._v(e._s(e.$t("trading-assistant.form.executionModeLive")))]),a("div",{staticClass:"execution-mode-card-desc"},[e._v(" "+e._s(e.canUseLiveTrading?e.$t("trading-assistant.form.executionModeLiveDesc"):e.$t("trading-assistant.form.liveTradingNotSupportedHint"))+" ")])]),"live"===e.executionModeUi&&e.canUseLiveTrading?a("a-icon",{staticClass:"execution-mode-card-check",attrs:{type:"check-circle",theme:"filled"}}):e._e()],1)]),e.canUseLiveTrading?e._e():a("div",{staticClass:"form-item-hint execution-warn-text"},[e._v(" "+e._s(e.$t("trading-assistant.form.liveTradingNotSupportedHint"))+" ")])],1),"live"===e.executionModeUi&&e.canUseLiveTrading?a("a-alert",{staticClass:"section-inline-alert",attrs:{type:"warning",showIcon:"",message:e.$t("trading-assistant.liveDisclaimer.title"),description:e.$t("trading-assistant.liveDisclaimer.content")}}):e._e()],1),a("div",{staticClass:"execution-section-card"},[a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.notificationSectionTitle")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.notificationSectionDesc")))])]),a("a-form-item",{staticClass:"compact-form-item",attrs:{label:e.$t("trading-assistant.form.notifyChannels")}},[a("a-checkbox-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["notify_channels",{initialValue:["browser"]}],expression:"['notify_channels', { initialValue: ['browser'] }]"}],staticClass:"notify-channel-grid",on:{change:e.onNotifyChannelsChange}},[a("a-checkbox",{attrs:{value:"browser"}},[e._v(e._s(e.$t("trading-assistant.notify.browser")))]),a("a-checkbox",{attrs:{value:"email"}},[e._v(e._s(e.$t("trading-assistant.notify.email")))]),a("a-checkbox",{attrs:{value:"telegram"}},[e._v(e._s(e.$t("trading-assistant.notify.telegram")))]),a("a-checkbox",{attrs:{value:"discord"}},[e._v(e._s(e.$t("trading-assistant.notify.discord")))]),a("a-checkbox",{attrs:{value:"webhook"}},[e._v(e._s(e.$t("trading-assistant.notify.webhook")))]),a("a-checkbox",{attrs:{value:"phone"}},[e._v(e._s(e.$t("trading-assistant.notify.phone")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(e._s(e.$t("trading-assistant.form.notifyChannelsHint")))])],1),e.unconfiguredChannels.length>0?a("a-alert",{staticClass:"section-inline-alert",attrs:{type:"warning",showIcon:""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.notificationConfigMissing",{channels:e.unconfiguredChannels.join(", ")}))+" "),a("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.goToProfile"))+" ")],1)],1)]},proxy:!0}],null,!1,2930252607)}):e.notifyChannelsUi.length>0&&!e.notifyChannelsUi.includes("browser")||e.notifyChannelsUi.length>1?a("a-alert",{staticClass:"section-inline-alert",attrs:{type:"info",showIcon:""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.notificationFromProfile"))+" "),a("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.goToProfile"))+" ")],1)],1)]},proxy:!0}])}):e._e()],1),"live"===e.executionModeUi&&e.canUseLiveTrading?a("div",{staticClass:"execution-section-card risk-section-card"},[a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.riskSectionTitle")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.riskSectionDesc")))])]),a("a-alert",{staticClass:"section-inline-alert",attrs:{type:"warning","show-icon":"",message:e.$t("trading-assistant.form.liveTradingConfigTitle"),description:e.$t("trading-assistant.form.liveTradingConfigHint")}})],1):e._e(),"live"===e.executionModeUi&&e.canUseLiveTrading?a("div",{staticClass:"execution-section-card"},[a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.liveConnectionSectionTitle")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.liveConnectionSectionDesc")))])]),a("a-form-item",{staticClass:"compact-form-item",attrs:{label:e.$t("trading-assistant.form.savedCredential")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["credential_id",{rules:[{required:!0,message:e.$t("profile.exchange.noCredentialHint")}],getValueFromEvent:function(t){return t||void 0}}],expression:"['credential_id', {\n rules: [{ required: true, message: $t('profile.exchange.noCredentialHint') }],\n getValueFromEvent: (val) => val || undefined\n }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSavedCredential"),"allow-clear":"","show-search":"","option-filter-prop":"children",loading:e.loadingExchangeCredentials},on:{change:e.handleCredentialSelectChange}},e._l(e.filteredExchangeCredentials,function(t){return a("a-select-option",{key:t.id,attrs:{value:t.id}},[e._v(" "+e._s(e.formatCredentialLabel(t))+" ")])}),1),a("div",{staticClass:"form-item-hint",staticStyle:{"margin-top":"6px"}},[a("router-link",{attrs:{to:"/profile?tab=exchange"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"setting"}}),e._v(e._s(e.$t("profile.exchange.goToManage"))+" ")],1)],1)],1)],1):e._e()])])],1)])],1),a("template",{slot:"footer"},[a("a-button",{on:{click:e.handleCloseModal}},[e._v(e._s(e.$t("trading-assistant.form.cancel")))]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:e.currentStep>0,expression:"currentStep > 0"}],on:{click:e.handlePrev}},[e._v(" "+e._s(e.$t("trading-assistant.form.prev"))+" ")]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:e.currentStep<2,expression:"currentStep < 2"}],attrs:{type:"primary",loading:e.saving},on:{click:e.handleNext}},[e._v(" "+e._s(e.$t("trading-assistant.form.next"))+" ")]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:2===e.currentStep,expression:"currentStep === 2"}],attrs:{type:"primary",loading:e.saving},on:{click:e.handleSubmit}},[e._v(" "+e._s(e.editingStrategy?e.$t("trading-assistant.form.confirmEdit"):e.$t("trading-assistant.form.confirmCreate"))+" ")])],1)],2),a("a-modal",{attrs:{title:e.$t("trading-assistant.form.addSymbolTitle"),visible:e.showAddSymbolModal,confirmLoading:e.addingSymbol,width:"600px",okText:e.$t("trading-assistant.form.confirmAdd"),cancelText:e.$t("trading-assistant.form.cancel"),maskClosable:!1,keyboard:!1},on:{ok:e.handleConfirmAddSymbol,cancel:e.handleCloseAddSymbolModal}},[a("div",{staticClass:"add-symbol-modal-content"},[a("a-tabs",{staticClass:"market-tabs",on:{change:e.handleAddSymbolMarketChange},model:{value:e.addSymbolMarket,callback:function(t){e.addSymbolMarket=t},expression:"addSymbolMarket"}},e._l(e.addSymbolMarketTypes,function(t){return a("a-tab-pane",{key:t.value,attrs:{tab:e.$t(t.i18nKey||"dashboard.analysis.market.".concat(t.value))}})}),1),a("div",{staticClass:"symbol-search-section"},[a("a-input-search",{attrs:{placeholder:e.$t("dashboard.analysis.modal.addStock.searchOrInputPlaceholder"),loading:e.searchingSymbol,size:"large","allow-clear":""},on:{search:e.handleSearchSymbol,change:e.handleSymbolSearchInputChange},model:{value:e.addSymbolKeyword,callback:function(t){e.addSymbolKeyword=t},expression:"addSymbolKeyword"}},[a("a-button",{attrs:{slot:"enterButton",type:"primary",icon:"search"},slot:"enterButton"},[e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.search"))+" ")])],1)],1),e.symbolSearchResults.length>0?a("div",{staticClass:"search-results-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"search"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.searchResults"))+" ")],1),a("a-list",{staticClass:"symbol-list",attrs:{"data-source":e.symbolSearchResults,loading:e.searchingSymbol,size:"small"},scopedSlots:e._u([{key:"renderItem",fn:function(t){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return e.handleSelectAddSymbol(t)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[e._v(e._s(t.symbol))]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.name))]),t.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"blue"}},[e._v(" "+e._s(t.exchange)+" ")]):e._e()],1)])],2)],1)}}],null,!1,2801225082)})],1):e._e(),a("div",{staticClass:"hot-symbols-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#ff4d4f","margin-right":"4px"},attrs:{type:"fire"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.hotSymbols"))+" ")],1),a("a-spin",{attrs:{spinning:e.loadingHotSymbols}},[e.hotSymbols.length>0?a("a-list",{staticClass:"symbol-list",attrs:{"data-source":e.hotSymbols,size:"small"},scopedSlots:e._u([{key:"renderItem",fn:function(t){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return e.handleSelectAddSymbol(t)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[e._v(e._s(t.symbol))]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.name))]),t.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"orange"}},[e._v(" "+e._s(t.exchange)+" ")]):e._e()],1)])],2)],1)}}],null,!1,3959834868)}):a("a-empty",{attrs:{description:e.$t("dashboard.analysis.modal.addStock.noHotSymbols"),image:!1}})],1)],1),e.selectedAddSymbol?a("div",{staticClass:"selected-symbol-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#52c41a","margin-right":"4px"},attrs:{type:"check-circle"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.selectedSymbol"))+" ")],1),a("div",{staticClass:"selected-symbol-info"},[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:e.getMarketColor(e.addSymbolMarket)}},[e._v(e._s(e.addSymbolMarket))]),a("span",{staticClass:"symbol-code"},[e._v(e._s(e.selectedAddSymbol.symbol))]),e.selectedAddSymbol.name?a("span",{staticClass:"symbol-name"},[e._v(e._s(e.selectedAddSymbol.name))]):e._e()],1)]):e._e()],1)])],1)],1)],1)},i=[],r=a(15863),n=a(44735),o=a(81127),l=a(56252),c=a(2403),d=a(57532),u=a(76338),p=a(36911),m=a(35038),g=a(42430),h=a(84841),_=a(55434),y=a(75769),f=function(){var t=this,e=t._self._c;return e("div",{staticClass:"trading-records"},[0!==t.records.length||t.loading?e("a-table",{attrs:{columns:t.columns,"data-source":t.records,loading:t.loading,pagination:{pageSize:10},size:"small",rowKey:"id",scroll:{x:800}},scopedSlots:t._u([{key:"type",fn:function(a){return[e("a-tag",{attrs:{color:t.getTradeTypeColor(a)}},[t._v(" "+t._s(t.getTradeTypeText(a))+" ")])]}},{key:"price",fn:function(e){return[t._v(" $"+t._s(parseFloat(e).toFixed(4))+" ")]}},{key:"amount",fn:function(e){return[t._v(" "+t._s(parseFloat(e).toFixed(4))+" ")]}},{key:"value",fn:function(e){return[t._v(" $"+t._s(parseFloat(e).toFixed(2))+" ")]}},{key:"profit",fn:function(a,s){return[e("span",{style:{color:a>0?"#52c41a":a<0?"#f5222d":"#666"}},[t._v(" "+t._s(t.formatProfit(a,s))+" ")])]}},{key:"commission",fn:function(e){return[t._v(" "+t._s(t.formatCommission(e))+" ")]}},{key:"time",fn:function(e,a){return[t._v(" "+t._s(t.formatTime(a.created_at||e))+" ")]}}])}):e("div",{staticClass:"empty-state"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.table.noPositions")}})],1)],1)},v=[],b={name:"TradingRecords",props:{strategyId:{type:Number,required:!0},loading:{type:Boolean,default:!1}},computed:{columns:function(){return[{title:this.$t("trading-assistant.table.time"),dataIndex:"created_at",key:"created_at",width:180,scopedSlots:{customRender:"time"}},{title:this.$t("dashboard.indicator.backtest.tradeType"),dataIndex:"type",key:"type",width:140,scopedSlots:{customRender:"type"}},{title:this.$t("trading-assistant.table.price"),dataIndex:"price",key:"price",width:120,scopedSlots:{customRender:"price"}},{title:this.$t("trading-assistant.table.amount"),dataIndex:"amount",key:"amount",width:120,scopedSlots:{customRender:"amount"}},{title:this.$t("trading-assistant.table.value"),dataIndex:"value",key:"value",width:120,scopedSlots:{customRender:"value"}},{title:this.$t("dashboard.indicator.backtest.profit"),dataIndex:"profit",key:"profit",width:120,scopedSlots:{customRender:"profit"}},{title:this.$t("trading-assistant.table.commission"),dataIndex:"commission",key:"commission",width:100,scopedSlots:{customRender:"commission"}}]}},data:function(){return{records:[]}},watch:{strategyId:{handler:function(t){t&&this.loadRecords()},immediate:!0}},methods:{loadRecords:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,(0,p.tq)(t.strategyId);case 2:a=e.v,1===a.code?t.records=(a.data.trades||[]).map(function(t){return(0,u.A)((0,u.A)({},t),{},{time:t.created_at||t.time})}):t.$message.error(a.msg||t.$t("trading-assistant.messages.loadTradesFailed")),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},formatTime:function(t){if(!t)return"--";try{var e;if("number"===typeof t){var a=t<1e12?1e3*t:t;e=new Date(a)}else{if("string"!==typeof t)return"--";if(/^\d+$/.test(t)){var s=parseInt(t,10),i=s<1e12?1e3*s:s;e=new Date(i)}else e=new Date(t)}if(isNaN(e.getTime()))return"--";var r=this.$i18n.locale||"zh-CN",n={"zh-CN":"zh-CN","zh-TW":"zh-TW","en-US":"en-US"};return e.toLocaleString(n[r]||"zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})}catch(o){return"--"}},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",open_short:"red",add_short:"magenta",close_short:"blue",close_short_stop:"red",close_short_profit:"cyan"};return e[t]||"default"},getTradeTypeText:function(t){var e={buy:this.$t("dashboard.indicator.backtest.buy"),sell:this.$t("dashboard.indicator.backtest.sell"),liquidation:this.$t("dashboard.indicator.backtest.liquidation"),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"),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")};return e[t]||t},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}))},formatProfit:function(t,e){if(null===t||void 0===t)return"--";var a=parseFloat(t),s=["open_long","open_short","add_long","add_short"];return 0===a&&e&&s.includes(e.type)?"--":Math.abs(a)<1e-6?e&&s.includes(e.type)?"--":"$0.00":this.formatMoney(a)},formatCommission:function(t){if(null===t||void 0===t)return"--";var e=parseFloat(t);return isNaN(e)||Math.abs(e)<1e-6?"--":"$".concat(e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:6}))}}},x=b,C=a(845),k=(0,C.A)(x,f,v,!1,null,"a5bdef7e",null),S=k.exports,w=function(){var t=this,e=t._self._c;return e("div",{staticClass:"position-records"},[0!==t.positions.length||t.loading?e("a-table",{attrs:{columns:t.columns,"data-source":t.positions,loading:t.loading,pagination:!1,size:"small",rowKey:"id",scroll:{x:800}},scopedSlots:t._u([{key:"symbol",fn:function(a,s){return[e("strong",[t._v(t._s(s.symbol||a))])]}},{key:"side",fn:function(a,s){return[e("a-tag",{attrs:{color:"long"===(s.side||a)?"green":"red"}},[t._v(" "+t._s("long"===(s.side||a)?t.$t("trading-assistant.table.long"):t.$t("trading-assistant.table.short"))+" ")])]}},{key:"entryPrice",fn:function(a,s){return[t.hasValidPrice(s.entry_price||a)?e("span",[t._v(" $"+t._s(parseFloat(s.entry_price||a).toFixed(4))+" ")]):e("span",[t._v("--")])]}},{key:"currentPrice",fn:function(e,a){return[t._v(" $"+t._s(parseFloat(a.current_price||e||0).toFixed(4))+" ")]}},{key:"size",fn:function(e,a){return[t._v(" "+t._s(parseFloat(a.size||e||0).toFixed(4))+" ")]}},{key:"unrealizedPnl",fn:function(a,s){return[e("span",{class:{profit:parseFloat(s.unrealized_pnl||a||0)>0,loss:parseFloat(s.unrealized_pnl||a||0)<0}},[t._v(" $"+t._s(parseFloat(s.unrealized_pnl||a||0).toFixed(2))+" ")])]}},{key:"pnlPercent",fn:function(a,s){return[e("span",{class:{profit:parseFloat(s.pnl_percent||a||0)>0,loss:parseFloat(s.pnl_percent||a||0)<0}},[t._v(" "+t._s(parseFloat(s.pnl_percent||a||0).toFixed(2))+"% ")])]}}])}):e("div",{staticClass:"empty-state"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.table.noPositions")}})],1)],1)},$=[],T={name:"PositionRecords",props:{strategyId:{type:Number,required:!0},marketType:{type:String,default:"swap"},leverage:{type:[Number,String],default:1},loading:{type:Boolean,default:!1}},data:function(){return{positions:[]}},computed:{columns:function(){return[{title:this.$t("trading-assistant.table.symbol"),dataIndex:"symbol",key:"symbol",width:120,scopedSlots:{customRender:"symbol"}},{title:this.$t("trading-assistant.table.side"),dataIndex:"side",key:"side",width:80,scopedSlots:{customRender:"side"}},{title:this.$t("trading-assistant.table.size"),dataIndex:"size",key:"size",width:120,scopedSlots:{customRender:"size"}},{title:this.$t("trading-assistant.table.entryPrice"),dataIndex:"entry_price",key:"entry_price",width:120,scopedSlots:{customRender:"entryPrice"}},{title:this.$t("trading-assistant.table.currentPrice"),dataIndex:"current_price",key:"current_price",width:120,scopedSlots:{customRender:"currentPrice"}},{title:this.$t("trading-assistant.table.unrealizedPnl"),dataIndex:"unrealized_pnl",key:"unrealized_pnl",width:120,scopedSlots:{customRender:"unrealizedPnl"}},{title:this.$t("trading-assistant.table.pnlPercent"),dataIndex:"pnl_percent",key:"pnl_percent",width:100,scopedSlots:{customRender:"pnlPercent"}}]}},watch:{strategyId:{handler:function(t){t?(this.loadPositions(),this.startPolling()):this.stopPolling()},immediate:!0}},beforeDestroy:function(){this.stopPolling()},methods:{loadPositions:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,(0,p.oK)(t.strategyId);case 2:a=e.v,1===a.code?(s=a.data.positions||[],t.positions=s.map(function(e,a){var s=String(t.marketType||"swap").toLowerCase(),i=parseFloat(t.leverage);(!isFinite(i)||i<=0)&&(i=1),"spot"===s&&(i=1);var r=parseFloat(e.entry_price||e.entryPrice||0),n=parseFloat(e.size||"0")||0,o=parseFloat(e.unrealized_pnl||e.unrealizedPnl||"0")||0,l=parseFloat(e.pnl_percent||e.pnlPercent||"0")||0;r>0&&n>0?l=o/(r*n)*100*i:"spot"!==s&&(l*=i);var c={id:e.id||a,symbol:e.symbol||"",side:e.side||"long",size:n>0?n.toString():"0",entry_price:r>0?r.toString():"0",current_price:e.current_price||e.currentPrice||"0",unrealized_pnl:e.unrealized_pnl||e.unrealizedPnl||"0",pnl_percent:l,updated_at:e.updated_at||e.updatedAt||""};return c})):t.positions=[],e.n=4;break;case 3:e.p=3,e.v,t.positions=[];case 4:return e.a(2)}},e,null,[[1,3]])}))()},hasValidPrice:function(t){var e=parseFloat(t);return Number.isFinite(e)&&e>0},startPolling:function(){var t=this;this.stopPolling(),this.pollingTimer=setInterval(function(){t.loadPositions()},5e3)},stopPolling:function(){this.pollingTimer&&(clearInterval(this.pollingTimer),this.pollingTimer=null)}}},A=T,P=(0,C.A)(A,w,$,!1,null,"2abcf4f1",null),M=P.exports,F=function(){var t=this,e=t._self._c;return e("div",{staticClass:"strategy-type-selector",class:{"theme-dark":t.isDark}},[e("div",{staticClass:"selector-header"},[e("h3",[t._v(t._s(t.$t("trading-assistant.selectMode")))]),e("p",{staticClass:"selector-hint"},[t._v(t._s(t.$t("trading-assistant.selectModeHint")))])]),e("div",{staticClass:"mode-cards"},[e("div",{staticClass:"mode-card",class:{selected:"signal"===t.selected},on:{click:function(e){return t.$emit("select","signal")}}},[e("div",{staticClass:"card-icon signal-icon"},[e("a-icon",{attrs:{type:"line-chart"}})],1),e("div",{staticClass:"card-body"},[e("div",{staticClass:"card-badge-row"},[e("span",{staticClass:"card-badge"},[t._v(t._s(t.$t("trading-assistant.strategyMode.signalBadge")))])]),e("h4",[t._v(t._s(t.$t("trading-assistant.strategyMode.signal")))]),e("p",{staticClass:"card-desc"},[t._v(t._s(t.$t("trading-assistant.strategyMode.signalDesc")))]),e("ul",{staticClass:"card-features"},[e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.signalFeature1")))],1),e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.signalFeature2")))],1),e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.signalFeature3")))],1)])]),e("a-button",{staticClass:"card-btn",attrs:{type:"primary",ghost:""},on:{click:function(e){return e.stopPropagation(),t.$emit("select","signal")}}},[t._v(" "+t._s(t.$t("trading-assistant.useThisMode"))+" ")])],1),e("div",{staticClass:"mode-card",class:{selected:"script"===t.selected},on:{click:function(e){return t.$emit("select","script")}}},[e("div",{staticClass:"card-icon script-icon"},[e("a-icon",{attrs:{type:"code"}})],1),e("div",{staticClass:"card-body"},[e("div",{staticClass:"card-badge-row"},[e("span",{staticClass:"card-badge card-badge--script"},[t._v(t._s(t.$t("trading-assistant.strategyMode.scriptBadge")))])]),e("h4",[t._v(t._s(t.$t("trading-assistant.strategyMode.script")))]),e("p",{staticClass:"card-desc"},[t._v(t._s(t.$t("trading-assistant.strategyMode.scriptDesc")))]),e("ul",{staticClass:"card-features"},[e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.scriptFeature1")))],1),e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.scriptFeature2")))],1),e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.scriptFeature3")))],1)])]),e("a-button",{staticClass:"card-btn",attrs:{type:"primary",ghost:""},on:{click:function(e){return e.stopPropagation(),t.$emit("select","script")}}},[t._v(" "+t._s(t.$t("trading-assistant.useThisMode"))+" ")])],1)]),e("div",{staticClass:"template-quick-start"},[e("a-divider",[e("span",{staticClass:"divider-text"},[t._v(t._s(t.$t("trading-assistant.fromTemplate")))])]),e("div",{staticClass:"template-tags"},t._l(t.templates,function(a){return e("a-tag",{key:a.key,staticClass:"template-tag",on:{click:function(e){return t.$emit("use-template",a.key)}}},[e("span",{staticClass:"tpl-icon"},[t._v(t._s(a.icon))]),t._v(" "+t._s(t.$t("trading-assistant.template.".concat(a.key)))+" ")])}),1)],1)])},I=[],N=[{key:"trendFollowing",icon:"📈",code:"\"\"\"\nTrend Following Strategy\nUses EMA crossover with dynamic stop-loss / take-profit.\n\"\"\"\n\ndef on_init(ctx):\n ctx.fast_period = ctx.param('fast_period', 12)\n ctx.slow_period = ctx.param('slow_period', 26)\n ctx.position_pct = ctx.param('position_pct', 0.95)\n ctx.stop_pct = ctx.param('stop_pct', 0.03)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.08)\n\ndef on_bar(ctx, bar):\n bars = ctx.bars(ctx.slow_period + 5)\n if len(bars) < ctx.slow_period:\n return\n\n closes = [b['close'] for b in bars]\n fast_ema = _ema(closes, ctx.fast_period)\n slow_ema = _ema(closes, ctx.slow_period)\n price = bar['close']\n\n if fast_ema > slow_ema and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"BUY at {price:.2f}\")\n\n elif fast_ema < slow_ema and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"SELL at {price:.2f}\")\n\n if ctx.position and ctx.position['side'] == 'long':\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n if pnl_pct <= -ctx.stop_pct:\n ctx.close_position()\n ctx.log(f\"STOP LOSS at {price:.2f}\")\n elif pnl_pct >= ctx.take_profit_pct:\n ctx.close_position()\n ctx.log(f\"TAKE PROFIT at {price:.2f}\")\n\ndef _ema(data, period):\n k = 2 / (period + 1)\n ema = data[0]\n for price in data[1:]:\n ema = price * k + ema * (1 - k)\n return ema\n",params:[{name:"fast_period",type:"integer",default:12,min:2,max:120,step:1},{name:"slow_period",type:"integer",default:26,min:5,max:240,step:1},{name:"position_pct",type:"percent",default:.95,min:.05,max:1,step:.01},{name:"stop_pct",type:"percent",default:.03,min:.001,max:.5,step:.001},{name:"take_profit_pct",type:"percent",default:.08,min:.001,max:1,step:.001}]},{key:"martingale",icon:"🔥",code:"\"\"\"\nMartingale Strategy\nDouble position on each loss, with max layer control.\n\"\"\"\n\ndef on_init(ctx):\n ctx.base_amount = ctx.param('base_amount', 100)\n ctx.max_layers = ctx.param('max_layers', 5)\n ctx.multiplier = ctx.param('multiplier', 2.0)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.02)\n ctx.stop_loss_pct = ctx.param('stop_loss_pct', 0.04)\n ctx.cooldown_bars = ctx.param('cooldown_bars', 1)\n ctx.current_layer = 0\n ctx.cooldown = 0\n\ndef on_bar(ctx, bar):\n if ctx.cooldown > 0:\n ctx.cooldown -= 1\n return\n\n price = bar['close']\n if not ctx.position:\n amount = ctx.base_amount * (ctx.multiplier ** ctx.current_layer)\n if amount <= ctx.balance:\n qty = amount / price\n ctx.buy(price, qty)\n ctx.log(f\"Layer {ctx.current_layer}: BUY {qty:.4f} at {price:.2f}\")\n else:\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n\n if pnl_pct >= ctx.take_profit_pct:\n ctx.close_position()\n ctx.current_layer = 0\n ctx.cooldown = ctx.cooldown_bars\n ctx.log(f\"TAKE PROFIT at {price:.2f}, reset layers\")\n\n elif pnl_pct <= -ctx.stop_loss_pct:\n ctx.close_position()\n ctx.cooldown = ctx.cooldown_bars\n if ctx.current_layer < ctx.max_layers:\n ctx.current_layer += 1\n ctx.log(f\"LOSS, escalate to layer {ctx.current_layer}\")\n else:\n ctx.current_layer = 0\n ctx.log(\"Max layers reached, reset\")\n",params:[{name:"base_amount",type:"number",default:100,min:10,max:1e6,step:10},{name:"max_layers",type:"integer",default:5,min:1,max:20,step:1},{name:"multiplier",type:"number",default:2,min:1,max:5,step:.1},{name:"take_profit_pct",type:"percent",default:.02,min:.001,max:1,step:.001},{name:"stop_loss_pct",type:"percent",default:.04,min:.001,max:1,step:.001},{name:"cooldown_bars",type:"integer",default:1,min:0,max:500,step:1}]},{key:"grid",icon:"📐",code:"\"\"\"\nGrid Trading Strategy\nPlaces buy/sell orders at equal intervals within a price range.\n\"\"\"\n\ndef on_init(ctx):\n ctx.grid_upper = ctx.param('grid_upper', 70000)\n ctx.grid_lower = ctx.param('grid_lower', 60000)\n ctx.grid_levels = ctx.param('grid_levels', 10)\n ctx.order_amount = ctx.param('order_amount', 100)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.05)\n ctx.stop_loss_pct = ctx.param('stop_loss_pct', 0.03)\n ctx.filled_grids = set()\n\n spacing = (ctx.grid_upper - ctx.grid_lower) / ctx.grid_levels\n ctx.grid_prices = [ctx.grid_lower + i * spacing for i in range(ctx.grid_levels + 1)]\n\ndef on_bar(ctx, bar):\n price = bar['close']\n if price < ctx.grid_lower or price > ctx.grid_upper:\n return\n\n if ctx.position and ctx.position['side'] == 'long':\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n if pnl_pct >= ctx.take_profit_pct or pnl_pct <= -ctx.stop_loss_pct:\n ctx.close_position()\n ctx.filled_grids.clear()\n ctx.log(f\"Grid risk exit at {price:.2f}, pnl={pnl_pct:.2%}\")\n return\n\n for i, gp in enumerate(ctx.grid_prices[:-1]):\n upper_gp = ctx.grid_prices[i + 1]\n grid_id = f\"grid_{i}\"\n\n if price <= gp and grid_id not in ctx.filled_grids:\n qty = ctx.order_amount / price\n ctx.buy(price, qty)\n ctx.filled_grids.add(grid_id)\n ctx.log(f\"Grid BUY at {price:.2f} (level {i})\")\n\n elif price >= upper_gp and grid_id in ctx.filled_grids:\n qty = ctx.order_amount / price\n ctx.sell(price, qty)\n ctx.filled_grids.discard(grid_id)\n ctx.log(f\"Grid SELL at {price:.2f} (level {i})\")\n",params:[{name:"grid_upper",type:"number",default:7e4,min:1,max:1e8,step:10},{name:"grid_lower",type:"number",default:6e4,min:1,max:1e8,step:10},{name:"grid_levels",type:"integer",default:10,min:2,max:200,step:1},{name:"order_amount",type:"number",default:100,min:1,max:1e6,step:1},{name:"take_profit_pct",type:"percent",default:.05,min:.001,max:1,step:.001},{name:"stop_loss_pct",type:"percent",default:.03,min:.001,max:1,step:.001}]},{key:"dca",icon:"💰",code:"\"\"\"\nDCA (Dollar Cost Averaging) Strategy\nPeriodic purchases with optional dip-buying.\n\"\"\"\n\ndef on_init(ctx):\n ctx.buy_amount = ctx.param('buy_amount', 100)\n ctx.dip_threshold = ctx.param('dip_threshold', 0.05)\n ctx.dip_multiplier = ctx.param('dip_multiplier', 2.0)\n ctx.buy_interval = ctx.param('buy_interval', 24)\n ctx.max_orders = ctx.param('max_orders', 999)\n ctx.bar_count = 0\n ctx.order_count = 0\n ctx.last_buy_price = None\n\ndef on_bar(ctx, bar):\n ctx.bar_count += 1\n price = bar['close']\n\n if ctx.order_count >= ctx.max_orders:\n return\n\n is_dip = False\n if ctx.last_buy_price and price < ctx.last_buy_price * (1 - ctx.dip_threshold):\n is_dip = True\n\n if ctx.bar_count % ctx.buy_interval == 0 or is_dip:\n amount = ctx.buy_amount * (ctx.dip_multiplier if is_dip else 1.0)\n if amount <= ctx.balance:\n qty = amount / price\n ctx.buy(price, qty)\n ctx.last_buy_price = price\n ctx.order_count += 1\n tag = \" (DIP BUY)\" if is_dip else \"\"\n ctx.log(f\"DCA BUY {qty:.6f} at {price:.2f}{tag}\")\n",params:[{name:"buy_amount",type:"number",default:100,min:1,max:1e6,step:1},{name:"buy_interval",type:"integer",default:24,min:1,max:1e3,step:1},{name:"dip_threshold",type:"percent",default:.05,min:.001,max:1,step:.001},{name:"dip_multiplier",type:"number",default:2,min:1,max:10,step:.1},{name:"max_orders",type:"integer",default:999,min:1,max:9999,step:1}]},{key:"meanReversion",icon:"🔄",code:"\"\"\"\nMean Reversion Strategy\nBollinger Bands based: buy at lower band, sell at upper band.\n\"\"\"\n\ndef on_init(ctx):\n ctx.period = ctx.param('period', 20)\n ctx.std_mult = ctx.param('std_mult', 2.0)\n ctx.position_pct = ctx.param('position_pct', 0.5)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.03)\n ctx.stop_loss_pct = ctx.param('stop_loss_pct', 0.02)\n\ndef on_bar(ctx, bar):\n bars = ctx.bars(ctx.period + 5)\n if len(bars) < ctx.period:\n return\n\n closes = [b['close'] for b in bars[-ctx.period:]]\n mean = sum(closes) / len(closes)\n std = (sum((c - mean) ** 2 for c in closes) / len(closes)) ** 0.5\n\n upper = mean + ctx.std_mult * std\n lower = mean - ctx.std_mult * std\n price = bar['close']\n\n if price <= lower and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"BUY at {price:.2f} (below lower band {lower:.2f})\")\n\n elif price >= upper and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"SELL at {price:.2f} (above upper band {upper:.2f})\")\n\n elif ctx.position and ctx.position['side'] == 'long':\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n if pnl_pct >= ctx.take_profit_pct or pnl_pct <= -ctx.stop_loss_pct:\n ctx.close_position()\n ctx.log(f\"Risk exit at {price:.2f}, pnl={pnl_pct:.2%}\")\n",params:[{name:"period",type:"integer",default:20,min:2,max:300,step:1},{name:"std_mult",type:"number",default:2,min:.5,max:6,step:.1},{name:"position_pct",type:"percent",default:.5,min:.05,max:1,step:.01},{name:"take_profit_pct",type:"percent",default:.03,min:.001,max:1,step:.001},{name:"stop_loss_pct",type:"percent",default:.02,min:.001,max:1,step:.001}]},{key:"breakout",icon:"⚡",code:"\"\"\"\nBreakout Strategy\nEnter when price breaks key resistance/support with volume confirmation.\n\"\"\"\n\ndef on_init(ctx):\n ctx.lookback = ctx.param('lookback', 20)\n ctx.volume_mult = ctx.param('volume_mult', 1.5)\n ctx.position_pct = ctx.param('position_pct', 0.9)\n ctx.stop_pct = ctx.param('stop_pct', 0.02)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.05)\n\ndef on_bar(ctx, bar):\n bars = ctx.bars(ctx.lookback + 5)\n if len(bars) < ctx.lookback:\n return\n\n recent = bars[-ctx.lookback:]\n high = max(b['high'] for b in recent[:-1])\n low = min(b['low'] for b in recent[:-1])\n avg_vol = sum(b['volume'] for b in recent[:-1]) / (len(recent) - 1)\n price = bar['close']\n vol = bar['volume']\n\n if price > high and vol > avg_vol * ctx.volume_mult and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"BREAKOUT BUY at {price:.2f} (prev high: {high:.2f})\")\n\n elif price < low and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"BREAK DOWN, close at {price:.2f}\")\n\n if ctx.position and ctx.position['side'] == 'long':\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n if pnl_pct <= -ctx.stop_pct:\n ctx.close_position()\n ctx.log(f\"STOP LOSS at {price:.2f}\")\n elif pnl_pct >= ctx.take_profit_pct:\n ctx.close_position()\n ctx.log(f\"TAKE PROFIT at {price:.2f}\")\n",params:[{name:"lookback",type:"integer",default:20,min:2,max:300,step:1},{name:"volume_mult",type:"number",default:1.5,min:.5,max:10,step:.1},{name:"position_pct",type:"percent",default:.9,min:.05,max:1,step:.01},{name:"stop_pct",type:"percent",default:.02,min:.001,max:1,step:.001},{name:"take_profit_pct",type:"percent",default:.05,min:.001,max:1,step:.001}]}];function D(t){return String(t).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function V(t){return"boolean"===typeof t?t?"True":"False":"number"===typeof t?Number.isFinite(t)?String(t):"0":null===t||void 0===t?"None":"'".concat(String(t).replace(/\\/g,"\\\\").replace(/'/g,"\\'"),"'")}var R=N;function z(t){return N.find(function(e){return e.key===t})||null}function E(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a="string"===typeof t?z(t):t;return a?a.params.reduce(function(t,a){return t[a.name]=Object.prototype.hasOwnProperty.call(e,a.name)?e[a.name]:a.default,t},{}):{}}function L(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a="string"===typeof t?z(t):t;if(!a)return"";var s=E(a,e);return a.params.reduce(function(t,e){var a=V(s[e.name]),i=new RegExp("(ctx\\.param\\(['\"]".concat(D(e.name),"['\"],\\s*)([^\\)]+)(\\))"));return t.replace(i,"$1".concat(a,"$3"))},a.code)}var U={name:"StrategyTypeSelector",props:{selected:{type:String,default:""},isDark:{type:Boolean,default:!1}},data:function(){return{templates:R.map(function(t){return{key:t.key,icon:t.icon}})}}},q=U,K=(0,C.A)(q,F,I,!1,null,"1cfbbafc",null),O=K.exports,B=function(){var t=this,e=t._self._c;return e("div",{staticClass:"strategy-editor",class:{"theme-dark":t.isDark}},[e("a-row",{staticClass:"editor-layout",attrs:{gutter:16}},[e("a-col",{staticClass:"code-col",attrs:{xs:24,md:16}},[e("div",{staticClass:"code-section"},[e("div",{staticClass:"section-header"},[e("div",{staticClass:"section-title-wrap"},[e("span",{staticClass:"section-title"},[e("a-icon",{attrs:{type:"code"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.title"))+" ")],1),t.selectedTemplate?e("a-tag",{staticClass:"current-template-tag",attrs:{color:"blue"}},[t._v(" "+t._s(t.$t("trading-assistant.template.".concat(t.selectedTemplate.key)))+" ")]):t._e()],1),e("div",{staticClass:"section-actions"},[e("a-button",{staticClass:"verify-btn",attrs:{type:"link",size:"small",loading:t.verifying},on:{click:t.handleVerify}},[e("a-icon",{attrs:{type:"check-circle"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.verify"))+" ")],1)],1)]),e("div",{ref:"editorContainer",staticClass:"code-editor-container"})])]),e("a-col",{staticClass:"side-col",attrs:{xs:24,md:8}},[e("a-tabs",{staticClass:"side-tabs",attrs:{size:"small"},model:{value:t.activeTab,callback:function(e){t.activeTab=e},expression:"activeTab"}},[e("a-tab-pane",{key:"templates",attrs:{tab:t.$t("trading-assistant.editor.templateTab")}},[e("div",{staticClass:"panel-intro"},[e("div",{staticClass:"panel-intro__title"},[t._v(t._s(t.$t("trading-assistant.editor.templateIntroTitle")))]),e("div",{staticClass:"panel-intro__desc"},[t._v(t._s(t.$t("trading-assistant.editor.templateIntroDesc")))])]),e("div",{staticClass:"template-list"},t._l(t.templates,function(a){return e("div",{key:a.key,staticClass:"template-item",class:{active:t.selectedTemplateKey===a.key},on:{click:function(e){return t.loadTemplate(a.key,{focusParams:!0,resetParams:!0})}}},[e("div",{staticClass:"tpl-header"},[e("span",{staticClass:"tpl-icon"},[t._v(t._s(a.icon))]),e("span",{staticClass:"tpl-name"},[t._v(t._s(t.$t("trading-assistant.template.".concat(a.key))))])]),e("p",{staticClass:"tpl-desc"},[t._v(t._s(t.$t("trading-assistant.template.".concat(a.key,"Desc"))))]),e("a-button",{staticClass:"tpl-use-btn",attrs:{type:"link",size:"small"}},[t._v(" "+t._s(t.$t("trading-assistant.template.useTemplate"))+" "),e("a-icon",{attrs:{type:"arrow-right"}})],1)],1)}),0)]),e("a-tab-pane",{key:"params",attrs:{tab:t.$t("trading-assistant.editor.paramsTab")}},[t.selectedTemplate?e("div",{staticClass:"params-panel"},[e("div",{staticClass:"panel-intro"},[e("div",{staticClass:"panel-intro__title"},[t._v(" "+t._s(t.$t("trading-assistant.template.".concat(t.selectedTemplate.key)))+" ")]),e("div",{staticClass:"panel-intro__desc"},[t._v(" "+t._s(t.$t("trading-assistant.template.".concat(t.selectedTemplate.key,"Desc")))+" ")])]),e("a-alert",{staticClass:"params-tip",attrs:{type:"info","show-icon":"",message:t.$t("trading-assistant.editor.paramsHint")}}),e("div",{staticClass:"param-list"},t._l(t.selectedTemplate.params,function(a){return e("div",{key:a.name,staticClass:"param-item"},[e("div",{staticClass:"param-item__label-row"},[e("span",{staticClass:"param-item__label"},[t._v(t._s(t.getParamLabel(a)))]),e("span",{staticClass:"param-item__type"},[t._v(t._s(t.getParamTypeLabel(a.type)))])]),t.getParamDescription(a)?e("div",{staticClass:"param-item__desc"},[t._v(t._s(t.getParamDescription(a)))]):t._e(),"number"===a.type||"integer"===a.type||"percent"===a.type?e("a-input-number",{staticStyle:{width:"100%"},attrs:{value:t.templateParamValues[a.name],min:a.min,max:a.max,step:a.step||1,precision:"integer"===a.type?0:t.getParamPrecision(a)},on:{change:function(e){return t.handleNumericParamChange(a,e)}}}):"select"===a.type?e("a-select",{staticStyle:{width:"100%"},attrs:{value:t.templateParamValues[a.name]},on:{change:function(e){return t.handleSelectParamChange(a,e)}}},t._l(a.options||[],function(a){return e("a-select-option",{key:a.value,attrs:{value:a.value}},[t._v(" "+t._s(t.getOptionLabel(a))+" ")])}),1):"boolean"===a.type?e("div",{staticClass:"param-item__switch"},[e("a-switch",{attrs:{checked:!!t.templateParamValues[a.name]},on:{change:function(e){return t.handleBooleanParamChange(a,e)}}}),e("span",[t._v(t._s(t.templateParamValues[a.name]?t.$t("common.yes"):t.$t("common.no")))])],1):e("a-input",{attrs:{value:t.templateParamValues[a.name]},on:{input:function(e){return t.handleTextParamChange(a,e.target.value)}}})],1)}),0),e("div",{staticClass:"params-actions"},[e("a-button",{on:{click:t.resetTemplateParams}},[t._v(" "+t._s(t.$t("trading-assistant.editor.resetTemplateParams"))+" ")]),e("a-button",{attrs:{type:"primary",disabled:!t.templateDirty},on:{click:t.applySelectedTemplateToCode}},[t._v(" "+t._s(t.$t("trading-assistant.editor.applyTemplateParams"))+" ")])],1)],1):e("a-empty",{attrs:{description:t.$t("trading-assistant.editor.paramsEmpty")}})],1),e("a-tab-pane",{key:"ai",attrs:{tab:t.$t("trading-assistant.editor.aiTab")}},[e("div",{staticClass:"ai-panel"},[e("div",{staticClass:"panel-intro"},[e("div",{staticClass:"panel-intro__title"},[e("a-icon",{attrs:{type:"robot"}}),e("span",[t._v(t._s(t.$t("trading-assistant.editor.aiGenerate")))])],1),e("div",{staticClass:"panel-intro__desc"},[t._v(t._s(t.$t("trading-assistant.editor.aiHint")))])]),e("div",{staticClass:"ai-suggestions"},t._l(t.aiPromptSuggestions,function(a){return e("a-tag",{key:a.id,staticClass:"prompt-tag",on:{click:function(e){return t.applyPromptSuggestion(a.value)}}},[t._v(" "+t._s(a.label)+" ")])}),1),e("a-textarea",{attrs:{placeholder:t.$t("trading-assistant.editor.aiPromptPlaceholder"),rows:10,"auto-size":{minRows:8,maxRows:16}},model:{value:t.aiPrompt,callback:function(e){t.aiPrompt=e},expression:"aiPrompt"}}),e("a-button",{staticStyle:{"margin-top":"10px"},attrs:{type:"primary",block:"",loading:t.aiGenerating,size:"large"},on:{click:t.handleAIGenerate}},[e("a-icon",{attrs:{type:"thunderbolt"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.aiGenerateBtn"))+" ")],1),t.aiGenerating?e("div",{staticClass:"ai-status"},[e("a-icon",{attrs:{type:"loading",spin:""}}),t._v(" "+t._s(t.$t("trading-assistant.editor.generating"))+" ")],1):t._e()],1)]),e("a-tab-pane",{key:"docs",attrs:{tab:t.$t("trading-assistant.editor.docsTab")}},[e("div",{staticClass:"docs-panel"},[e("div",{staticClass:"panel-intro"},[e("div",{staticClass:"panel-intro__title"},[t._v(t._s(t.$t("trading-assistant.editor.docsIntroTitle")))]),e("div",{staticClass:"panel-intro__desc"},[t._v(t._s(t.$t("trading-assistant.editor.docsIntroDesc")))])]),e("div",{staticClass:"docs-content",domProps:{innerHTML:t._s(t.apiDocsHtml)}})])])],1)],1)],1)],1)},H=[],G=(a(6011),a(18787)),W=a(15237),j=a.n(W),Y=(a(74806),a(55218),a(97923),a(50436),'\n
def on_init(ctx):\n """Called once when strategy starts"""\n\ndef on_bar(ctx, bar):\n """Called on each new K-line bar"""\n # bar: { open, high, low, close, volume, timestamp }\n\ndef on_order_filled(ctx, order):\n """Called when an order is filled"""\n\ndef on_stop(ctx):\n """Called when strategy stops"""\n\nctx.buy(price, amount) # Buy / go long\nctx.sell(price, amount) # Sell / reduce long / go short\nctx.close_position() # Close current position\nctx.cancel_all_orders() # Cancel pending orders\n\nctx.position # { side, amount, entry_price, unrealized_pnl }\nctx.balance # Available balance\nctx.equity # Total equity\nctx.current_price # Current market price\nctx.symbol # Trading symbol\nctx.timeframe # K-line timeframe\n\nctx.bars(n=100) # Get last N bars\nctx.param(name, default) # Get strategy parameter\nctx.indicator(id, params) # Call existing indicator\nctx.log(message) # Write strategy log\n'),J={name:"StrategyEditor",props:{value:{type:String,default:""},isDark:{type:Boolean,default:!1},userId:{type:[Number,String],default:1},visible:{type:Boolean,default:!1},initialTemplateKey:{type:String,default:""}},data:function(){return{activeTab:"templates",aiPrompt:"",aiGenerating:!1,verifying:!1,editor:null,apiDocsHtml:Y,templates:R,selectedTemplateKey:"",templateParamValues:{},templateDirty:!1,refreshTimer:null}},computed:{selectedTemplate:function(){return z(this.selectedTemplateKey)},aiPromptSuggestions:function(){return[{id:"improve",label:this.$t("trading-assistant.editor.aiSuggestionImprove"),value:this.$t("trading-assistant.editor.aiSuggestionImprovePrompt")},{id:"risk",label:this.$t("trading-assistant.editor.aiSuggestionRisk"),value:this.$t("trading-assistant.editor.aiSuggestionRiskPrompt")},{id:"explain",label:this.$t("trading-assistant.editor.aiSuggestionExplain"),value:this.$t("trading-assistant.editor.aiSuggestionExplainPrompt")}]}},mounted:function(){var t=this;this.$nextTick(function(){t.initEditor(),t.initialTemplateKey?t.loadTemplate(t.initialTemplateKey,{focusParams:!0,resetParams:!0}):t.value||t.$emit("input",t._getDefaultCode())}),window.addEventListener("resize",this.scheduleEditorRefresh)},beforeDestroy:function(){window.removeEventListener("resize",this.scheduleEditorRefresh),this.refreshTimer&&(clearTimeout(this.refreshTimer),this.refreshTimer=null),this.editor&&("function"===typeof this.editor.toTextArea&&this.editor.toTextArea(),this.editor=null)},watch:{value:function(t){this.editor&&this.editor.getValue()!==t&&(this.editor.setValue(t||""),this.scheduleEditorRefresh())},isDark:function(){this.editor&&this.editor.setOption("theme",this.isDark?"monokai":"eclipse"),this.scheduleEditorRefresh()},visible:function(t){t&&this.scheduleEditorRefresh()},initialTemplateKey:function(t){t&&t!==this.selectedTemplateKey&&this.loadTemplate(t,{focusParams:!0,resetParams:!0})}},methods:{initEditor:function(){var t=this;this.$refs.editorContainer&&(this.editor=j()(this.$refs.editorContainer,{value:this.value||this._getDefaultCode(),mode:"python",theme:this.isDark?"monokai":"eclipse",lineNumbers:!0,autoCloseBrackets:!0,matchBrackets:!0,styleActiveLine:!0,tabSize:4,indentUnit:4,indentWithTabs:!1,lineWrapping:!1,viewportMargin:1/0,gutters:["CodeMirror-linenumbers"]}),this.editor.on("change",function(){t.$emit("input",t.editor.getValue())}),this.scheduleEditorRefresh())},scheduleEditorRefresh:function(){var t=this;this.refreshTimer&&clearTimeout(this.refreshTimer),this.refreshTimer=setTimeout(function(){t.editor&&t.editor.refresh()},60)},_getDefaultCode:function(){return'"""\nMy Custom Strategy\n"""\n\ndef on_init(ctx):\n # Initialize strategy parameters\n pass\n\ndef on_bar(ctx, bar):\n # Core trading logic, called on each K-line bar\n # bar: { open, high, low, close, volume, timestamp }\n price = bar[\'close\']\n\n bars = ctx.bars(20)\n if len(bars) < 20:\n return\n\n avg = sum(b[\'close\'] for b in bars) / len(bars)\n\n if price > avg and not ctx.position:\n ctx.buy(price, ctx.equity * 0.9 / price)\n ctx.log(f"BUY at {price}")\n\n elif price < avg and ctx.position:\n ctx.close_position()\n ctx.log(f"SELL at {price}")\n'},loadTemplate:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=e.focusParams,s=void 0!==a&&a,i=e.resetParams,r=void 0===i||i,n=z(t);n&&(this.selectedTemplateKey=t,!r&&this.templateParamValues&&0!==Object.keys(this.templateParamValues).length||(this.templateParamValues=E(n)),this.templateDirty=!0,this.applySelectedTemplateToCode({silent:!0}),s&&(this.activeTab="params"),this.aiPrompt.trim()||(this.aiPrompt=this.$t("trading-assistant.editor.aiPromptTemplateHint")+" "+this.$t("trading-assistant.template.".concat(n.key))),this.scheduleEditorRefresh())},getCode:function(){return this.editor?this.editor.getValue():this.value},setCode:function(t){this.editor&&this.editor.getValue()!==t?this.editor.setValue(t):this.$emit("input",t),this.scheduleEditorRefresh()},applySelectedTemplateToCode:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.silent,a=void 0!==e&&e;if(this.selectedTemplate){var s=L(this.selectedTemplate,this.templateParamValues);this.setCode(s),this.templateDirty=!1,this.$emit("template-change",{key:this.selectedTemplateKey,params:(0,u.A)({},this.templateParamValues)}),a||G.A.success(this.$t("trading-assistant.editor.templateApplied"))}},resetTemplateParams:function(){this.selectedTemplate&&(this.templateParamValues=E(this.selectedTemplate),this.templateDirty=!0,this.applySelectedTemplateToCode({silent:!1}))},getParamLabel:function(t){var e="trading-assistant.templateParam.".concat(t.name,".label"),a=this.$t(e);return a===e?t.name:a},getParamDescription:function(t){var e="trading-assistant.templateParam.".concat(t.name,".desc"),a=this.$t(e);return a===e?"":a},getParamTypeLabel:function(t){return this.$t("trading-assistant.editor.paramType.".concat(t))},getOptionLabel:function(t){if(!t)return"";if(t.labelKey){var e=this.$t(t.labelKey);if(e!==t.labelKey)return e}return t.label||t.value},getParamPrecision:function(t){if("integer"===t.type)return 0;var e=t.step;if(!e||Number.isInteger(e))return 0;var a=String(e),s=a.split(".");return s[1]?s[1].length:0},handleNumericParamChange:function(t,e){var a=""===e||null===e||void 0===e?t.default:"integer"===t.type?parseInt(e,10):Number(e);this.$set(this.templateParamValues,t.name,a),this.templateDirty=!0},handleSelectParamChange:function(t,e){this.$set(this.templateParamValues,t.name,e),this.templateDirty=!0},handleBooleanParamChange:function(t,e){this.$set(this.templateParamValues,t.name,!!e),this.templateDirty=!0},handleTextParamChange:function(t,e){this.$set(this.templateParamValues,t.name,e),this.templateDirty=!0},applyPromptSuggestion:function(t){this.aiPrompt=t},handleVerify:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.verifying=!0,e.p=1,a=t.getCode(),e.n=2,(0,y.Ay)({url:"/api/strategies/verify-code",method:"post",data:{code:a,user_id:t.userId}});case 2:s=e.v,s&&s.success?G.A.success(t.$t("trading-assistant.editor.verifySuccess")):G.A.error(s&&(s.msg||s.message)||t.$t("trading-assistant.editor.verifyFailed")),e.n=4;break;case 3:e.p=3,i=e.v,G.A.error(t.$t("trading-assistant.editor.verifyFailed")+": "+(i.message||""));case 4:return e.p=4,t.verifying=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleAIGenerate:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.aiPrompt.trim()){e.n=1;break}return G.A.warning(t.$t("trading-assistant.editor.aiPromptRequired")),e.a(2);case 1:return t.aiGenerating=!0,e.p=2,e.n=3,(0,y.Ay)({url:"/api/strategies/ai-generate",method:"post",data:{prompt:t.aiPrompt,user_id:t.userId}});case 3:a=e.v,a&&a.code?(t.setCode(a.code),G.A.success(t.$t("trading-assistant.editor.aiGenerateSuccess"))):G.A.error(a&&(a.msg||a.message)||t.$t("trading-assistant.editor.aiGenerateFailed")),e.n=5;break;case 4:e.p=4,s=e.v,G.A.error(s&&s.message||t.$t("trading-assistant.editor.aiGenerateFailed"));case 5:return e.p=5,t.aiGenerating=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()}}},X=J,Q=(0,C.A)(X,B,H,!1,null,"6c7c8660",null),Z=Q.exports,tt=function(){var t=this,e=t._self._c;return e("div",{staticClass:"performance-analysis",class:{"theme-dark":t.isDark}},[e("a-spin",{attrs:{spinning:t.loading}},[t.hasData?e("div",[e("div",{staticClass:"metrics-grid"},[e("div",{staticClass:"metric-card",class:t.getMetricClass(t.metrics.totalReturn)},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.totalReturn")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.formatPercent(t.metrics.totalReturn)))])]),e("div",{staticClass:"metric-card",class:t.getMetricClass(t.metrics.annualReturn)},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.annualReturn")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.formatPercent(t.metrics.annualReturn)))])]),e("div",{staticClass:"metric-card negative"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.maxDrawdown")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.formatPercent(t.metrics.maxDrawdown)))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.sharpe")))]),e("div",{staticClass:"metric-value"},[t._v(t._s((t.metrics.sharpe||0).toFixed(2)))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.winRate")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.formatPercent(t.metrics.winRate)))])]),e("div",{staticClass:"metric-card",class:t.getMetricClass((t.metrics.profitFactor||0)-1)},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.profitFactor")))]),e("div",{staticClass:"metric-value"},[t._v(t._s((t.metrics.profitFactor||0).toFixed(2)))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.totalTrades")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.metrics.totalTrades||0))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.runningDays")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.metrics.runningDays||0))])])]),e("div",{staticClass:"chart-section"},[e("div",{staticClass:"chart-title"},[t._v(t._s(t.$t("trading-assistant.performance.equityCurve")))]),e("div",{ref:"equityChart",staticClass:"chart-container"})]),e("div",{staticClass:"chart-section"},[e("div",{staticClass:"chart-title"},[t._v(t._s(t.$t("trading-assistant.performance.dailyReturns")))]),e("div",{ref:"dailyChart",staticClass:"chart-container",staticStyle:{height:"250px"}})])]):t.loading?t._e():e("a-empty",{staticStyle:{padding:"60px 0"},attrs:{description:t.$t("trading-assistant.performance.noData")}})],1)],1)},et=[],at={name:"PerformanceAnalysis",props:{strategyId:{type:[Number,String],default:null},isDark:{type:Boolean,default:!1}},data:function(){return{loading:!1,metrics:{},equityData:[],dailyReturns:[],equityChartInstance:null,dailyChartInstance:null}},computed:{hasData:function(){return this.equityData.length>0}},watch:{strategyId:{handler:function(t){t&&this.loadData()},immediate:!0},isDark:function(){var t=this;this.disposeCharts(),this.$nextTick(function(){return t.renderCharts()})}},beforeDestroy:function(){this.disposeCharts()},methods:{loadData:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return t.loading=!0,e.p=2,e.n=3,(0,p.Yx)(t.strategyId);case 3:a=e.v,a&&a.data&&(t.equityData=a.data.equity_curve||a.data||[],t.computeMetrics(),t.$nextTick(function(){return t.renderCharts()})),e.n=5;break;case 4:e.p=4,e.v;case 5:return e.p=5,t.loading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()},computeMetrics:function(){var t=this.equityData;if(t.length){for(var e=t.map(function(t){return t.equity||t.value||t.y||0}),a=e[0]||1,s=e[e.length-1]||a,i=(s-a)/a,r=e[0],n=0,o=[],l=1;l