1"use strict";(self.webpackChunkuser_app=self.webpackChunkuser_app||[]).push([["2799"],{36045:function(e,t,n){n.d(t,{d:()=>l});var r=n(70813),a=n(77214);let o=n.p+"c1ef9ed6b6a969d4.svg",i=n.p+"b8915fa0593309fd.svg";var s=n(51266),l=function(e){var t=e.width,n=e.height,l=(0,a.X)().colorScheme,c=function(){window.open(s.Rb.websiteUrl,"_blank")};return(0,r.jsx)("img",{src:"dark"===l?i:o,alt:"DCAUT",width:void 0===t?136:t,height:void 0===n?50:n,role:"button",tabIndex:0,style:{display:"block",objectFit:"contain",cursor:"pointer"},onClick:c,onKeyDown:function(e){("Enter"===e.key||" "===e.key)&&(e.preventDefault(),c())}})}},31465:function(e,t,n){n.d(t,{ub:()=>r.u,Gu:()=>a.G}),n(37841);var r=n(15683);n(67051),n(70813),n(23775),n(62434);var a=n(34942);n(16389),n(44373),n(86792),n(58384),n(78859),n(52078),n(95473),n(49900)},46337:function(e,t,n){n.d(t,{U:()=>d});var r=n(70813),a=n(45386),o=n(86318),i=n(72757),s=n(31465),l=n(59244),c=n(99532),d=function(e){var t=e.description,n=e.onAction,d=e.loading,u=e.height,p=e.minHeight,b=void 0===p?500:p,x=(0,l.QT)().t,h=(0,c.GE)();return(0,r.jsxs)(a.x,{h:void 0===u?500:u,mt:"24px",mr:0,style:{borderBox:"content-box",position:"relative",minHeight:b},children:[(0,r.jsx)(s.ub,{description:t,minHeight:b}),(0,r.jsx)(o.Z,{justify:"center",style:{position:"absolute",left:0,right:0,bottom:96},children:(0,r.jsx)(i.z,{radius:"xl",size:"sm",variant:"subtle",color:"primary",onClick:n,loading:void 0!==d&&d,styles:{root:{minWidth:104,height:38,paddingInline:22,backgroundColor:"transparent",color:h.isDark?"var(--mantine-color-gray-3)":"var(--mantine-color-primary-6)",border:h.isDark?"1px solid var(--mantine-color-dark-4)":"1px solid var(--mantine-color-default-border)",boxShadow:"none"},label:{fontWeight:600}},children:x("backtest.start")})})]})}},36171:function(e,t,n){n.r(t),n.d(t,{default:()=>er});var r=n(70813),a=n(40181),o=n(54621),i=n(55826),s=n(12079),l=n(80703),c=n(45386),d=n(22782),u=n(83303),p=n(15817),b=n(86318),x=n(37180),h=n(13221),f=n(54286),m=n(62434),g=n(51266),y=n(75265),v=n(17406),k=n(53017),j=n(72688);function w(e,t,n,r,a,o,i){try{var s=e[o](i),l=s.value}catch(e){n(e);return}s.done?t(l):Promise.resolve(l).then(r,a)}var T=function(e){var t=!(arguments.length>1)||void 0===arguments[1]||arguments[1],n=(0,k.b)();return(0,v.a)({queryKey:j.cf.BACKTEST_ORDERS(e.backtestId,e.page,e.pageSize),queryFn:function(){var t;return(t=function(){return function(e,t){var n,r,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return i.next=s(0),i.throw=s(1),i.return=s(2),"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(l){var c=[s,l];if(n)throw TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(o=0)),o;)try{if(n=1,r&&(a=2&c[0]?r.return:c[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,c[1])).done)return a;switch(r=0,a&&(c=[2&c[0],a.value]),c[0]){case 0:case 1:a=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,r=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===c[0]||2===c[0])){o=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){o.label=c[1];break}if(6===c[0]&&o.label<a[1]){o.label=a[1],a=c;break}
1if(a&&o.label<a[2]){o.label=a[2],o.ops.push(c);break}a[2]&&o.ops.pop(),o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e],r=0}finally{n=a=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(t){switch(t.label){case 0:return[4,n.getBacktestOrders(e)];case 1:return[2,t.sent()]}})},function(){var e=this,n=arguments;return new Promise(function(r,a){var o=t.apply(e,n);function i(e){w(o,r,a,i,s,"next",e)}function s(e){w(o,r,a,i,s,"throw",e)}i(void 0)})})()},enabled:t&&!!e.backtestId,placeholderData:function(t,n){return(null==n?void 0:n.queryKey[1])===e.backtestId?t:void 0},staleTime:3e5,gcTime:6e5})},z=n(77491);function C(e,t,n,r,a,o,i){try{var s=e[o](i),l=s.value}catch(e){n(e);return}s.done?t(l):Promise.resolve(l).then(r,a)}var S=function(e){var t=!(arguments.length>1)||void 0===arguments[1]||arguments[1],n=(0,k.b)();return(0,v.a)({queryKey:j.cf.KLINES(null==e?void 0:e.backtestId,null==e?void 0:e.symbol,null==e?void 0:e.period,null==e?void 0:e.from,null==e?void 0:e.to),queryFn:function(){var t;return(t=function(){return function(e,t){var n,r,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return i.next=s(0),i.throw=s(1),i.return=s(2),"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(l){var c=[s,l];if(n)throw TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(o=0)),o;)try{if(n=1,r&&(a=2&c[0]?r.return:c[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,c[1])).done)return a;switch(r=0,a&&(c=[2&c[0],a.value]),c[0]){case 0:case 1:a=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,r=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===c[0]||2===c[0])){o=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){o.label=c[1];break}if(6===c[0]&&o.label<a[1]){o.label=a[1],a=c;break}
1if(a&&o.label<a[2]){o.label=a[2],o.ops.push(c);break}a[2]&&o.ops.pop(),o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e],r=0}finally{n=a=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(t){switch(t.label){case 0:if(!e)throw Error("Missing klines parameters");return[4,n.getKlines(e)];case 1:return[2,t.sent()]}})},function(){var e=this,n=arguments;return new Promise(function(r,a){var o=t.apply(e,n);function i(e){C(o,r,a,i,s,"next",e)}function s(e){C(o,r,a,i,s,"throw",e)}i(void 0)})})()},enabled:t&&!!(null==e?void 0:e.backtestId)&&!!(null==e?void 0:e.symbol),staleTime:3e5,gcTime:6e5})},I=n(3866),A=n(59244),P=n(31465),O=n(39426),E=n(52919),D=n(55401),F=n(55115),M=n(13905),R=n(15241),Z=n(99836),q=n(72757),U=n(99532);function B(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function K(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var o=[],i=!0,s=!1;try{for(a=a.call(e);!(i=(n=a.next()).done)&&(o.push(n.value),!t||o.length!==t);i=!0);}catch(e){s=!0,r=e}finally{try{i||null==a.return||a.return()}finally{if(s)throw r}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return B(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return B(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var H=function(e){var t,n=e.records,a=e.pageSize,o=e.currentPage,x=e.totalItems,h=void 0===x?0:x,g=e.highlightedRecordId,y=e.onRecordClick,v=e.onPageChange,k=e.loading,j=void 0!==k&&k,w=e.baseAsset,T=e.quoteAsset,z=(0,s.rZ)(),C=(0,U.GE)(),S=(0,A.QT)(),O=S.t,E=S.currentLanguage,B=(0,l.S)({base:!0,sm:!1}),H=Math.ceil(h/(void 0===a?20:a)),L=K((0,i.useState)(!1),2),G=L[0],N=L[1],W=K((0,i.useState)(""),2),_=W[0],Q=W[1];(0,i.useEffect)(function(){j&&N(!0)},[j]),(0,i.useEffect)(function(){if(!j&&G){var e=setTimeout(function(){N(!1)},300);return function(){return clearTimeout(e)}}},[j,G]);var Y=(0,i.useCallback)(function(e){return parseFloat(e).toLocaleString(E,{minimumFractionDigits:8,maximumFractionDigits:8})},[E]),V=(0,i.useCallback)(function(e){if(!e)return"--";var t=e.split("-");return t[t.length-1]||"--"},[]),$=(0,i.useCallback)(function(e){if(!e.purpose)return"--";switch(e.purpose.toUpperCase()){case"ENTRY":return O("backtest.results.tradeTable.entry");case"ADD":return O("backtest.results.tradeTable.add");case"TP":return O("backtest.results.tradeTable.tp");default:return e.purpose}},[O]),J=(0,i.useCallback)(function(){var e="number"==typeof _?_:Number(_);!Number.isInteger(e)||e<1||e>H||(null==v||v(e),Q(""))},[_,v,H]),X=(0,i.useMemo)(function(){var e="number"==typeof _?_:Number(_);return Number.isInteger(e)&&e>=1&&e<=H},[_,H]),ee=(0,i.useMemo)(function(){var e,t;return{input:(e=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}({},C.borders.input),t=t={width:60,backgroundColor:"var(--mantine-color-default)",color:"var(--mantine-color-text)"},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e)}},[C.borders.input]),et=function(){return(0,r.jsx)(u.M,{style:{position:"absolute",inset:0,zIndex:2,pointerEvents:"none"},children:(0,r.jsxs)(d.K,{align:"center",gap:"sm",children:[(0,r.jsx)(m.Jc,{size:32}),(0,r.jsx)(p.x,{size:"xs",c:"dimmed",children:O("common.loading")})]})})},en=(0,i.useMemo)(function(){var e=new Map,t="",r=0;if(n.forEach(function(n,a){var o=V(n.positionId);if(o!==t){if(t&&r<a)for(var i=r;i<a;
1i++)e.set(i,{period:t,rowSpan:a-r,isFirst:i===r});t=o,r=a}}),t&&r<n.length)for(var a=r;a<n.length;a++)e.set(a,{period:t,rowSpan:n.length-r,isFirst:a===r});return e},[n,V]);return n.length?(0,r.jsxs)(c.x,{style:{display:"flex",flexDirection:"column",height:"100%"},children:[(0,r.jsx)(c.x,{style:{flex:1,minHeight:0,overflow:"hidden"},children:B?(0,r.jsxs)(c.x,{style:{position:"relative",height:"100%"},children:[G&&et(),(0,r.jsx)(f.x,{style:{height:"100%"},type:"auto",children:(0,r.jsx)(d.K,{gap:"xs",py:"xs",px:0,children:n.map(function(e){return(0,r.jsx)(D.Z,{padding:"xs",withBorder:!0,style:{backgroundColor:g==="".concat(e.id)?z.colors.primary[0]:void 0,cursor:"pointer",transition:"background-color 0.3s ease",borderColor:C.borders.color},onClick:function(){return null==y?void 0:y(e)},children:(0,r.jsxs)(d.K,{gap:"xs",children:[(0,r.jsxs)(F.k,{justify:"space-between",align:"center",children:[(0,r.jsx)(p.x,{size:"sm",c:"dimmed",children:(0,I.Zm)(e.timestamp,E)}),(0,r.jsx)(p.x,{size:"xs",c:"dimmed",children:"LONG"===e.side?O("backtest.results.tradeTable.long"):O("backtest.results.tradeTable.short")})]}),(0,r.jsxs)(d.K,{justify:"space-between",gap:"xs",children:[(0,r.jsxs)(b.Z,{gap:"xs",children:[(0,r.jsxs)(p.x,{size:"xs",c:"dimmed",children:[O("backtest.results.tradeTable.positionPeriod"),":"]}),(0,r.jsx)(p.x,{size:"xs",children:V(e.positionId)})]}),(0,r.jsxs)(b.Z,{gap:"xs",children:[(0,r.jsxs)(p.x,{size:"xs",c:"dimmed",children:[O("backtest.results.tradeTable.instruction"),":"]}),(0,r.jsx)(p.x,{size:"xs",children:$(e)})]}),(0,r.jsxs)(b.Z,{gap:"xs",children:[(0,r.jsxs)(p.x,{size:"xs",c:"dimmed",children:[O("backtest.results.tradeTable.position"),":"]}),(0,r.jsx)(p.x,{size:"xs",children:e.sequenceNumber})]}),(0,r.jsxs)(b.Z,{gap:"xs",children:[(0,r.jsxs)(p.x,{size:"xs",c:"dimmed",children:[O("backtest.results.tradeTable.price"),":"]}),(0,r.jsxs)(p.x,{size:"xs",fw:500,children:[Y(e.avgFillPrice)," ",T]})]}),(0,r.jsxs)(b.Z,{gap:"xs",children:[(0,r.jsxs)(p.x,{size:"xs",c:"dimmed",children:[O("backtest.results.tradeTable.quantity"),":"]}),(0,r.jsxs)(p.x,{size:"xs",children:[e.quantity," ",w]})]}),(0,r.jsxs)(b.Z,{gap:"xs",children:[(0,r.jsxs)(p.x,{size:"xs",c:"dimmed",children:[O("backtest.results.tradeTable.commission"),":"]}),(0,r.jsxs)(p.x,{size:"xs",children:[e.commission," ",T]})]}),(0,r.jsxs)(b.Z,{gap:"xs",children:[(0,r.jsxs)(p.x,{size:"xs",c:"dimmed",children:[O("backtest.results.tradeTable.profit"),":"]}),(0,r.jsx)(p.x,{size:"xs",children:e.realizedProfit?"".concat(e.realizedProfit," ").concat(T):"--"})]})]})]})},e.id)})})})]}):(t=n.map(function(e,t){var n=en.get(t),a=null==n?void 0:n.isFirst;return(0,r.jsxs)(M.i.Tr,{style:{backgroundColor:g==="".concat(e.id)?z.colors.primary[0]:void 0,cursor:"pointer",transition:"background-color 0.3s ease"},onClick:function(){return null==y?void 0:y(e)},children:[a&&(0,r.jsx)(M.i.Td,{rowSpan:null==n?void 0:n.rowSpan,style:{textAlign:"center",verticalAlign:"middle"},children:(0,r.jsx)(p.x,{size:"sm",fw:500,children:null==n?void 0:n.period})}),(0,r.jsx)(M.i.Td,{style:{textAlign:"center"},children:(0,r.jsx)(p.x,{size:"sm",children:(0,I.Zm)(e.timestamp,E)})}),(0,r.jsx)(M.i.Td,{style:{textAlign:"center"},children:(0,r.jsx)(p.x,{size:"sm",children:$(e)})}),(0,r.jsx)(M.i.Td,{style:{textAlign:"center"},children:(0,r.jsx)(p.x,{size:"sm",children:"LONG"===e.side?O("backtest.results.tradeTable.long"):O("backtest.results.tradeTable.short")})}),(0,r.jsx)(M.i.Td,{style:{textAlign:"center"},children:(0,r.jsxs)(p.x,{size:"sm",children:["#",e.sequenceNumber]})}),(0,r.jsx)(M.i.Td,{style:{textAlign:"center"},children:(0,r.jsx)(p.x,{size:"sm",children:Y(e.avgFillPrice)})}),(0,r.jsx)(M.i.Td,{style:{textAlign:"center"},children:(0,r.jsx)(p.x,{size:"sm",children:e.quantity})}),(0,r.jsx)(M.i.Td,{style:{textAlign:"center"},children:(0,r.jsx)(p.x,{size:"sm",children:e.commission})}),(0,r.jsx)(M.i.Td,{style:{textAlign:"center"},children:(0,r.jsx)(p.x,{size:"sm",children:e.realizedProfit?"".concat(e.realizedProfit):"--"})})]},e.id)}),(0,r.jsxs)(c.x,{style:{position:"relative",height:"100%"},children:[G&&et(),(0,r.jsxs)(M.i,{horizontalSpacing:"xs",verticalSpacing:"xs",highlightOnHover:!0,withTableBorder:!0,withColumnBorders:!0,stickyHeader:!0,children:[(0,r.jsx)(M.i.Thead,{children:(0,r.jsxs)(M.i.Tr,{children:[(0,r.jsx)(M.i.Th,{style:{textAlign:"center",minWidth:"80px"},children:O("backtest.results.tradeTable.positionPeriod")}),(0,r.jsx)(M.i.Th,{style:{textAlign:"center",minWidth:"120px"},children:O("backtest.results.tradeTable.tradeTime")}),(0,r.jsx)(M.i.Th,{style:{textAlign:"center",minWidth:"80px"},children:O("backtest.results.tradeTable.instruction")}),(0,r.jsx)(M.i.Th,{style:{textAlign:"center",minWidth:"80px"},children:O("backtest.results.tradeTable.direction")}),(0,r.jsx)(M.i.Th,{style:{textAlign:"center",minWidth:"60px"},children:O("backtest.results.tradeTable.position")}),(0,r.jsxs)(M.i.Th,{style:{textAlign:"center",minWidth:"100px"},children:[O("backtest.results.tradeTable.price"),"(".concat(T,")")]}),(0,r.jsxs)(M.i.Th,{style:{textAlign:"center",minWidth:"80px"},children:[O("backtest.results.tradeTable.quantity"),"(".concat(w,")")]}),(0,r.jsxs)(M.i.Th,{style:{textAlign:"center",minWidth:"80px"},children:[O("backtest.results.tradeTable.commission"),"(".concat(T,")")]}),(0,r.jsxs)(M.i.Th,{style:{textAlign:"center",minWidth:"100px"},children:[O("backtest.results.tradeTable.profit"),"(".concat(T,")")]})]})}),(0,r.jsx)(M.i.Tbody,{children:t})]})]}))}),H>1&&(0,r.jsx)(c.x,{style:{flexShrink:0,paddingTop:z.spacing.xs,height:40,overflow:"hidden"},children:(0,r.jsxs)(b.Z,{justify:"center",wrap:"wrap",gap:"md",children:[(0,r.jsxs)(p.x,{size:"xs",c:"dimmed",children:[O("common.total"),": ",h]}),(0,r.jsx)(u.M,{children:(0,r.jsx)(R.t,{size:"xs",total:H,value:void 0===o?1:o,onChange:function(e){return null==v?void 0:v(e)},withEdges:!0,siblings:+!B,boundaries:1})}),!B&&H>5&&(0,r.jsxs)(b.Z,{gap:"xs",children:[(0,r.jsxs)(p.x,{size:"xs",c:"dimmed",children:[O("common.jumpTo"),":"]}
1),(0,r.jsx)(Z.Y,{size:"xs",value:_,onChange:Q,onKeyDown:function(e){"Enter"===e.key&&J()},min:1,max:H,hideControls:!0,styles:ee,placeholder:"1-".concat(H)}),(0,r.jsx)(q.z,{size:"xs",variant:"subtle",onClick:J,disabled:!X,children:O("common.jumpTo")})]})]})})]}):j||G?(0,r.jsx)(P.Gu,{minHeight:200}):(0,r.jsx)(P.ub,{description:O("backtest.results.noData"),minHeight:200,height:"auto"})},L=n(61090),G=n(30416),N=n(69647),W=n(15683),_=n(23775),Q=n(3696);function Y(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function V(e){var t,n,a,o,s,u,x,h=e.backtestId,m=(t=(0,i.useState)(1),function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n,r,a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var o=[],i=!0,s=!1;try{for(a=a.call(e);!(i=(n=a.next()).done)&&(o.push(n.value),o.length!==t);i=!0);}catch(e){s=!0,r=e}finally{try{i||null==a.return||a.return()}finally{if(s)throw r}}return o}}(t,2)||function(e,t){if(e){if("string"==typeof e)return Y(e,2);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Y(e,t)}}(t,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=m[0],y=m[1],j=(0,_.QT)(),w=j.t,T=j.currentLanguage,z=(0,l.S)({base:!0,sm:!1}),C=(n={backtestId:h,page:g,pageSize:20},a=(0,k.b)(),(0,v.a)({queryKey:["backtestPositions",n.backtestId,n.page,n.pageSize],queryFn:function(){return a.getBacktestPositions(n)},enabled:!!n.backtestId,placeholderData:function(e,t){return(null==t?void 0:t.queryKey[1])===n.backtestId?e:void 0},staleTime:3e5})),S=null!=(u=null==(o=C.data)?void 0:o.list)?u:[],A=null!=(x=null==(s=C.data)?void 0:s.total)?x:0,P="trading.currentPositionTable",O=[{accessor:"symbol",title:w("".concat(P,".columns.tradingPair"))},{accessor:"side",title:w("".concat(P,".columns.side")),render:function(e){return"LONG"===e.side?w("backtest.results.tradeTable.long"):"SHORT"===e.side?w("backtest.results.tradeTable.short"):"--"}},{accessor:"isClosed",title:w("".concat(P,".columns.status")),render:function(e){return w("".concat(P,".status.").concat(e.isClosed?"closed":"holding"))}},{accessor:"entryPrice",title:w("".concat(P,".columns.avgEntryPrice")),render:function(e){var t;return null!=(t=e.entryPrice)?t:"--"}},{accessor:"positionQty",title:w("".concat(P,".columns.positionSize")),render:function(e){var t;return null!=(t=e.positionQty)?t:"--"}},{accessor:"initialMargin",title:w("".concat(P,".columns.margin")),render:function(e){var t;return null!=(t=e.initialMargin)?t:"--"}},{accessor:"realizedPnl",title:w("".concat(P,".columns.pnl")),render:function(e){var t,n;return"".concat(null!=(t=e.realizedPnl)?t:"--"," / ").concat(null!=(n=e.unrealizedPnl)?n:"--")}},{accessor:"openTime",title:w("".concat(P,".columns.openTime")),render:function(e){return e.openTime?(0,I.Zm)(e.openTime,T):"--"}},{accessor:"closeTime",title:w("".concat(P,".columns.closeTime")),render:function(e){return e.closeTime?(0,I.Zm)(e.closeTime,T):"--"}}];return C.isError&&!C.data?(0,r.jsx)(Q.E,{onRetry:function(){C.refetch()}}):C.isPending?(0,r.jsx)(d.K,{gap:"xs",py:"xs","aria-label":w("common.loading"),children:Array.from({length:z?2:6},function(e,t){return(0,r.jsx)(c.x,{style:{display:"grid",gridTemplateColumns:z?"1fr 1fr":"repeat(".concat(O.length,", minmax(0, 1fr))"),gap:12},children:O.map(function(e){return(0,r.jsx)(L.O,{height:z?28:20},e.accessor)})},t)})}):S.length?(0,r.jsxs)(c.x,{pos:"relative",style:{fontVariantNumeric:"tabular-nums"},children:[C.isError&&(0,r.jsx)(Q.E,{onRetry:function(){C.refetch()}}),z?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(G.f,{visible:C.isFetching}),(0,r.jsx)(f.x.Autosize,{mah:600,scrollbarSize:4,children:(0,r.jsx)(d.K,{gap:"md",py:"xs",children:S.map(function(e){return(0,r.jsx)(d.K,{gap:6,children:O.map(function(t){var n;return(0,r.jsxs)(b.Z,{justify:"space-between",gap:"xs",wrap:"nowrap",children:[(0,r.jsx)(p.x,{size:"xs",c:"dimmed",children:t.title}),(0,r.jsx)(p.x,{size:"xs",ta:"end",children:t.render?t.render(e,0):String(null!=(n=e[t.accessor])?n:"--")})]},t.accessor)})},e.id)})})}),A>20&&(0,r.jsx)(R.t,{size:"xs",total:Math.ceil(A/20),value:g,onChange:y,siblings:0,mt:"xs"})]}):(0,r.jsx)(N.N,{records:S,columns:O,fetching:C.isFetching,minHeight:180,fz:"xs",page:g,recordsPerPage:20,totalRecords:A,onPageChange:y})]}):(0,r.jsx)(W.u,{description:w("".concat(P,".noData")),minHeight:180,height:"auto"})}
1var $=n(49383),J=n(29729),X=n(62595),ee=n(46337);function et(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function en(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var o=[],i=!0,s=!1;try{for(a=a.call(e);!(i=(n=a.next()).done)&&(o.push(n.value),!t||o.length!==t);i=!0);}catch(e){s=!0,r=e}finally{try{i||null==a.return||a.return()}finally{if(s)throw r}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return et(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return et(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function er(e){var t,n,v,k,j,w,C=e.isActive,D=en((0,i.useState)(),2),F=D[0];D[1];var M=en((0,i.useState)(1),2),R=M[0],Z=M[1],q=en((0,i.useState)(null),2),U=q[0],B=q[1],K=en((0,i.useState)("orders"),2),L=K[0],G=K[1],N=(0,z.DW)(),W=N.backtestResult,_=N.backtestStatus,Y=N.configParams,et=N.isStartingBacktest,er=null!=(k=null==W?void 0:W.configParamsSnapsh
1ot)?k:Y,ea=null!=(j=null!=U?U:null==W||null==(t=W.savedSnapshot)?void 0:t.interval)?j:"1d",eo=(0,X.A)().startBacktest,ei=(0,s.rZ)(),es=(0,A.QT)(),el=es.t,ec=es.currentLanguage,ed=(0,l.S)({base:!0,sm:!1}),eu=(0,$.$)().symbols,ep=en((0,i.useState)(),2),eb=ep[0],ex=ep[1],eh=en((0,i.useState)(void 0),2),ef=eh[0],em=eh[1];(0,i.useEffect)(function(){if(eu&&(null==er||null==(e=er.baseConfig)?void 0:e.symbol)){var e,t=en(er.baseConfig.symbol.split("."),2),n=t[0],r=t[1],a=eu[r];if(!a)return void console.warn("unable to find exchange: ",r);var o=a.filter(function(e){return e.symbol===n});if(!(null==o?void 0:o.length))return void console.warn("unable to find symbol data, symbol: ",n);ex("".concat(o[0].baseAsset)),em("".concat(o[0].quoteAsset))}},[eu,null==er||null==(n=er.baseConfig)?void 0:n.symbol]);var eg=(0,y.z)(function(e){},2e3),ey=(0,i.useMemo)(function(){if(!(null==er?void 0:er.baseConfig))return void console.warn("Missing baseConfig in configParams");if(!er.baseConfig.symbol||!er.baseConfig.timeRange)return void console.warn("Missing required config params for benchmark return data");if(!(null==W?void 0:W.backtestId))return void console.warn("Missing backtestId in backtestResult");if("running"===_)return void console.warn("Backtest is not completed, cannot fetch Kline data");var e=Math.floor(new Date(er.baseConfig.timeRange.start).getTime()/1e3),t=Math.floor(new Date(er.baseConfig.timeRange.end).getTime()/1e3);return{backtestId:W.backtestId,symbol:er.baseConfig.symbol,period:ea,from:e,to:t}},[null==er?void 0:er.baseConfig,null==W?void 0:W.backtestId,_,ea]),ev=T({backtestId:(null==W?void 0:W.backtestId)||"",page:R,pageSize:20},!!(null==W?void 0:W.backtestId)&&"running"!==_),ek=ev.data,ej=ev.isLoading,ew=ev.isFetching,eT=ev.error,ez=ev.refetch,eC=S(ey,!!ey&&!!(null==W?void 0:W.backtestId)&&"running"!==_),eS=eC.data,eI=eC.error,eA=eC.isLoading,eP=eC.isFetching,eO=eC.refetch,eE=(0,i.useMemo)(function(){if(!eS||0===eS.length)return{klineData:[],tradeMarkerData:{},ordersMap:new Map};var e=new Map,t={};return{klineData:eS.map(function(n,r){if(n.orders&&n.orders.length>0){e.set(n.e,n.orders);var a=n.e/1e3;n.orders.forEach(function(e){t[a]||(t[a]=[]),t[a].push({time:a,side:e.side,action:e.action,price:parseFloat("".concat(e.avgFillPrice))})})}return{time:n.e/1e3,open:parseFloat(n.o),high:parseFloat(n.h),low:parseFloat(n.l),close:parseFloat(n.c)}}),tradeMarkerData:t,ordersMap:e}},[eS]),eD=eE.klineData,eF=eE.tradeMarkerData,eM=eE.ordersMap,eR=(0,i.useMemo)(function(){return ek?{tradeRecords:ek.list||[],totalItems:ek.total||0}:{tradeRecords:[],totalItems:0}},[ek]),eZ=eR.tradeRecords,eq=eR.totalItems,eU=eA&&!eD.length,eB=ej&&!eZ.length;(0,i.useEffect)(function(){eI&&(console.error("Failed to fetch klines:",eI),(0,J.G)(eI,{module:"backtest_trade_tab",action:"fetch_klines",reportBusinessError:!0})),eT&&(console.error("Failed to fetch backtest orders:",eT),(0,J.G)(eT,{module:"backtest_trade_tab",action:"fetch_backtest_orders",reportBusinessError:!0}))},[eI,eT]);var eK=(0,i.useCallback)(function(e){},[null==W?void 0:W.backtestId,_]),eH=(0,i.useCallback)(function(e){Z(e)},[]);return"running"===_?(0,r.jsx)(c.x,{h:"500px",mr:ed?0:"sm",mt:"24px",style:{borderBox:"content-box"},children:(0,r.jsx)(P.ub,{description:el("strategyConfig.backtest.report.backtestInProgress")})}):(null==W?void 0:W.backtestId)||eU||eB||eD.length||eZ.length?(0,r.jsx)(c.x,{mr:"sm",children:(0,r.jsxs)(d.K,{gap:0,h:"100%",style:{overflow:"hidden"},children:[(0,r.jsxs)(c.x,{style:{flexShrink:0,position:"relative"},mt:"24px",children:[eP&&eD.length>0&&(0,r.jsx)(u.M,{style:{position:"absolute",inset:0,zIndex:2,pointerEvents:"none"},children:(0,r.jsxs)(d.K,{align:"center",gap:"sm",children:[(0,r.jsx)(m.Jc,{size:32}),(0,r.jsx)(p.x,{size:"xs",c:"dimmed",children:el("common.loading")})]})}),eI?(0,r.jsx)(Q.E,{onRetry:function(){eO()}}):eU?(0,r.jsx)(P.Gu,{minHeight:400}):eD.length?C&&(0,r.jsx)(O.rA,{chartOptions:{height:400},series:[{id:"candlestick_series",type:"candlestick",visible:!0,data:eD,candlestickMarkerData:eF,candlestickOrdersMap:eM,options:{upColor:"#26a69a",downColor:"#ef5350",borderUpColor:"#26a69a",borderDownColor:"#ef5350",wickUpColor:"#26a69a",wickDownColor:"#ef5350",lastValueVisible:!1,priceLineVisible:!1}}],onVisibleRangeChange:eg,tooltip:{enabled:!0,customFormatter:function(e){var t=e.series.find(function(e){return"candlestick"===e.type}),n=null;if(t&&t.data&&(n=t.data),!n){var r=!0,a=!1,o=void 0;try{for(var i,s=e.series[Symbol.iterator]();!(r=(i=s.next()).done);r=!0){var l,c=i.value;if(c.data&&"object"==((l=c.data)&&"undefined"!=typeof Symbol&&l.constructor===Symbol?"symbol":typeof l)&&void 0!==c.data.open&&void 0!==c.data.high&&void 0!==c.data.low&&void 0!==c.data.close){n=c.data;break}}}catch(e){a=!0,o=e}finally{try{r||null==s.return||s.return()}finally{if(a)throw o}}}var d=n?'\n <div style="display: flex; gap: 8px; font-size: 10px; margin-bottom: 6px; padding: 4px 6px; background: var(--mantine-color-default-hover); border-radius: 3px;">
1\n <span style="color: var(--mantine-color-dimmed);">'.concat(el("backtest.results.tradeTable.open"),':</span><span style="color: var(--mantine-color-text); font-weight: 500;">').concat(n.open.toFixed(2),'</span>\n <span style="color: var(--mantine-color-dimmed);">').concat(el("backtest.results.tradeTable.high"),':</span><span style="color: var(--mantine-color-text); font-weight: 500;">').concat(n.high.toFixed(2),'</span>\n <span style="color: var(--mantine-color-dimmed);">').concat(el("backtest.results.tradeTable.low"),':</span><span style="color: var(--mantine-color-text); font-weight: 500;">').concat(n.low.toFixed(2),'</span>\n <span style="color: var(--mantine-color-dimmed);">').concat(el("backtest.results.tradeTable.close"),':</span><span style="color: ').concat(n.close>=n.open?"#26a69a":"#ef5350",'; font-weight: 600;">').concat(n.close.toFixed(2),"</span>\n </div>\n "):"";if(e.trades&&e.trades.length>0){var u=1e3*e.time,p=eM.get(u)||[],b=p.filter(function(e){return"BUY"===e.action.toUpperCase()}).length,x=p.filter(function(e){return"SELL"===e.action.toUpperCase()}).length;if(p.length>0)return'\n <style>\n #enhanced-chart-tooltip-scroll::-webkit-scrollbar {\n width: 1px;\n }\n #enhanced-chart-tooltip-scroll::-webkit-scrollbar-track {\n background: transparent;\n }\n #enhanced-chart-tooltip-scroll::-webkit-scrollbar-thumb {\n background: var(--mantine-color-default-border);\n border-radius: 0;\n }\n #enhanced-chart-tooltip-scroll::-webkit-scrollbar-thumb:hover {\n background: var(--mantine-color-dimmed);\n }\n /* Firefox */\n #enhanced-chart-tooltip-scroll {\n scrollbar-width: thin;\n scrollbar-color: var(--mantine-color-default-border) transparent;\n }\n </style>\n <div style="background: var(--mantine-color-default); border: 1px solid rgba(0, 0, 0, 0.08); border-radius: 6px; padding: 10px; box-shadow: 0 2px 12px rgba(0,0,0,0.08); max-height: 300px; display: flex; flex-direction: column;">\n <div style="margin-bottom: 6px; flex-shrink: 0;">\n '.concat(d,'\n <div style="font-size: 12px; font-weight: 500; color: var(--mantine-color-text); margin-bottom: 4px;">\n ').concat(el("backtest.results.tradeTable.tradeRecords")," (").concat(p.length).concat(el("backtest.results.tradeTable.trades"),")\n ").concat(p.length>5?'<span style="font-size: 10px; color: var(--mantine-color-dimmed); margin-left: 8px;">'.concat(el("backtest.results.tradeTable.scrollHint"),"</span>"):"",'\n </div>\n <div style="display: flex; gap: 12px; font-size: 11px;">\n <span style="display: flex; align-items: center; gap: 4px;">\n <span style="background: #10b981; width: 8px; height: 8px; border-radius: 2px; display: inline-block;"></span>\n <span style="color: var(--mantine-color-text);">').concat(el("backtest.results.tradeTable.buyCount"),": ").concat(b).concat(el("backtest.results.tradeTable.trades"),'</span>\n </span>\n <span style="display: flex; align-items: center; gap: 4px;">\n <span style="background: #f97316; width: 8px; height: 8px; border-radius: 2px; display: inline-block;"></span>\n <span style="color: var(--mantine-color-text);">').concat(el("backtest.results.tradeTable.sellCount"),": ").concat(x).concat(el("backtest.results.tradeTable.trades"),'</span>\n </span>\n </div>\n </div>\n <div id="enhanced-chart-tooltip-scroll" style="max-height: 220px; overflow-y: auto; overflow-x: hidden;" tabindex="0">\n ').concat(p.map(function(e,t){return'\n <div style="padding: 5px 0; '.concat(t>0?"border-top: 1px solid rgba(0, 0, 0, 0.04);":"",'">\n <div style="display: flex; align-items: center; gap: 6px;">
1\n <span style="color: var(--mantine-color-gray-5); font-size: 10px; width: 18px;">').concat(t+1,'.</span>\n <span style="background: ').concat("BUY"===e.action.toUpperCase()?"#10b981":"#f97316",'; color: white; padding: 0px 3px; border-radius: 2px; font-size: 8px; font-weight: 600; min-width: 24px; text-align: center; height: 14px; line-height: 14px;">\n ').concat(e.action.toUpperCase(),'\n </span>\n <span style="font-size: 11px; color: var(--mantine-color-text); flex: 1;">\n ').concat(el("backtest.results.tradeTable.price"),": ").concat(e.avgFillPrice," | ").concat(el("backtest.results.tradeTable.quantity"),": ").concat(e.filledQuantity||e.quantity,'\n </span>\n </div>\n <div style="font-size: 9px; color: var(--mantine-color-gray-5); margin-left: calc(18px + 6px + 24px + 6px); margin-top: 2px;">\n ').concat((0,I.Zm)(e.timestamp,ec),"\n </div>\n </div>\n ")}).join(""),"\n </div>\n </div>\n ");var h=e.trades,f=h.filter(function(e){return"BUY"===e.action.toUpperCase()}).length,m=h.filter(function(e){return"SELL"===e.action.toUpperCase()}).length;return'\n <style>\n #enhanced-chart-tooltip-scroll::-webkit-scrollbar {\n width: 1px;\n }\n #enhanced-chart-tooltip-scroll::-webkit-scrollbar-track {\n background: transparent;\n }\n #enhanced-chart-tooltip-scroll::-webkit-scrollbar-thumb {\n background: var(--mantine-color-default-border);\n border-radius: 0;\n }\n #enhanced-chart-tooltip-scroll::-webkit-scrollbar-thumb:hover {\n background: var(--mantine-color-dimmed);\n }\n /* Firefox */\n #enhanced-chart-tooltip-scroll {\n scrollbar-width: thin;\n scrollbar-color: var(--mantine-color-default-border) transparent;\n }\n </style>\n <div style="background: var(--mantine-color-default); border: 1px solid rgba(0, 0, 0, 0.08); border-radius: 6px; padding: 10px; box-shadow: 0 2px 12px rgba(0,0,0,0.08); max-height: 300px; display: flex; flex-direction: column;">\n <div style="margin-bottom: 6px; flex-shrink: 0;">\n '.concat(d,'\n <div style="font-size: 12px; font-weight: 500; color: var(--mantine-color-text); margin-bottom: 4px;">\n ').concat(el("backtest.results.tradeTable.tradeRecords")," (").concat(h.length).concat(el("backtest.results.tradeTable.trades"),")\n ").concat(h.length>5?'<span style="font-size: 10px; color: var(--mantine-color-dimmed); margin-left: 8px;">'.concat(el("backtest.results.tradeTable.scrollHint"),"</span>"):"",'\n </div>\n <div style="display: flex; gap: 12px; font-size: 11px;">\n <span style="display: flex; align-items: center; gap: 4px;">\n <span style="background: #10b981; width: 8px; height: 8px; border-radius: 2px; display: inline-block;"></span>\n <span style="color: var(--mantine-color-text);">').concat(el("backtest.results.tradeTable.buyCount"),": ").concat(f).concat(el("backtest.results.tradeTable.trades"),'</span>\n </span>\n <span style="display: flex; align-items: center; gap: 4px;">\n <span style="background: #f97316; width: 8px; height: 8px; border-radius: 2px; display: inline-block;"></span>
1\n <span style="color: var(--mantine-color-text);">').concat(el("backtest.results.tradeTable.sellCount"),": ").concat(m).concat(el("backtest.results.tradeTable.trades"),'</span>\n </span>\n </div>\n </div>\n <div id="enhanced-chart-tooltip-scroll" style="max-height: 220px; overflow-y: auto; overflow-x: hidden;" tabindex="0">\n ').concat(h.map(function(e,t){return'\n <div style="padding: 5px 0; '.concat(t>0?"border-top: 1px solid rgba(0, 0, 0, 0.04);":"",'">\n <div style="display: flex; align-items: center; gap: 6px;">\n <span style="color: var(--mantine-color-gray-5); font-size: 10px; width: 18px;">').concat(t+1,'.</span>\n <span style="background: ').concat("BUY"===e.action.toUpperCase()?"#10b981":"#f97316",'; color: white; padding: 0px 3px; border-radius: 2px; font-size: 8px; font-weight: 600; min-width: 24px; text-align: center; height: 14px; line-height: 14px;">\n ').concat(e.action.toUpperCase(),'\n </span>\n <span style="font-size: 11px; color: var(--mantine-color-text); flex: 1;">\n ').concat(el("backtest.results.tradeTable.price"),": ").concat(e.price.toFixed(2)," | ").concat(el("backtest.results.tradeTable.quantity"),": ").concat(void 0!==e.quantity?e.quantity:"-",'\n </span>\n </div>\n <div style="font-size: 9px; color: var(--mantine-color-gray-5); margin-left: calc(18px + 6px + 24px + 6px); margin-top: 2px;">\n ').concat((0,I.Zm)(1e3*e.time,ec),"\n </div>\n </div>\n ")}).join(""),"\n </div>\n </div>\n ")}return n?'\n <div style="background: var(--mantine-color-default); border: 1px solid rgba(0, 0, 0, 0.08); border-radius: 6px; padding: 10px; box-shadow: 0 2px 12px rgba(0,0,0,0.08);">\n <div style="font-size: 12px; font-weight: 500; color: var(--mantine-color-text); margin-bottom: 6px;">\n '.concat(el("backtest.results.tradeTable.priceInfo"),"\n </div>\n ").concat(d,"\n </div>\n "):""}},legend:{enabled:!1},header:(0,r.jsx)(c.x,{px:ei.spacing.md,py:ei.spacing.sm,style:{backgroundColor:"var(--mantine-color-body)"},children:(0,r.jsxs)(b.Z,{justify:"space-between",align:"center",wrap:"nowrap",children:[(null==er||null==(v=er.baseConfig)?void 0:v.timeRange)?(0,r.jsxs)(b.Z,{gap:4,wrap:"nowrap",children:[(0,r.jsx)(a.Z,{size:14,style:{color:ei.colors.gray[6]}}),(0,r.jsx)(p.x,{size:"xs",c:"dimmed",fw:500,children:(0,I.Zm)(er.baseConfig.timeRange.start,ec)}),"-",(0,r.jsx)(p.x,{size:"xs",c:"dimmed",fw:500,children:(0,I.Zm)(er.baseConfig.timeRange.end,ec)})]}):(0,r.jsx)("div",{}),(0,r.jsx)(b.Z,{gap:"xs",wrap:"nowrap",children:(0,r.jsx)(x.P,{size:"xs",value:ea,onChange:function(e){return e&&B(e)},data:g.gh.map(function(e){return{value:e.value,label:e.label}}),comboboxProps:g.Uv,styles:{input:{width:100,backgroundColor:"var(--mantine-color-body)",borderColor:"var(--mantine-color-default-border)",fontSize:ei.fontSizes.xs,fontWeight:500,"&:hover":{borderColor:ei.colors.primary[5],backgroundColor:"var(--mantine-color-default)"},"&:focus, &:focus-within":{borderColor:ei.colors.primary[6],backgroundColor:"var(--mantine-color-default)"}},dropdown:{backgroundColor:"var(--mantine-color-default)",borderColor:"var(--mantine-color-default-border)",boxShadow:ei.shadows.sm}},rightSection:(0,r.jsx)(o.Z,{size:14,style:{color:ei.colors.gray[6]}}),renderOption:E.Oj})})]})})}):(0,r.jsx)(P.ub,{description:el("backtest.results.noData"),minHeight:240,height:"auto"})]}),(0,r.jsx)(c.x,{h:ed?8:16,style:{flexShrink:0}}),(0,r.jsx)(h.s,{size:"xs",value:L,onChange:G,data:[{value:"orders",label:el("backtest.results.tradeTable.tradeRecords")},{value:"positions",label:el("trading.currentPositionTable.title")}],mb:"xs"}),"positions"===L?(0,r.jsx)(V,{backtestId:null!=(w=null==W?void 0:W.backtestId)?w:""},null==W?void 0:W.backtestId):eT?(0,r.jsx)(Q.E,{onRetry:function(){ez()}}):(0,r.jsx)(f.x.Autosize,{mah:600,scrollbarSize:4,children:(0,r.jsx)(H,{records:eZ,highlightedRecordId:F,onRecordClick:eK,pageSize:20,currentPage:R,totalItems:eq,onPageChange:eH,loading:ew,baseAsset:eb||"",quoteAsset:ef||""})})]})}):ed?(0,r.jsx)(ee.U,{description:el("strategyConfig.backtest.report.noDataBeforeBacktest"),onAction:eo,loading:et,height:500,minHeight:500}):(0,r.jsx)(c.x,{h:"500px",mr:ed?0:"sm",mt:"24px",style:{borderBox:"content-box"},children:(0,r.jsx)(P.ub,{description:el("strategyConfig.backtest.report.noDataBeforeBacktest")})})}},64586:function(e,t,n){e.exports={}}}]); 2//# sourceMappingURL=2799.13b3e3f3.chunk.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.