PageSourceSearch

https://tradesearcher.ai/_next/static/chunks/3426-81d4d64d71e193d6.js

js tradesearcher.ai collected 2026-10-05 13:07:17 UTC 46,540 bytes, 1 lines download raw bytes

1!function(){try{var t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},e=(new t.Error).stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="359ea971-2d51-49ee-adb4-973596945293",t._sentryDebugIdIdentifier="sentry-dbid-359ea971-2d51-49ee-adb4-973596945293")}catch(t){}}();"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3426],{18838:function(t,e,i){i.d(e,{C6:function(){return u},Ez:function(){return a},YZ:function(){return o},fw:function(){return n},jh:function(){return r},nr:function(){return l}});let o={crypto:1e4,stock:1e4,forex:1e4,futures:1e6},r=10,n=20,a=[5,15,60,120,240,"D"],l=["crypto","stock","forex"],u={riskRewardRatio:{min:1,max:2},percentProfitable:{min:.3,max:.7},avgWinTradePercent:{min:1,max:7},maxDrawDownPercent:{min:100,max:15}}},93426:function(t,e,i){i.d(e,{Ac:function(){return s},h1:function(){return addPeriodsToDate},bN:function(){return convertStrapiTimeframeToTradingViewTimeframe},Hm:function(){return d},q_:function(){return l},BU:function(){return formatAvgTradeDurationFull},Vy:function(){return formatRawStrategyReport},hl:function(){return formatStrategiesReportsFromStrapi},iM:function(){return formatStrategyReportFromStrapi},sD:function(){return formatStrategyType},su:function(){return getColumnsVisibilityModel},WW:function(){return getIndicatorsContentFromIndicatorsUsed},sO:function(){return getStrategyAndReportLinkFromFormattedStrategyReport},ZI:function(){return getStrategyAndReportLinkFromStrategyReport},lH:function(){return getStrategyLinkFromStrategyAttributes},rl:function(){return getStrategyLinkFromStrategyReport},ip:function(){return hideStrategiesInformations},hA:function(){return mergeVisibilityModels},oG:function(){return normalizeNameToUrl},Wl:function(){return rankStrategyTypesBySharpeRatio},E2:function(){return u}});var o=i(86456),r=i(18838),n=i(12870);let a={RSI:{description:"Relative Strength Index measures the speed and change of price movements to identify overbought or oversold conditions.",type:"momentum"},MACD:{description:"Moving Average Convergence Divergence tracks the relationship between two moving averages of a security's price.",type:"trend"},"Bollinger Bands":{description:"Bollinger Bands consist of a center SMA along with an upper and lower band to identify volatility and potential price breakouts.",type:"volatility"},Stochastic:{description:"Stochastic oscillator compares a particular closing price of a security to a range of its prices over a certain period.",type:"momentum"},Volume:{description:"Volume indicates the number of shares traded in a particular security during a given period.",type:"volume"},Stoch:{description:"Stochastic oscillator compares a particular closing price of a security to a range of its prices over a certain period.",type:"momentum"},VWAP:{description:"Volume Weighted Average Price gives an average price a security has traded at throughout the day, based on volume and price.",type:"volume"},EMA:{description:"Exponential Moving Average gives more weight to recent prices, potentially highlighting price trends quicker than a simple moving average.",type:"trend"},"Ichimoku Cloud":{description:"Ichimoku Cloud is a collection of technical indicators that show support and resistance levels, as well as momentum and trend direction.",type:"trend"},"Fibonacci Retracement":{description:"Fibonacci Retracement identifies key levels of support and resistance using horizontal lines to indicate where price corrections may reverse.",type:"other"},Fibonacci:{description:"Fibonacci Retracement identifies key levels of support and resistance using horizontal lines to indicate where price corrections may reverse.",type:"other"},"Pivot Point":{description:"Pivot Point is a technical analysis indicator used to determine the overall trend of the market over different time frames.",type:"trend"},ATR:{description:"Average True Range indicates market volatility by decomposing the entire range of an asset price for that period.",type:"volatility"}
1,CCI:{description:"Commodity Channel Index identifies new trends or cyclical conditions by comparing current price to an average price over a specified period.",type:"momentum"},ADX:{description:"Average Directional Index measures the strength of a trend and can be used to determine if a trend is strong or weak.",type:"trend"},"Keltner Channels":{description:"Keltner Channels are volatility-based envelopes set above and below an exponential moving average, similar to Bollinger Bands.",type:"volatility"},OBV:{description:"On-Balance Volume uses volume flow to predict changes in stock price.",type:"volume"},"Parabolic SAR":{description:"Parabolic Stop and Reverse determines potential reversals in the market price direction of a traded asset.",type:"trend"},"Momentum Indicator":{description:"The Momentum Indicator measures the rate of rise or fall in security prices to identify the strength or weakness of a trend.",type:"momentum"},MI:{description:"The Momentum Indicator measures the rate of rise or fall in security prices to identify the strength or weakness of a trend.",type:"momentum"},"Volume Oscillator":{description:"Volume Oscillator measures the difference between two volume-based moving averages, highlighting trends in trade volume.",type:"volume"},"Moving Average":{description:"A Moving Average is a widely used indicator in technical analysis that helps smooth out price action by filtering out the noise from random price fluctuations.",type:"trend"},MA:{description:"A Moving Average is a widely used indicator in technical analysis that helps smooth out price action by filtering out the noise from random price fluctuations.",type:"trend"},"Stochastic RSI":{description:"Stochastic RSI applies the Stochastic Oscillator formula to a Relative Strength Index (RSI) value, combining two popular indicators.",type:"momentum"},"Stoch RSI":{description:"Stochastic RSI applies the Stochastic Oscillator formula to a Relative Strength Index (RSI) value, combining two popular indicators.",type:"momentum"},"Williams %R":{description:"Williams %R, a momentum indicator that measures overbought or oversold levels, compares a stock's closing price to the high-low range over a certain period.",type:"momentum"},"Accumulation/Distribution Line":{description:"The Accumulation/Distribution Line is a volume-based indicator designed to measure the cumulative flow of money into and out of a security.",type:"volume"},"Chaikin Money Flow":{description:"Chaikin Money Flow combines price and volume to measure the buying and selling pressure for a given period.",type:"volume"},CMF:{description:"Chaikin Money Flow combines price and volume to measure the buying and selling pressure for a given period.",type:"volume"},"Donchian Channel":{description:"Donchian Channel is a breakout indicator that allows traders to compare the current price with the highest high and lowest low over a determined period.",type:"volatility"},DMI:{description:"Directional Movement Indicator is a technical analysis tool that uses +DI and -DI to determine the direction of the market.",type:"trend"},HMA:{description:"Hull Moving Average is designed to reduce lag from traditional moving averages, providing quicker signals for entries and exits.",type:"trend"},VWMA:{description:"Volume Weighted Moving Average gives more weight to days with higher volume, emphasizing price points where more volume has traded.",type:"trend"},SMA:{description:"Simple Moving Average calculates the average of a selected range of prices, usually closing prices, by the number of periods in that range.",type:"trend"},WMA:{description:"Weighted Moving Average assigns more weight to recent prices and less to past prices, providing a more sensitive average that reacts quicker to price changes.",type:"trend"},"Demark Indicator":{description:"The Demark Indicator forecasts potential price exhaustion points by comparing the most recent maximum and minimum prices to the previous period's equivalent price.",type:"other"},"ATR Trailing Stops":{description:"ATR Trailing Stops use average true range to calculate volatility-based trailing stop loss or profit point to adjust for market conditions.",type:"volatility"},"Trend Magic":{description:"Trend Magic indicator combines CCI and ATR indicators to visualize the trend direction and volatility in a price chart.",type:"trend"},"Super Trend":{description:"Super Trend is a trend indicator that identifies the direction of the current price trend and provides potential support and resistance levels.",type:"trend"},CMO:{description:"Chande Momentum Oscillator is a technical momentum indicator that measures the speed at which price changes.",type:"momentum"},TSI:{description:"True Strength Index is a momentum oscillator that measures both the speed and direction of price movements.",type:"momentum"}
1,DFMA:{description:"Double Exponential Moving Average is a technical indicator that applies two exponential moving averages to a price chart.",type:"trend"},DPO:{description:"Detrended Price Oscillator is a technical indicator that measures the difference between a past price and a moving average.",type:"trend"},"Jurik Volatility Bands":{description:"Jurik Volatility Bands are a technical indicator that measures the volatility of a security's price.",type:"volatility"},FRAMA:{description:"Fractal Adaptive Moving Average is a technical indicator that uses fractal geometry and nonlinear calculations to eliminate noise and lag.",type:"trend"},COG:{description:"Center of Gravity is a technical indicator that identifies potential turning points in a current trend.",type:"momentum"},SAR:{description:"Parabolic Stop and Reverse determines potential reversals in the market price direction of a traded asset.",type:"trend"},Donchian:{description:"Donchian Channel is a breakout indicator that allows traders to compare the current price with the highest high and lowest low over a determined period.",type:"volatility"},"Keltner Channel":{description:"Keltner Channels are volatility-based envelopes set above and below an exponential moving average, similar to Bollinger Bands.",type:"volatility"},"RSI Divergence":{description:"RSI Divergence is a technical indicator that compares the price movement of an asset with the RSI indicator.",type:"momentum"},"Kaufman's Adaptive Moving Average":{description:"Kaufman's Adaptive Moving Average is a technical indicator that adjusts the SMA to recent price action.",type:"trend"},"Squeeze Momentum":{description:"Squeeze Momentum is a technical indicator that identifies periods of consolidation and potential breakouts.",type:"momentum"},"Trend Confidence":{description:"Trend Confidence is a technical indicator that measures the strength of a trend.",type:"trend"},Fractal:{description:"Fractal is a technical indicator that identifies potential reversal points in a price chart.",type:"momentum"},"Pivot High":{description:"Pivot High is a technical indicator that identifies a chart's local high and low points.",type:"momentum"},"Pivot Low":{description:"Pivot Low is a technical indicator that identifies a chart's local high and low points.",type:"momentum"},"Step Line":{description:"Step Line is a technical indicator that shows the price changes as a series of steps.",type:"trend"},"Volume Profile":{description:"Volume Profile is a technical indicator that shows the volume traded at a particular price level.",type:"volume"},"Volume Profile Visible Range":{description:"Volume Profile Visible Range is a technical indicator that shows the volume traded at a particular price level.",type:"volume"},VPOC:{description:"Volume Profile Visible Range is a technical indicator that shows the volume traded at a particular price level.",type:"volume"},POC:{description:"Point Of Control is a technical indicator that shows the price level with the highest traded volume.",type:"volume"}};function formatNumberWithFixed(t,e){if(null==t)return"";let i=Number(t);return isNaN(i)?"":i.toFixed(e)}i(28552);let l=["symbol","apiSymbol","strategy","timeframe","compute_robustnessScore","previewGraph","netProfit","netProfitPercent","netProfitPercent1m","last60DaysNetProfitPercent","netProfitPercent3m","netProfitPercent6m","netProfitPercent1y","netProfitPercent2y","profitFactor","profitFactor1m","last60DaysProfitFactor","profitFactor3m","profitFactor6m","profitFactor1y","profitFactor2y","buyHoldReturnPercent","percentProfitable","avgWinTradePercent","maxStrategyDrawDownPercent","sharpeRatio","sortinoRatio","totalTrades","periodFormatted","totalTrades1m","last60DaysTotalTrades","totalTrades3m","totalTrades6m","totalTrades1y","totalTrades2y","tStatistic","pValue","statisticalRelevancyScore","excessReturnPercent","annualizedRateOfReturn","avgBarsInTrade","avgPyramidingLong","avgTradeDurationFormatted","createdAtFormatted","strategyType","alpha","openSource","actions","actionsSymbols","actionsFav"],u=["symbol","apiSymbol","strategy","actions","actionsSymbol
1s","actionsFav","createdAtFormatted"];function formatStrategyReportFromStrapi(t,e){var i,a,l,u,d,s,c,v,m,p,f,y,g,b,h,S,P,T,F,w,D,k,M,R,A,C,x,N,I,L,_,V,O,W,B,H,z,E,U,j,q,J,G,K,Y,Z,X,Q,$,tt,te,ti,to,tr,tn,ta,tl,tu,td,ts,tc,tv,tm,tp,tf,ty,tg,tb,th,tS,tP,tT,tF,tw,tD,tk,tM,tR,tA,tC,tx,tN,tI,tL,t_,tV,tO,tW,tB,tH,tz,tE,tU,tj,tq,tJ,tG,tK,tY,tZ,tX,tQ,t$,t0,t1,t6,t2,t3,t5,t4,t8,t9,t7,et,ee,ei,eo,er,en,ea,el,eu,ed,es,ec,ev,em,ep,ef,ey,eg,eb,eh,eS,eP,eT,eF,ew,eD,ek,eM,eR,eA,eC,ex,eN,eI,eL,e_,eV,eO,eW,eB,eH,ez,eE,eU,ej,eq,eJ,eG,eK,eY,eZ,eX,eQ,e$,e0,e1,e6,e2;if(!t||!t.attributes)return;let e3=null!==(t1=null==t?void 0:null===(u=t.attributes)||void 0===u?void 0:null===(l=u.symbol)||void 0===l?void 0:null===(a=l.data)||void 0===a?void 0:null===(i=a.attributes)||void 0===i?void 0:i.name)&&void 0!==t1?t1:"";""!==e3&&(e3=(0,o.hg)(null==t?void 0:null===(s=t.attributes)||void 0===s?void 0:null===(d=s.symbol)||void 0===d?void 0:d.data));let e5=null!==(t6=null===(c=t.attributes)||void 0===c?void 0:c.index)&&void 0!==t6?t6:void 0,e4=formatNumberWithFixed(null==t?void 0:null===(v=t.attributes)||void 0===v?void 0:v.sharpeRatio,3),e8=formatNumberWithFixed(null==t?void 0:null===(m=t.attributes)||void 0===m?void 0:m.sortinoRatio,3),e9=null!==(t2=null==t?void 0:null===(p=t.attributes)||void 0===p?void 0:p.netProfitPercent)&&void 0!==t2?t2:0,e7=null!==(t3=null==t?void 0:null===(f=t.attributes)||void 0===f?void 0:f.profitFactor)&&void 0!==t3?t3:0,it=null!==(t5=null==t?void 0:null===(y=t.attributes)||void 0===y?void 0:y.profitFactor1m)&&void 0!==t5?t5:0,ie=null!==(t4=null==t?void 0:null===(g=t.attributes)||void 0===g?void 0:g.profitFactor3m)&&void 0!==t4?t4:0,ii=null!==(t8=null==t?void 0:null===(b=t.attributes)||void 0===b?void 0:b.profitFactor6m)&&void 0!==t8?t8:0,io=null!==(t9=null==t?void 0:null===(h=t.attributes)||void 0===h?void 0:h.profitFactor1y)&&void 0!==t9?t9:0,ir=null!==(t7=null==t?void 0:null===(S=t.attributes)||void 0===S?void 0:S.profitFactor2y)&&void 0!==t7?t7:0,ia=(0,o.Lc)(null!==(et=null==t?void 0:null===(P=t.attributes)||void 0===P?void 0:P.timeframe)&&void 0!==et?et:""),il="https://www.tradingview.com"+(null!==(ee=null==t?void 0:null===(D=t.attributes)||void 0===D?void 0:null===(w=D.strategy)||void 0===w?void 0:null===(F=w.data)||void 0===F?void 0:null===(T=F.attributes)||void 0===T?void 0:T.published_chart_url)&&void 0!==ee?ee:""),iu=(0,o.Ii)(t,e),id=null==t?void 0:null===(A=t.attributes)||void 0===A?void 0:null===(R=A.strategy)||void 0===R?void 0:null===(M=R.data)||void 0===M?void 0:null===(k=M.attributes)||void 0===k?void 0:k.name,is=null!==(ei=null==t?void 0:null===(C=t.attributes)||void 0===C?void 0:C.totalTrades)&&void 0!==ei?ei:0,ic=null!==(eo=null==t?void 0:null===(x=t.attributes)||void 0===x?void 0:x.totalTrades1m)&&void 0!==eo?eo:0,iv=null!==(er=null==t?void 0:null===(N=t.attributes)||void 0===N?void 0:N.totalTrades3m)&&void 0!==er?er:0,im=null!==(en=null==t?void 0:null===(I=t.attributes)||void 0===I?void 0:I.totalTrades6m)&&void 0!==en?en:0,ip=null!==(ea=null==t?void 0:null===(L=t.attributes)||void 0===L?void 0:L.totalTrades1y)&&void 0!==ea?ea:0,iy=null!==(el=null==t?void 0:null===(_=t.attributes)||void 0===_?void 0:_.totalTrades2y)&&void 0!==el?el:0,ig=null!==(eu=null==t?void 0:null===(V=t.attributes)||void 0===V?void 0:V.buyHoldReturnPercent)&&void 0!==eu?eu:0,ib=null!==(ed=null==t?void 0:null===(O=t.attributes)||void 0===O?void 0:O.maxStrategyDrawDownPercent)&&void 0!==ed?ed:0,ih=null!==(es=null==t?void 0:null===(W=t.attributes)||void 0===W?void 0:W.avgTradePercent)&&void 0!==es?es:0,iS=null!==(ec=null==t?void 0:null===(B=t.attributes)||void 0===B?void 0:B.avgWinTradePercent)&&void 0!==ec?ec:0,iP=null!==(ev=null==t?void 0:null===(H=t.attributes)||void 0===H?void 0:H.avgLosTradePercent)&&void 0!==ev?ev:0,iT=null!==(em=null==t?void 0:null===(z=t.attributes)||void 0===z?void 0:z.largestWinTradePercent)&&void 0!==em?em:0,iF=null!==(ep=null==t?void 0:null===(E=t.attributes)||void 0===E?void 0:E.largestLosTradePercent)&&void 0!==ep?ep:0,iw=null!==(ef=null==t?void 0:null===(U=t.attributes)||void 0===U?void 0:U.percentProfitable)&&void 0!==ef?ef:0,iD=null!==(ey=null==t?void 0:null===(j=t.attributes)||void 0===j?void 0:j.numberOfWiningTrades)&&void 0!==ey?ey:0,ik=null!==(eg=null==t?void 0:null===(q=t.attributes)||void 0===q?void 0:q.numberOfLosingTrades)&&void 0!==eg?eg:0,iM=null!==(eb=null==t?void 0:null===(J=t.attributes)||void 0===J?void 0:J.commissionPaid)&&void 0!==eb?eb:0,iR=null!==(eh=null==t?void 0:null===(G=t.attributes)||void 0===G?void 0:G.openPL)&&void 0!==eh?eh:0,iA=null!==(eS=null==t?void 0:null===(K=t.attributes)||void 0===K?void 0:K.openPLPercent)&&void 0!==eS?eS:0,iC=null!==(eP=null==t?void 0:null===(Y=t.attributes)||void 0===Y?void 0:Y.fromDate)&&void 0!==eP?eP:"",ix=null!==(eT=null==t?void 0:null===(Z=t.attributes)||void 0===Z?void 0:Z.toDate)&&void 0!==eT?eT:"",iN=(0,o.fK)(null!==(eF=null==t?void 0:null===(tt=t.attributes)||void 0===tt?void 0:null===($=tt.symbol)||void 0===$?void 0:null===(Q=$.data)||void 0===Q?void 0:null===(X=Q.attributes)||void 0===X?void 0:X.type)&&void 0!==eF?eF:""),iI=r.YZ[iN],iL=new Date(iC),i_=new Date(ix),iV=null!==(ew=null==t?void 0:null===(tr=t.attributes)||void 0===tr?void 0:null===(to=tr.symbol)||void 0===to?void 0:null===(ti=to.data)||void 0===ti?void 0:null===(te=ti.attributes)||void 0===te?void 0:te.symbol)&&void 0!==ew?ew:null==t?void 0:null===(td=t.attributes)||void 0===td?void 0:null===(tu=td.symbol)||void 0===tu?void 0:null===(tl=tu.data)||void 0===tl?void 0:null===(ta=tl.attributes)||void 0===ta?void 0:null===(tn=ta.name)||void 0===tn?void 0:tn.split(":",2)[1],iO=iL.toLocaleDateString("en-US"),iW=i_.toLocaleDateString("en-US"),iB=(0,n.iw)(iL,i_);if(""===id||""===id||null===id)return;let iH=null!==(eD=null==t?void 0:null===(ts=t.attributes)||void 0===ts?void 0:ts.hidden)&&void 0!==eD&&eD,iz=null!==(ek=null==t?void 0:null===(tc=t.attributes)||void 0===tc?void 0:tc.last60DaysNetProfitPercent)&&void 0!==ek?ek:0,iE=null!==(eM=null==t?void 0:null===(tv=t.attributes)||void 0===tv?void 0:tv.last60DaysProfitFactor)&&void 0!==eM?eM:0,iU=null!==(eR=null==t?void 0:null===(tm=t.attributes)||void 0===tm?void 0:tm.last60DaysTotalTrades)&&void 0!==eR?eR:0,ij=null!==(eA=null==t?void 0:null===(tp=t.attributes)||void 0===tp?void 0:tp.netProfitPercent1m)&&void 0!==eA?eA:0,iq=null!==(eC=null==t?void 0:null===(tf=t.attributes)||void 0===tf?void 0:tf.netProfitPercent3m)&&void 0!==eC?eC:0,iJ=null!==(ex=null==t?void 0:null===(ty=t.attributes)||void 0===ty?void 0:ty.netProfitPercent6m)&&void 0!==ex?ex:0,iG=null!==(eN=null==t?void 0:null===(tg=t.attributes)||void 0===tg?void 0:tg.netProfitPercent1y)&&void 0!==eN?eN:0,iK=null!==(eI=null==t?void 0:null===(tb=t.attributes)||void 0===tb?void 0:tb.netProfitPercent2y)&&void 0!==eI?eI:0,iY=null!==(eL=null==t?void 0:null===(th=t.attributes)||void 0===th?void 0:th.tStatistic)&&void 0!==eL?eL:0,iZ=null!==(e_=null==t?void 0:null===(tS=t.attributes)||void 0===tS?void 0:tS.pValue)&&void 0!==e_?e_:0,iX=null!==(eV=null==t?void 0:null===(tP=t.attributes)||void 0===tP?void 0:tP.statisticalRelevancyScore)&&void 0!==eV?eV:0,iQ=null!==(eO=null==t?void 0:null===(tT=t.attributes)||void 0===tT?void 0:tT.excessReturnPercent)&&void 0!==eO?eO:0,i$=null!==(eW=null==t?void 0:null===(tF=t.attributes)||void 0===tF?void 0:tF.annualizedRateOfReturn)&&void 0!==eW?eW:0,i0=null!==(eB=null==t?void 0:null===(tw=t.attributes)||void 0===tw?void 0:tw.avgBarsInTrade)&&void 0!==eB?eB:0,i1=null!==(eH=null==t?void 0:null===(tD=t.attributes)||void 0===tD?void 0:tD.avgTradeDurationMs)&&void 0!==eH?eH:0,i6=i1?function(t){let e=Number(t);return Number.isFinite(e)?e<1e3?e.toFixed(0)+" ms":e<6e4?(e/1e3).toFixed(0)+" s":e<36e5?(e/6e4).toFixed(0)+" min":e<864e5?(e/36e5).toFixed(0)+" h":(e/864e5).toFixed(0)+" d":""}(i1):"",i2="N/A";(null===(tk=t.attributes)||void 0===tk?void 0:tk.createdAt)&&(i2=(0,n.BJ)(null===(ez=t.attributes)||void 0===ez?void 0:ez.createdAt));let i3=null!==(eE=null==t?void 0:null===(tM=t.attributes)||void 0===tM?void 0:tM.strategyType)&&void 0!==eE?eE:"",i5=null!==(eU=null==t?void 0:null===(tR=t.attributes)||void 0===tR?void 0:tR.standardDeviationOfReturns)&&void 0!==eU?eU:0,i4=null!==(ej=null==t?void 0:null===(tA=t.attributes)||void 0===tA?void 0:tA.alpha)&&void 0!==ej?ej:0,i8=(null==t?void 0:null===(tI=t.attributes)||void 0===tI?void 0:null===(tN=tI.strategy)||void 0===tN?void 0:null===(tx=tN.data)||void 0===tx?void 0:null===(tC=tx.attributes)||void 0===tC?void 0:tC.access)==="open_source",i9=null!==(eq=null==t?void 0:null===(tL=t.attributes)||void 0===tL?void 0:tL.avgPyramidingLong)&&void 0!==eq?eq:0,i7=null!==(eJ=null==t?void 0:null===(t_=t.attributes)||void 0===t_?void 0:t_.compute_robustnessScore)&&void 0!==eJ?eJ:void 0,ot=null!==(eG=null==t?void 0:null===(tV=t.attributes)||void 0===tV?void 0:tV.compute_qualityGatePass)&&void 0!==eG?eG:void 0,oe=null!==(eK=null==t?void 0:null===(tO=t.attributes)||void 0===tO?void 0:tO.compute_qualityGateReasonCodes)&&void 0!==eK?eK:void 0,oi=null!==(eY=null==t?void 0:null===(tW=t.attributes)||void 0===tW?void 0:tW.compute_scoreEvidence)&&void 0!==eY?eY:void 0,oo=null!==(eZ=null==t?void 0:null===(tB=t.attributes)||void 0===tB?void 0:tB.compute_scoreConsistency)&&void 0!==eZ?eZ:void 0,or=null!==(eX=null==t?void 0:null===(tH=t.attributes)||void 0===tH?void 0:tH.compute_scoreEdge)&&void 0!==eX?eX:void 0,on=null!==(eQ=null==t?void 0:null===(tz=t.attributes)||void 0===tz?void 0:tz.compute_scorePracticality)&&void 0!==eQ?eQ:void 0,oa=null!==(e$=null==t?void 0:null===(tE=t.attributes)||void 0===tE?void 0:tE.compute_rankingVersion)&&void 0!==e$?e$:void 0;return{index:e5,id:null!==(e0=t.id)&&void 0!==e0?e0:0,idStrategy:null!==(e1=null==t?void 0:null===(tq=t.attributes)||void 0===tq?void 0:null===(tj=tq.strategy)||void 0===tj?void 0:null===(tU=tj.data)||void 0===tU?void 0:tU.id)&&void 0!==e1?e1:0,tvIdStrategy:null==t?void 0:null===(tY=t.attributes)||void 0===tY?void 0:null===(tK=tY.strategy)||void 0===tK?void 0:null===(tG=tK.data)||void 0===tG?void 0:null===(tJ=tG.attributes)||void 0===tJ?void 0:tJ.tv_id,strategy:id,profitFactor:e7,profitFactor1m:it,profitFactor3m:ie,profitFactor6m:ii,profitFactor1y:io,profitFactor2y:ir,netProfitPercent:e9,netProfitPercent1m:ij,netProfitPercent3m:iq,netProfitPercent6m:iJ,netProfitPercent1y:iG,netProfitPercent2y:iK,buyHoldReturnPercent:ig,totalTrades:is,totalTrades1m:ic,totalTrades3m:iv,totalTrades6m:im,totalTrades1y:ip,totalTrades2y:iy,maxStrategyDrawDownPercent:ib,avgBarsInTrade:i0,avgTradePercent:ih,avgWinTradePercent:iS,avgLossTradePercent:iP,largestWinTradePercent:iT,largestLossTradePercent:iF,percentProfitable:iw,numberOfWiningTrades:iD,numberOfLosingTrades:ik,openPL:iR,openPLPercent:iA,commissionPaid:iM,commissionPaidPercent:iM/(iI+iI*e9),initialCapital:iI,endCapital:iI+iI*e9,timeframe:ia,sharpeRatio:e4,sortinoRatio:e8,tickerName:null!==(e6=null==t?void 0:null===(t$=t.attributes)||void 0===t$?void 0:null===(tQ=t$.symbol)||void 0===tQ?void 0:null===(tX=tQ.data)||void 0===tX?void 0:null===(tZ=tX.attributes)||void 0===tZ?void 0:tZ.name)&&void 0!==e6?e6:"",symbol
1:e3,apiSymbol:iV,fromDate:iO,toDate:iW,periodFormatted:iB+" ("+iO+" - "+iW+")",tv_url:il,url:iu,hidden:iH,last60DaysNetProfitPercent:iz,last60DaysProfitFactor:iE,last60DaysTotalTrades:iU,tStatistic:iY,pValue:iZ,statisticalRelevancyScore:iX,excessReturnPercent:iQ,annualizedRateOfReturn:i$,avgTradeDurationMs:i1,avgTradeDurationFormatted:i6,avgPyramidingLong:i9,strategyType:i3,standardDeviationOfReturns:i5,createdAt:null!==(e2=null==t?void 0:null===(t0=t.attributes)||void 0===t0?void 0:t0.createdAt)&&void 0!==e2?e2:"",createdAtFormatted:i2,object:t,previewGraph:e7,alpha:i4,openSource:i8,compute_robustnessScore:i7,compute_qualityGatePass:ot,compute_qualityGateReasonCodes:oe,compute_scoreEvidence:oi,compute_scoreConsistency:oo,compute_scoreEdge:or,compute_scorePracticality:on,compute_rankingVersion:oa}}function formatAvgTradeDurationFull(t){let e=Number(t);return Number.isFinite(e)?e<1e3?e.toFixed(0)+" ms":e<6e4?(e/1e3).toFixed(0)+" seconds":e<36e5?(e/6e4).toFixed(0)+" mins":e<864e5?(e/36e5).toFixed(0)+" hours":(e/864e5).toFixed(0)+" days":""}function formatStrategiesReportsFromStrapi(t,e){let i=[];if(void 0===t||0===t.length)return[];for(let l=0;l<t.length;l++){var o,r,n,a;if(void 0===t[l].attributes||(null===(a=t[l].attributes)||void 0===a?void 0:null===(n=a.strategy)||void 0===n?void 0:null===(r=n.data)||void 0===r?void 0:null===(o=r.attributes)||void 0===o?void 0:o.name)===void 0)continue;let u=formatStrategyReportFromStrapi(t[l],e);void 0!==u&&i.push(u)}return i}function getColumnsVisibilityModel(t){let e={};for(let i of l)t.includes(i)?e[i]=!0:e[i]=!1;return e}function mergeVisibilityModels(t,e){let i={...e},o=function(t){let e={};for(let i in t)u.includes(i)||(e[i]=t[i]);return e}(t);for(let e in t)void 0!==i[e]&&!0===i[e]&&(o[e]=i[e]);for(let t in i)void 0===o[t]&&(o[t]=i[t]);return o}let d={items:[{id:1,columnField:"totalTrades",operatorValue:">=",operator:"and",value:"30"},{id:1,columnField:"totalTrades6m",operatorValue:">=",operator:"and",value:"2"},{id:2,columnField:"netProfitPercent",operatorValue:">=",operator:"and",value:"10"},{id:3,columnField:"maxStrategyDrawDownPercent",operatorValue:"<=",operator:"and",value:"100"}]};function normalizeNameToUrl(t){let e=t.toLowerCase().replace(/ /g,"-");return"-"===e.charAt(e.length-1)&&(e=e.slice(0,-1)),(0,n.GD)(e)}function getStrategyAndReportLinkFromFormattedStrategyReport(t){return"/app/strategies/".concat(t.idStrategy,"-").concat(normalizeNameToUrl(t.strategy),"?report=").concat(t.id,"&reportName=").concat(normalizeNameToUrl(t.symbol))}function getStrategyLinkFromStrategyAttributes(t){let e=!(arguments.length>1)||void 0===arguments[1]||arguments[1],i=null==t?void 0:t.id,o="";if("attributes"in t){var r,n,a;i=null!==(a=null==t?void 0:t.id)&&void 0!==a?a:null==t?void 0:null===(r=t.attributes)||void 0===r?void 0:r.id,o=null==t?void 0:null===(n=t.attributes)||void 0===n?void 0:n.name}else o=null==t?void 0:t.name;return i&&o?"".concat(e?"/app":"","/strategies/").concat(i,"-").concat(normalizeNameToUrl(o)):""}function getStrategyAndReportLinkFromStrategyReport(t){var e,i,o,r,n,a,l,u,d,s,c;return"/app/strategies/".concat(null===(o=t.attributes)||void 0===o?void 0:null===(i=o.strategy)||void 0===i?void 0:null===(e=i.data)||void 0===e?void 0:e.id,"-").concat(normalizeNameToUrl(null===(l=t.attributes)||void 0===l?void 0:null===(a=l.strategy)||void 0===a?void 0:null===(n=a.data)||void 0===n?void 0:null===(r=n.attributes)||void 0===r?void 0:r.name),"?report=").concat(t.id,"&reportName=").concat(normalizeNameToUrl(null===(c=t.attributes)||void 0===c?void 0:null===(s=c.symbol)||void 0===s?void 0:null===(d=s.data)||void 0===d?void 0:null===(u=d.attributes)||void 0===u?void 0:u.name))}function getStrategyLinkFromStrategyReport(t){var e,i,o,r,n,a,l;return"/app/strategies/".concat(null===(o=t.attributes)||void 0===o?void 0:null===(i=o.strategy)||void 0===i?void 0:null===(e=i.data)||void 0===e?void 0:e.id,"-").concat(normalizeNameToUrl(null===(l=t.attributes)||void 0===l?void 0:null===(a=l.strategy)||void 0===a?void 0:null===(n=a.data)||void 0===n?void 0:null===(r=n.attributes)||void 0===r?void 0:r.name))}function convertStrapiTimeframeToTradingViewTimeframe(t){for(let[e,i]of Object.entries({Daily:"1D",D:"1D",Weekly:"1W",Monthly:"1M"}))if(t===e)return i;return t}function addPeriodsToDate(t,e,i){let o=new Date;return t.getDate()===o.getDate()&&t.getMonth()===o.getMonth()&&t.getFullYear()===o.getFullYear()?t:function(t,e,
1i){let o=new Date(t);switch(i){case"1min":o.setMinutes(t.getMinutes()-e);break;case"5min":o.setMinutes(t.getMinutes()-5*e);break;case"15min":o.setMinutes(t.getMinutes()-15*e);break;case"30min":o.setMinutes(t.getMinutes()-30*e);break;case"1hour":o.setMinutes(t.getMinutes()-60*e);break;case"2hour":o.setMinutes(t.getMinutes()-120*e);break;case"4hour":o.setMinutes(t.getMinutes()-240*e);break;case"1day":o.setDate(t.getDate()-e);break;case"1week":o.setDate(t.getDate()-7*e);break;case"1month":o.setMonth(t.getMonth()-e);break;default:throw Error("Invalid interval to offset date")}return o}(t,-e,i)}let s={oscillator:"#FB7626",trend:"#CA1548",volatility:"#23c6a7",volume:"#0000FF",momentum:"#5426fb",other:"#808080"};function getIndicatorsContentFromIndicatorsUsed(t){let e=[],i=new Map;for(let e of t)if((null==e?void 0:e.name)&&e.hasOwnProperty("name")&&e.hasOwnProperty("value")){if(i.has(e.name)){var o;null===(o=i.get(e.name))||void 0===o||o.push(e.value)}else i.set(e.name,[e.value])}for(let[t,o]of i){let i=a[t],r=Array.from(new Set(o)),l=r.length>1?"".concat(t," (").concat(r.join(", "),")"):t;if(void 0!==i){let t=r.length>1?"Values used : ".concat(r.join(", "),"."):"";e.push({name:l,color:s[i.type],type:i.type,value:r.join(", "),description:i.description+"\n\n Type: "+(0,n.fm)(i.type)+". "+t})}else e.push({name:l,color:s.other,type:"other",value:r.join(", "),description:""})}return e}function rankStrategyTypesBySharpeRatio(t){if(void 0===t.attributes)return[];let e={};for(let i of["longTerm","intraday","swing"]){let o="compute_average_sharpeRatio_".concat(i),r=t.attributes[o];null!=r&&(e[i]=parseFloat(r))}let i=Math.min(...Object.values(e)),o=[];for(let t in e){let r=e[t],n=(r-i)/i*100;o.push({strategyType:t,sharpeRatio:r,percentageDifference:n})}return o.sort((t,e)=>e.percentageDifference-t.percentageDifference),o}function formatRawStrategyReport(t){var e,i,o,r,n,a,l,u,d,s;return null==(e=t)||!e.attributes||(null==e?void 0:null===(i=e.attributes)||void 0===i?void 0:i.defaultQuantityType)||(e.attributes.defaultQuantityType="percent_of_equity",e.attributes.defaultQuantityValue=100),(null==e?void 0:null===(a=e.attributes)||void 0===a?void 0:null===(n=a.strategy)||void 0===n?void 0:null===(r=n.data)||void 0===r?void 0:null===(o=r.attributes)||void 0===o?void 0:o.name)&&(null==e?void 0:null===(s=e.attributes)||void 0===s?void 0:null===(d=s.strategy)||void 0===d?void 0:null===(u=d.data)||void 0===u?void 0:null===(l=u.attributes)||void 0===l?void 0:l.name.includes("subscribe to Premium"))&&(e.attributes.strategy.data.attributes.name="Try Premium to view this strategy and the full strategy library."),t=e}function formatStrategyType(t){return"longTerm"===t?"Long Term":"intraday"===t?"Intraday":"swing"===t?"Swing":t}function hideStrategiesInformations(t){return t.map(t=>{var e,i,o,r;return(null==t?void 0:null===(r=t.attributes)||void 0===r?void 0:null===(o=r.strategy)||void 0===o?void 0:null===(i=o.data)||void 0===i?void 0:null===(e=i.attributes)||void 0===e?void 0:e.name)!==void 0&&(t.attributes.strategy.data.attributes.name="Hidden (Try Premium to see best strategies and strategies with a Risk/Reward Ratio > 3)"),t})}},28552:function(t,e,i){i.d(e,{BJ:function(){return a},LK:function(){return n},WY:function(){return l}});let o={compute_robustnessScore:{premiumSort:!0},last60DaysNetProfitPercent:{premium:!0},last60DaysProfitFactor:{premium:!0},netProfitPercent1m:{premium:!0},netProfitPercent3m:{premium:!0},netProfitPercent6m:{premium:!0},netProfitPercent1y:{premium:!0},netProfitPercent2y:{premium:!0},profitFactor1m:{premium:!0},profitFactor3m:{premium:!0},profitFactor6m:{premium:!0},profitFactor1y:{premium:!0},profitFactor2y:{premium:!0},netProfitPercent:{correctsBy100:!0},percentProfitable:{correctsBy100:!0},avgWinTradePercent:{correctsBy100:!0},buyHoldReturnPercent:{correctsBy100:!0},maxStrategyDrawDownPercent:{correctsBy100:!0}},r=Object.keys(o),n=r.filter(t=>{var e;return null===(e=o[t])||void 0===e?void 0:e.premium}),a=r.filter(t=>{var e;return null===(e=o[t])||void 0===e?void 0:e.premiumSort}),l=r.filter(t=>{var e;return null===(e=o[t])||void 0===e?void 0:e.correctsBy100})}
1,86456:function(t,e,i){i.d(e,{$3:function(){return getSymbolPathFromFormattedSymbol},B0:function(){return formatSymbolNameFromSymbol},Er:function(){return formatSymbolName},Ii:function(){return getSymbolPathOfStrategyReport},Lc:function(){return formatStrapiTimeframeForUserSimple},XW:function(){return getDecimalsFromPriceScale},Xe:function(){return getSymbolStaticPathFromFormattedSymbol},YI:function(){return convertTiingoTimeFrameToStrapi},_p:function(){return r},fK:function(){return formatMarketTypeFromSymbolType},fm:function(){return isPremiumTimeframe},hT:function(){return formatStrapiTimeframeToTiingo},hg:function(){return formatTickerNameFromSymbol},iW:function(){return formatStrapiTimeframeToUserFormat},lZ:function(){return formatSymbol},mm:function(){return l},om:function(){return getSymbolAppPathFromFormattedSymbol}});var o=i(12870);let r={crypto:["crypto","spot","swap","swap crypto","crypto defi","spot crypto","spot cfd crypto"],stock:["stock","dr","etf","etn","index","index cfd","fund etf","bond government yield","structured","fund mutual","fund","fund etn"],forex:["forex","cfd"],futures:["futures","cfd futures"]};function formatMarketTypeFromSymbolType(t){return r.crypto.includes(t)?"crypto":r.stock.includes(t)?"stock":r.forex.includes(t)?"forex":r.futures.includes(t)?"futures":"stock"}let n=["1min","5min","15min","30min","1hour","2hour","4hour","1day","1week","1month","3month","6month","1year"];function getSymbolStaticPathFromFormattedSymbol(t){return"crypto"===t.type||"spot"===t.type?"/symbols/market/crypto/".concat(getSymbolSlug(t)):"stock"===t.type?"/symbols/market/stock/".concat(getSymbolSlug(t)):"futures"===t.type?"/symbols/market/futures/".concat(getSymbolSlug(t)):"forex"===t.type?"/symbols/market/forex/".concat(getSymbolSlug(t)):"/symbol
1s/".concat(getSymbolSlug(t))}function getSymbolSlug(t){return"".concat(t.id,"-").concat((0,o.GD)(t.fullSymbol))}function getSymbolAppPathFromFormattedSymbol(t){return"/app"+getSymbolStaticPathFromFormattedSymbol(t)}function getSymbolPathFromFormattedSymbol(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e?getSymbolAppPathFromFormattedSymbol(t):getSymbolStaticPathFromFormattedSymbol(t)}function getSymbolPathOfStrategyReport(t){var e,i,o,r;let n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!t||!(null==t?void 0:null===(i=t.attributes)||void 0===i?void 0:null===(e=i.symbol)||void 0===e?void 0:e.data))return"";let a=formatSymbol(null==t?void 0:null===(r=t.attributes)||void 0===r?void 0:null===(o=r.symbol)||void 0===o?void 0:o.data);return n?getSymbolAppPathFromFormattedSymbol(a):getSymbolStaticPathFromFormattedSymbol(a)}function formatStrapiTimeframeToTiingo(t){let e;if(n.includes(t))return t;let i=t.toUpperCase();switch(i){case"1":e="1min";break;case"5":e="5min";break;case"15":e="15min";break;case"30":e="30min";break;case"60":case"H":case"1H":e="1hour";break;case"120":case"2H":e="2hour";break;case"240":case"4H":e="4hour";break;case"D":case"1D":e="1day";break;case"W":case"1W":e="1week";break;case"M":case"1M":e="1month";break;case"3M":e="3month";break;case"6M":e="6month";break;case"Y":e="1year"}if(void 0===e)throw Error("Invalid timeframe : "+i+" for FMP");return e}function formatStrapiTimeframeForUserSimple(t){let e=!(arguments.length>1)||void 0===arguments[1]||arguments[1];for(let[i,o]of Object.entries({1:"1 min",5:"5 min",15:"15 min",30:"30 min",60:"1 h",120:"2 h",240:"4 h",D:"Daily","1D":"Daily","1W":"Weekly","1M":"Monthly"}))if(t===i)return e?o:o.replace(" ","");return t}function convertTiingoTimeFrameToStrapi(t){let e="";switch(t){case"1min":e="1";break;case"5min":e="5";break;case"15min":e="15";break;case"30min":e="30";break;case"1hour":e="60";break;case"2hour":e="120";break;case"4hour":e="240";break;case"1day":e="1D";break;case"1week":e="1W";break;case"1month":e="1M";break;case"3month":e="3M";break;case"6month":e="6M";break;case"1year":e="Y"}return e}let a=["5","15"];function isPremiumTimeframe(t){return a.includes(t)}let l=["5","15","60","120","240","1D"];function formatStrapiTimeframeToUserFormat(t){let e;let i=t.toUpperCase();switch(i){case"1":e="1 min";break;case"5":e="5 mins";break;case"15":e="15 mins";break;case"30":e="30 mins";break;case"60":case"H":case"1H":e="1 hour";break;case"120":case"2H":e="2 hours";break;case"240":case"4H":e="4 hours";break;case"D":case"1D":e="1 day";break;case"W":case"1W":e="1 week";break;case"M":case"1M":e="1 month";break;case"3M":e="3 months";break;case"6M":e="6 months";break;case"Y":e="1 year"}if(void 0===e)throw Error("Invalid timeframe : "+i+" for user format.");return e}function formatTickerNameFromSymbol(t){var e,i,o,r,n,a;if(void 0===t||(null===(e=t.attributes)||void 0===e?void 0:e.name)===void 0)return"";null===(i=t.attributes)||void 0===i||i.name;let l=null!==(a=null===(o=t.attributes)||void 0===o?void 0:o.description)&&void 0!==a?a:"";return l=null==l?void 0:l.replace("(calculated by TradingView)",""),(null===(r=t.attributes)||void 0===r?void 0:r.name.split(":").length)>=2&&(null===(n=t.attributes)||void 0===n||n.name.split(":")[1]),l.split("/").length>=2&&(l=l.split("/")[0]),l}function formatSymbolName(t){let e=t;return(e=e.replace("(calculated by TradingView)","")).trim()}function formatSymbolOfSymbol(t){var e,i,o,r;let n=null!==(o=null==t?void 0:null===(e=t.attributes)||void 0===e?void 0:e.name)&&void 0!==o?o:"";n.includes(":")&&n.split(":")[0].length>0&&(n=n.split(":")[1]);let a=null!==(r=null==t?void 0:null===(i=t.attributes)||void 0===i?void 0:i.symbol)&&void 0!==r?r:"";return""==a&&(a=n),a}function formatSymbolNameFromSymbol(t){var e,i;let o=formatSymbolOfSymbol(t);return(null==t?void 0:null===(e=t.attributes)||void 0===e?void 0:e.description)!==void 0?formatSymbolName(null==t?void 0:null===(i=t.attributes)||void 0===i?void 0:i.description)+" ("+o+")":o}function formatSymbol(t){var e,i,r,n,a,l,u,d,s,c,v,m,p,f,y,g,b,h,S,P,T,F,w,D,k,M,R,A,C,x,N,I,L,_,V,O,W,B,H,z,E,U,j,q,J,G,K,Y,Z,X,Q,$;let tt=formatSymbolOfSymbol(t),te=formatSymbolNameFromSymbol(t),ti=(null==t?void 0:null===(e=t.attributes)||void 0===e?void 0:e.description)?formatSymbolName(null==t?void 0:null===(i=t.attributes)||void 0===i?void 0:i.description):"",to=null!==(R=null==t?void 0:null===(r=t.attributes)||void 0===r?void 0:r.symbol)&&void 0!==R?R:"";""==to&&(to=tt);let tr=to;(null==t?void 0:null===(n=t.attributes)||void 0===n?void 0:n.type)=="crypto"&&(null==t?void 0:null===(a=t.attributes)||void 0===a?void 0:a.base_currency)!==void 0&&(null==t?void 0:null===(l=t.attributes)||void 0===l?void 0:l.currency_code)!==void 0&&(tr=(null==t?void 0:null===(A=t.attributes)||void 0===A?void 0:A.base_currency)+""+(null==t?void 0:null===(C=t.attributes)||void 0===C?void 0:C.currency_code)),(null==t?void 0:null===(u=t.attributes)||void 0===u?void 0:u.type)=="forex"&&(null==t?void 0:null===(d=t.attributes)||void 0===d?void 0:d.base_currency)!==void 0&&(null==t?void 0:null===(s=t.attributes)||void 0===s?void 0:s.currency_code)!==void 0&&(tr=(null==t?void 0:null===(x=t.attributes)||void 0===x?void 0:x.base_currency)+"-"+(null==t?void 0:null===(N=t.attributes)||void 0===N?void 0:N.currency_code));let tn="";(null==t?void 0:null===(c=t.attributes)||void 0===c?void 0:c.last24hVolume)!==void 0&&(null==t?void 0:null===(v=t.attributes)||void 0===v?void 0:v.last24hVolume)!==null&&(tn=null!==(L=(0,o.T0)(null!==(I=null==t?void 0:null===(m=t.attributes)||void 0===m?void 0:m.last24hVolume)&&void 0!==I?I:0))&&void 0!==L?L:"");let ta="";(null==t?void 0:null===(p=t.attributes)||void 0===p?void 0:p.marketCap)!==void 0&&(null==t?void 0:null===(f=t.attributes)||void 0===f?void 0:f.marketCap)!==null&&(ta=null!==(V=(0,o.T0)(null!==(_=null==t?void 0:null===(y=t.attributes)||void 0===y?void 0:y.marketCap)&&void 0!==_?_:0))&&void 0!==V?V:"");let tl=null!==(O=null==t?void 0:null===(g=t.attributes)||void 0===g?void 0:g.type)&&void 0!==O?O:"";return((null==t?void 0:null===(b=t.attributes)||void 0===b?void 0:b.type)=="crypto"||(null==t?void 0:null===(h=t.attributes)||void 0===h?void 0:h.type)=="spot")&&t&&null!=t&&t.attributes&&null!=t&&null!==(G=t.attributes)&&void 0!==G&&G.name&&((null===(Y=t.attributes)||void 0===Y?void 0:null===(K=Y.name)||void 0===K?void 0:K.toLowerCase().includes("future"))||(null==t?void 0:null===(X=t.attributes)||void 0===X?void 0:null===(Z=X.name)||void 0===Z?void 0:Z.toLowerCase().includes("futures"))||(null==t?void 0:null===($=t.attributes)||void 0===$?void 0:null===(Q=$.name)||void 0===Q?void 0:Q.includes("PERP")))&&(tl="crypto futures"),{id:null!==(W=null==t?void 0:t.id)&&void 0!==W?W:0,main_list:null!==(B=null==t?void 0:null===(S=t.attributes)||void 0===S?void 0:S.main_list)&&void 0!==B?B:null,name:null!==(H=null==t?void 0:null===(P=t.attributes)||void 0===P?void 0:P.name)&&void 0!==H?H:"",formattedName:te,description:ti,type:tl,pricescale:null!==(z=null==t?void 0:null===(T=t.attributes)||void 0===T?void 0:T.pricescale)&&void 0!==z?z:100,exchange:null!==(E=null==t?void 0:null===(F=t.attributes)||void 0===F?void 0:F.exchange)&&void 0!==E?E:"",fullSymbol:to,symbol:to,apiFormat:tr,base_currency:null!==(U=null==t?void 0:null===(w=t.attributes)||void 0===w?void 0:w.base_currency)&&void 0!==U?U:null,currency_code:null!==(j=null==t?void 0:null===(D=t.attributes)||void 0===D?void 0:D.currency_code)&&void 0!==j?j:"USD",last24hVolume:tn,marketCap:ta,main_list_order:null!==(q=null==t?void 0:null===(k=t.attributes)||void 0===k?void 0:k.main_list_order)&&void 0!==q?q:null,strategiesCount:null!==(J=null==t?void 0:null===(M=t.attributes)||void 0===M?void 0:M.compute_totalStrategyReports)&&void 0!==J?J:0,object:t}}function getDecimalsFromPriceScale(t){let e=2;return t>1&&(e=Math.log10(t)),e}}
1,12870:function(t,e,i){i.d(e,{An:function(){return trimSpaces},BJ:function(){return formatDateLastAgo},Bd:function(){return capNumber},CH:function(){return roundDateToNextHour},Cl:function(){return getCurrentMonth},Df:function(){return formatDurationStringFromMs},EF:function(){return floorNumber},GD:function(){return generateSlug},HS:function(){return returnPathWithApp},Hj:function(){return areArraysEqual},L7:function(){return formatDateLastDaysAgo},Ls:function(){return capitalizeWords},N6:function(){return formatStaticContent},T0:function(){return formatNumberCompact},VS:function(){return getHoursLastAgo},Xy:function(){return isEqual},Zy:function(){return formatDateLastAgoPrecise},aS:function(){return truncateString},cd:function(){return formatLineReturns},fm:function(){return capitalizeFirstLetter},iw:function(){return formatDaysElapsed},or:function(){return formatDateLastAgoCompact},p3:function(){return parseNumber}});var o=i(85893),r=i(67294);function isEqual(t,e){return void 0!==t&&void 0!==e&&JSON.stringify(t)===JSON.stringify(e)}function formatStaticContent(t){if(null==t||""===t)return"";for(;-1!==t.indexOf("\\n");)t=t.replace("\\n","<br/>");return t}function formatLineReturns(t){return t.split("\n").map((t,e)=>(0,o.jsxs)(r.Fragment,{children:[t,(0,o.jsx)("br",{})]},e))}function parseNumber(t){return"string"==typeof t?parseFloat(t):t}function returnPathWithApp(t){return void 0===t?"":"/app"===t||t.startsWith("/app/")?t:t.startsWith("/")?"/app"+t:"/app/"+t}function areArraysEqual(t,e){return void 0!==t&&void 0!==e&&t.length===e.length&&JSON.stringify(t)===JSON.stringify(e)}function truncateString(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"..";return t.length<=e?t:t.slice(0,e-3)+i}function generateSlug(t){return t.toLowerCase().trim().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,"").replace(/\//g,"-").replace(/\\/g,"-").replace(/\./g,"-")}function trimSpaces(t){return t?t.replace(/\s+/g," ").trim():""}function capitalizeWords(t){return void 0===t?"":t.toLowerCase().split(" ").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function capitalizeFirstLetter(t){return t.charAt(0).toUpperCase()+t.slice(1)}function formatNumberCompact(t){let e=t;return t>=1e12?e=(t/1e12).toFixed(2)+"T":t>=1e9?e=(t/1e9).toFixed(2)+"B":t>=1e6?e=(t/1e6).toFixed(2)+"M":t>=1e3&&(e=(t/1e3).toFixed(2)+"k"),e}function formatDaysElapsed(t,e){let i=Math.round((e.getTime()-t.getTime())/864e5);return i<730?i+" days":Math.round(i/365)+" years"}function roundDateToNextHour(t){return t.setHours(t.getHours()+1),t.setMinutes(0,0,0),t}function capNumber(t,e){return t<e?t:e}function floorNumber(t,e){return t>e?t:e}function formatDateLastDaysAgo(t){let e=new Date(t);return Math.floor((Date.now()-e.getTime())/864e5)+" days ago"}function formatDurationStringFromMs(t){let e=Math.floor(t/6e4%60),i=Math.floor(t/36e5%24),o=Math.floor(t/864e5),r="";return o>0&&(r+=o+"d "),i>0&&(r+=i+"h "),e>0&&(r+=e+"m "),r}function formatDateLastAgo(t){let e=new Date(t),i=Math.floor((Date.now()-e.getTime())/864e5),o=Math.floor((Date.now()-e.getTime())/36e5),r=Math.floor((Date.now()-e.getTime())/6e4);return(Date.now(),e.getTime(),i>=2)?i+" days ago":o>0?o+" hours ago":r>0?r+" mins ago":"1 min ago"}function formatDateLastAgoCompact(t){let e=new Date(t),i=Math.floor((Date.now()-e.getTime())/864e5),o=Math.floor((Date.now()-e.getTime())/36e5),r=Math.floor((Date.now()-e.getTime())/6e4),n=Math.floor((Date.now()-e.getTime())/1e3);return i>=2?i+"d ago":o>0?o+"h ago":r>0?r+"m ago":n+"s ago"}function formatDateLastAgoPrecise(t){let e=new Date(t),i=Math.floor((Date.now()-e.getTime())/864e5),o=Math.floor((Date.now()-e.getTime())/36e5),r=Math.floor((Date.now()-e.getTime())/6e4),n=Math.floor((Date.now()-e.getTime())/1e3);return 1===i?i+" day ago":i>=2?i+" days ago":o>0?o+" hours ago":r>0?r+" mins ago":n>10?n+" secs ago":"Just now"}function getHoursLastAgo(t){let e=new Date(t);return Math.floor((Date.now()-e.getTime())/36e5)}function getCurrentMonth(){let t=new Date().getMonth();return["January","February","March","April","May","June","July","August","September","October","November","December"][t]}}}]);

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.