CINXE.COM
Live stock, index, futures, Forex and Bitcoin charts on TradingView
<!DOCTYPE html> <html lang="en" dir="ltr" class="is-not-authenticated is-not-pro is-not-trial "> <head><meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"> <script nonce="FUi0LfrxPZmfktSUXkZnmg==">window.initData = {};</script><title>Live stock, index, futures, Forex and Bitcoin charts on TradingView</title> <link rel="preconnect news-streaming-url" href="https://notifications.tradingview.com/news/channel" crossorigin="use-credentials"> <link rel="preconnect" href="https://pricealerts.tradingview.com" crossorigin="use-credentials"> <!-- { block personal_css_bundle } --> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/77476.0d2092b2956e0e4eae2d.css" rel="stylesheet" type="text/css"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/88488.545aa1b123cab8d6dbef.css" rel="stylesheet" type="text/css"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/88778.a699c72be5565e942bf2.css" rel="stylesheet" type="text/css"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/92115.d4ce023e54009adf69b3.css" rel="stylesheet" type="text/css"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/67661.585fac974704d1d85ab0.css" rel="stylesheet" type="text/css"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/12653.bf7fb76d3cb9529abbe6.css" rel="stylesheet" type="text/css"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/76978.5557cc182d2adcccc338.css" rel="stylesheet" type="text/css"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/81336.8516af012f75914df42c.css" rel="stylesheet" type="text/css"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/28459.ce04a1cf4ba40e6174cc.css" rel="stylesheet" type="text/css"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/67078.2174c2a708e03f5f362a.css" rel="stylesheet" type="text/css"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/35015.f0c6a7a4bad8f4adc3de.css" rel="stylesheet" type="text/css"/> <!-- { endblock personal_css_bundle } --> <!-- { block extra_styles } --> <style type="text/css"> html, body { min-width: 320px; height: 100%; width: 100%; overflow: hidden; } @media (max-width : 600px), (max-height: 440px) { .charts-popup-list .item.save-load-chart-title { display: block; } } </style> <!-- { endblock extra_styles } --><script nonce="FUi0LfrxPZmfktSUXkZnmg=="> window.locale = 'en'; window.language = 'en'; </script> <!-- { block personal_js_bundle } --> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/runtime.796d6c78472c26f4912d.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/en.30249.b50a9df85c575e373c0c.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/en.87537.f4e6bbc150f11a54ce81.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/32227.d826c45d2d27f2ff4314.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/47793.23256724b0d5e48131ae.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/76805.0e4bfc32c8fc793c4a06.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/54520.787450d08fccb35c668d.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/87272.609f5fc8193af0f1bdf6.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/24377.56e2455a0059b98e7b44.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/48328.1bd18da534c36b461aa6.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/50687.6de10cfeb7220e8b111f.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/50344.46b0b5772df1da3452a8.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/70800.6ffe57437ab953d595c2.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/49884.aa8cf6ba6a66b8c1a7bc.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/96730.71f49eadffa2bb0a3222.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/97162.056f8dee6cae2f72832b.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/98451.baa26fd84a08a67e521c.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/54825.b2c084b5cce28b490be6.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/20592.b69acf82caa4fd017509.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/13819.a12a6a2740094dd90592.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/86778.c0852944889d08a857c5.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/46628.a1cf5d5e914b70dd983a.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/70045.98c32d125b3dd257c07a.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/28296.6180d249fc4a9d6d8c43.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/17426.a940c8f70c4f7e4997ce.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/83660.d261b28d9bf11c70a758.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/44390.692c83c7bd9019752a83.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/9404.39f05234c681196decf2.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/76362.01eb70b45135fa1a91e3.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/65836.fd9d309387a683ca82e5.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/50723.2936d934a805c6461ed5.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/45997.5ac0bd96288d07331a9a.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/79323.1760531c1b3d6ed202a4.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/12440.bf0af7d4711db11bbe9f.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/8098.87ccf6cd6d7d33aa970e.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/96130.581700fea60254a52308.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/28723.0d5b0decb6531f580de4.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/95662.8645c3746a31323ebc26.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/84323.ce3bb78865db3671c35a.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/13749.91af03bf271df7e2f06c.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/77275.e85b11b287db5653bc0e.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/39260.f3a0e22259fcec406ee0.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/65253.4d389ff09515f76526ad.js" rel="preload" as="script"/> <link crossorigin="anonymous" href="https://static.tradingview.com/static/bundles/main_chart.5226d7dfbe2b7b4cb855.js" rel="preload" as="script"/><script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/runtime.796d6c78472c26f4912d.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/en.30249.b50a9df85c575e373c0c.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/en.87537.f4e6bbc150f11a54ce81.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/32227.d826c45d2d27f2ff4314.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/47793.23256724b0d5e48131ae.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/76805.0e4bfc32c8fc793c4a06.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/54520.787450d08fccb35c668d.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/87272.609f5fc8193af0f1bdf6.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/24377.56e2455a0059b98e7b44.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/48328.1bd18da534c36b461aa6.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/50687.6de10cfeb7220e8b111f.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/50344.46b0b5772df1da3452a8.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/70800.6ffe57437ab953d595c2.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/49884.aa8cf6ba6a66b8c1a7bc.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/96730.71f49eadffa2bb0a3222.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/97162.056f8dee6cae2f72832b.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/98451.baa26fd84a08a67e521c.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/54825.b2c084b5cce28b490be6.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/20592.b69acf82caa4fd017509.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/13819.a12a6a2740094dd90592.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/86778.c0852944889d08a857c5.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/46628.a1cf5d5e914b70dd983a.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/70045.98c32d125b3dd257c07a.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/28296.6180d249fc4a9d6d8c43.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/17426.a940c8f70c4f7e4997ce.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/83660.d261b28d9bf11c70a758.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/44390.692c83c7bd9019752a83.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/9404.39f05234c681196decf2.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/76362.01eb70b45135fa1a91e3.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/65836.fd9d309387a683ca82e5.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/50723.2936d934a805c6461ed5.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/45997.5ac0bd96288d07331a9a.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/79323.1760531c1b3d6ed202a4.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/12440.bf0af7d4711db11bbe9f.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/8098.87ccf6cd6d7d33aa970e.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/96130.581700fea60254a52308.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/28723.0d5b0decb6531f580de4.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/95662.8645c3746a31323ebc26.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/84323.ce3bb78865db3671c35a.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/13749.91af03bf271df7e2f06c.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/77275.e85b11b287db5653bc0e.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/39260.f3a0e22259fcec406ee0.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/65253.4d389ff09515f76526ad.js" defer></script> <script crossorigin="anonymous" src="https://static.tradingview.com/static/bundles/main_chart.5226d7dfbe2b7b4cb855.js" defer></script> <!-- { endblock personal_js_bundle } --> <!-- { block additional_js_bundle } --> <!-- { endblock additional_js_bundle } --> <script nonce="FUi0LfrxPZmfktSUXkZnmg=="> window.initData = window.initData || {}; window.initData.theme = "light"; (()=>{"use strict";const t=/(?:^|;)\s*theme=(dark|light)(?:;|$)|$/.exec(document.cookie)[1];t&&(document.documentElement.classList.toggle("theme-dark","dark"===t),document.documentElement.classList.toggle("theme-light","light"===t),window.initData=window.initData||{},window.initData.theme=t)})(); </script> <script nonce="FUi0LfrxPZmfktSUXkZnmg=="> (()=>{"use strict";"undefined"!=typeof window&&"undefined"!=typeof navigator&&/mac/i.test(navigator.platform)&&document.documentElement.classList.add("mac_os_system")})(); </script> <script nonce="FUi0LfrxPZmfktSUXkZnmg==">var environment = "battle"; window.WS_HOST_PING_REQUIRED = true; window.BUILD_TIME = "2025_02_28-16_58"; window.WEBSOCKET_HOST = "data.tradingview.com"; window.WEBSOCKET_PRO_HOST = "prodata.tradingview.com"; window.WEBSOCKET_HOST_FOR_DEEP_BACKTESTING = "history-data.tradingview.com"; window.WIDGET_HOST = "https://www.tradingview-widget.com"; window.TradingView = window.TradingView || {}; window.WEBSOCKET_CONNECTION_TYPE = "chart"; TradingView.onChartPage = true; </script> <script nonce="FUi0LfrxPZmfktSUXkZnmg=="> (()=>{"use strict";function e(e,t=!1){const{searchParams:s}=new URL(String(location));let n="true"===s.get("mobileapp_new"),o="true"===s.get("mobileapp");if(!t){const e=function(e){const t=e+"=",s=document.cookie.split(";");for(let e=0;e<s.length;e++){let n=s[e];for(;" "===n.charAt(0);)n=n.substring(1,n.length);if(0===n.indexOf(t))return n.substring(t.length,n.length)}return null}("tv_app")||"";n||=["android","android_nps"].includes(e),o||="ios"===e}return!("new"!==e&&"any"!==e||!n)||!("new"===e||!o)}const t=()=>{},s="~m~";class n{constructor(e,t={}){this.sessionid=null,this.connected=!1,this._timeout=null,this._base=e,this._options={timeout:t.timeout||2e4,connectionType:t.connectionType}}connect(){this._socket=new WebSocket(this._prepareUrl()),this._socket.onmessage=e=>{if("string"!=typeof e.data)throw new TypeError(`The WebSocket message should be a string. Recieved ${Object.prototype.toString.call(e.data)}`);this._onData(e.data)},this._socket.onclose=this._onClose.bind(this),this._socket.onerror=this._onError.bind(this)}send(e){this._socket&&this._socket.send(this._encode(e))}disconnect(){this._clearIdleTimeout(),this._socket&&(this._socket.onmessage=t,this._socket.onclose=t,this._socket.onerror=t,this._socket.close())}_clearIdleTimeout(){null!==this._timeout&&(clearTimeout(this._timeout),this._timeout=null)}_encode(e){let t,o="";const i=Array.isArray(e)?e:[e],c=i.length;for(let e=0;e<c;e++)t=null===i[e]||void 0===i[e]?"":n._stringify(i[e]),o+=s+t.length+s+t;return o}_decode(e){const t=[];let n,o;do{if(e.substring(0,3)!==s)return t;n="",o="";const i=(e=e.substring(3)).length;for(let t=0;t<i;t++){if(o=Number(e.substring(t,t+1)),Number(e.substring(t,t+1))!==o){e=e.substring(n.length+3),n=Number(n);break}n+=o}t.push(e.substring(0,n)),e=e.substring(n)}while(""!==e);return t}_onData(e){this._setTimeout();const t=this._decode(e),s=t.length;for(let e=0;e<s;e++)this._onMessage(t[e])}_setTimeout(){this._clearIdleTimeout(),this._timeout=setTimeout(this._onTimeout.bind(this),this._options.timeout)}_onTimeout(){this.disconnect(),this._onDisconnect({code:4e3,reason:"socket.io timeout",wasClean:!1})}_onMessage(e){this.sessionid?this._checkIfHeartbeat(e)?this._onHeartbeat(e.slice(3)):this._checkIfJson(e)?this._base.onMessage(JSON.parse(e.slice(3))):this._base.onMessage(e):(this.sessionid=e,this._onConnect())}_checkIfHeartbeat(e){return this._checkMessageType(e,"h")}_checkIfJson(e){return this._checkMessageType(e,"j")}_checkMessageType(e,t){return e.substring(0,3)==="~"+t+"~"}_onHeartbeat(e){this.send("~h~"+e)}_onConnect(){this.connected=!0,this._base.onConnect()}_onDisconnect(e){this._clear(),this._base.onDisconnect(e),this.sessionid=null}_clear(){this.connected=!1}_prepareUrl(){const t=i(this._base.host);if(t.pathname+="socket.io/websocket",t.protocol="wss:",t.searchParams.append("from",window.location.pathname.slice(1,50)),t.searchParams.append("date",window.BUILD_TIME||""),e("any")&&t.searchParams.append("client","mobile"),this._options.connectionType&&t.searchParams.append("type",this._options.connectionType), window.WEBSOCKET_PARAMS_ANALYTICS){const{ws_page_uri:e,ws_ancestor_origin:s}=window.WEBSOCKET_PARAMS_ANALYTICS;e&&t.searchParams.append("page-uri",e),s&&t.searchParams.append("ancestor-origin",s)}return t.href}_onClose(e){this._clearIdleTimeout(),this._onDisconnect(e)}_onError(e){this._clearIdleTimeout(),this._clear(),this._base.emit("error",[e]),this.sessionid=null}static _stringify(e){return"[object Object]"===Object.prototype.toString.call(e)?"~j~"+JSON.stringify(e):String(e)}}class o{constructor(e,t){this.host=e,this._connecting=!1,this._events={},this.transport=this._getTransport(t)}isConnected(){return!!this.transport&&this.transport.connected}isConnecting(){return this._connecting}connect(){this.isConnected()||(this._connecting&&this.disconnect(),this._connecting=!0,this.transport.connect())}send(e){this.transport&&this.transport.connected&&this.transport.send(e)}disconnect(){this.transport&&this.transport.disconnect()}on(e,t){e in this._events||(this._events[e]=[]),this._events[e].push(t)}offAll(){this._events={}}onMessage(e){this.emit("message",[e])}emit(e,t=[]){if(e in this._events){const s=this._events[e].concat(),n=s.length;for(let e=0;e<n;e++)s[e].apply(this,t)}}onConnect(){this.clear(),this.emit("connect")}onDisconnect(e){this.emit("disconnect",[e])}clear(){this._connecting=!1}_getTransport(e){return new n(this,e)}}function i(e){const t=-1!==e.indexOf("/")?new URL(e):new URL("wss://"+e);if("wss:"!==t.protocol&&"https:"!==t.protocol)throw new Error("Invalid websocket base "+e);return t.pathname.endsWith("/")||(t.pathname+="/"),t.search="",t.username="",t.password="",t}const c=Number(window.TELEMETRY_WS_ERROR_LOGS_THRESHOLD)||0;class r{constructor(e,t={}){this._queueStack=[],this._logsQueue=[],this._telemetryObjectsQueue=[],this._reconnectCount=0,this._redirectCount=0,this._errorsCount=0,this._errorsInfoSent=!1,this._connectionStart=null,this._connectionEstablished=null,this._reconnectTimeout=null,this._onlineCancellationToken=null,this._isConnectionForbidden=!1,this._initialHost=t.initialHost||null,this._suggestedHost=e,this._proHost=t.proHost,this._reconnectHost=t.reconnectHost,this._noReconnectAfterTimeout=!0===t.noReconnectAfterTimeout,this._dataRequestTimeout=t.dataRequestTimeout,this._connectionType=t.connectionType,this._doConnect(),t.pingRequired&&-1===window.location.search.indexOf("noping")&&this._startPing()}connect(){this._tryConnect()}resetCounters(){this._reconnectCount=0,this._redirectCount=0}setLogger(e,t){this._logger=e,this._getLogHistory=t,this._flushLogs()}setTelemetry(e){this._telemetry=e,this._telemetry.reportSent.subscribe(this,this._onTelemetrySent),this._flushTelemetry()}onReconnect(e){this._onReconnect=e}isConnected(){return!!this._socket&&this._socket.isConnected()}isConnecting(){return!!this._socket&&this._socket.isConnecting()}on(e,t){return!!this._socket&&("connect"===e&&this._socket.isConnected()?t():"disconnect"===e?this._disconnectCallbacks.push(t):this._socket.on(e,t),!0)}getSessionId(){return this._socket&&this._socket.transport?this._socket.transport.sessionid:null} send(e){return this.isConnected()?(this._socket.send(e),!0):(this._queueMessage(e),!1)}getConnectionEstablished(){return this._connectionEstablished}getHost(){const e=this._tryGetProHost();return null!==e?e:this._reconnectHost&&this._reconnectCount>3?this._reconnectHost:this._suggestedHost}getReconnectCount(){return this._reconnectCount}getRedirectCount(){return this._redirectCount}getConnectionStart(){return this._connectionStart}disconnect(){this._clearReconnectTimeout(),(this.isConnected()||this.isConnecting())&&(this._propagateDisconnect(),this._disconnectCallbacks=[],this._closeSocket())}forbidConnection(){this._isConnectionForbidden=!0,this.disconnect()}allowConnection(){this._isConnectionForbidden=!1,this.connect()}isMaxRedirects(){return this._redirectCount>=20}isMaxReconnects(){return this._reconnectCount>=20}getPingInfo(){return this._pingInfo||null}_tryGetProHost(){return window.TradingView&&window.TradingView.onChartPage&&"battle"===window.environment&&!this._redirectCount&&-1===window.location.href.indexOf("ws_host")?this._initialHost?this._initialHost:void 0!==window.user&&window.user.pro_plan?this._proHost||this._suggestedHost:null:null}_queueMessage(e){0===this._queueStack.length&&this._logMessage(0,"Socket is not connected. Queued a message"),this._queueStack.push(e)}_processMessageQueue(){0!==this._queueStack.length&&(this._logMessage(0,"Processing queued messages"),this._queueStack.forEach(this.send.bind(this)),this._logMessage(0,"Processed "+this._queueStack.length+" messages"),this._queueStack=[])}_onDisconnect(e){this._noReconnectAfterTimeout||null!==this._reconnectTimeout||(this._reconnectTimeout=setTimeout(this._tryReconnect.bind(this),5e3)),this._clearOnlineCancellationToken();let t="disconnect session:"+this.getSessionId();e&&(t+=", code:"+e.code+", reason:"+e.reason,1005===e.code&&this._sendTelemetry("websocket_code_1005")),this._logMessage(0,t),this._propagateDisconnect(e),this._closeSocket(),this._queueStack=[]}_closeSocket(){null!==this._socket&&(this._socket.offAll(),this._socket.disconnect(),this._socket=null)}_logMessage(e,t){const s={method:e,message:t};this._logger?this._flushLogMessage(s):(s.message=`[${(new Date).toISOString()}] ${s.message}`,this._logsQueue.push(s))}_flushLogMessage(e){switch(e.method){case 2:this._logger.logDebug(e.message);break;case 3:this._logger.logError(e.message);break;case 0:this._logger.logInfo(e.message);break;case 1:this._logger.logNormal(e.message)}}_flushLogs(){this._flushLogMessage({method:1,message:"messages from queue. Start."}),this._logsQueue.forEach((e=>{this._flushLogMessage(e)})),this._flushLogMessage({method:1,message:"messages from queue. End."}),this._logsQueue=[]}_sendTelemetry(e,t){const s={event:e,params:t};this._telemetry?this._flushTelemetryObject(s):this._telemetryObjectsQueue.push(s)}_flushTelemetryObject(e){this._telemetry.sendChartReport(e.event,e.params,!1)}_flushTelemetry(){this._telemetryObjectsQueue.forEach((e=>{this._flushTelemetryObject(e)})),this._telemetryObjectsQueue=[]}_doConnect(){ this._socket&&(this._socket.isConnected()||this._socket.isConnecting())||(this._clearOnlineCancellationToken(),this._host=this.getHost(),this._socket=new o(this._host,{timeout:this._dataRequestTimeout,connectionType:this._connectionType}),this._logMessage(0,"Connecting to "+this._host),this._bindEvents(),this._disconnectCallbacks=[],this._connectionStart=performance.now(),this._connectionEstablished=null,this._socket.connect(),performance.mark("SWSC",{detail:"Start WebSocket connection"}),this._socket.on("connect",(()=>{performance.mark("EWSC",{detail:"End WebSocket connection"}),performance.measure("WebSocket connection delay","SWSC","EWSC")})))}_propagateDisconnect(e){const t=this._disconnectCallbacks.length;for(let s=0;s<t;s++)this._disconnectCallbacks[s](e||{})}_bindEvents(){this._socket&&(this._socket.on("connect",(()=>{const e=this.getSessionId();if("string"==typeof e){const t=JSON.parse(e);if(t.redirect)return this._redirectCount+=1,this._suggestedHost=t.redirect,this.isMaxRedirects()&&this._sendTelemetry("redirect_bailout"),void this._redirect()}this._connectionEstablished=performance.now(),this._processMessageQueue(),this._logMessage(0,"connect session:"+e)})),this._socket.on("disconnect",this._onDisconnect.bind(this)),this._socket.on("close",this._onDisconnect.bind(this)),this._socket.on("error",(e=>{this._logMessage(0,new Date+" session:"+this.getSessionId()+" websocket error:"+JSON.stringify(e)),this._sendTelemetry("websocket_error"),this._errorsCount++,!this._errorsInfoSent&&this._errorsCount>=c&&(void 0!==this._lastConnectCallStack&&(this._sendTelemetry("websocket_error_connect_stack",{text:this._lastConnectCallStack}),delete this._lastConnectCallStack),void 0!==this._getLogHistory&&this._sendTelemetry("websocket_error_log",{text:this._getLogHistory(50).join("\n")}),this._errorsInfoSent=!0)})))}_redirect(){this.disconnect(),this._reconnectWhenOnline()}_tryReconnect(){this._tryConnect()&&(this._reconnectCount+=1)}_tryConnect(){return!this._isConnectionForbidden&&(this._clearReconnectTimeout(),this._lastConnectCallStack=new Error(`WebSocket connect stack. Is connected: ${this.isConnected()}.`).stack||"",!this.isConnected()&&(this.disconnect(),this._reconnectWhenOnline(),!0))}_clearOnlineCancellationToken(){this._onlineCancellationToken&&(this._onlineCancellationToken(),this._onlineCancellationToken=null)}_clearReconnectTimeout(){null!==this._reconnectTimeout&&(clearTimeout(this._reconnectTimeout),this._reconnectTimeout=null)}_reconnectWhenOnline(){if(navigator.onLine)return this._logMessage(0,"Network status: online - trying to connect"),this._doConnect(),void(this._onReconnect&&this._onReconnect());this._logMessage(0,"Network status: offline - wait until online"),this._onlineCancellationToken=function(e){let t=e;const s=()=>{window.removeEventListener("online",s),t&&t()};return window.addEventListener("online",s),()=>{t=null}}((()=>{this._logMessage(0,"Network status changed to online - trying to connect"),this._doConnect(),this._onReconnect&&this._onReconnect()}))}_onTelemetrySent(e){ "websocket_error"in e&&(this._errorsCount=0,this._errorsInfoSent=!1)}_startPing(){if(this._pingIntervalId)return;const e=i(this.getHost());e.pathname+="ping",e.protocol="https:";let t=0,s=0;const n=e=>{this._pingInfo=this._pingInfo||{max:0,min:1/0,avg:0};const n=(new Date).getTime()-e;n>this._pingInfo.max&&(this._pingInfo.max=n),n<this._pingInfo.min&&(this._pingInfo.min=n),t+=n,s++,this._pingInfo.avg=t/s,s>=10&&this._pingIntervalId&&(clearInterval(this._pingIntervalId),delete this._pingIntervalId)};this._pingIntervalId=setInterval((()=>{const t=(new Date).getTime(),s=new XMLHttpRequest;s.open("GET",e,!0),s.send(),s.onreadystatechange=()=>{s.readyState===XMLHttpRequest.DONE&&200===s.status&&n(t)}}),1e4)}}window.WSBackendConnection=new r(window.WEBSOCKET_HOST,{pingRequired:window.WS_HOST_PING_REQUIRED,proHost:window.WEBSOCKET_PRO_HOST,reconnectHost:window.WEBSOCKET_HOST_FOR_RECONNECT,initialHost:window.WEBSOCKET_INITIAL_HOST,connectionType:window.WEBSOCKET_CONNECTION_TYPE}),window.WSBackendConnectionCtor=r})(); </script> <script nonce="FUi0LfrxPZmfktSUXkZnmg==">// init data from server here // it's gona be needed in main_chart entry point var initData = window.initData || {}; initData.content = undefined; initData.defSymbol = ""; initData.defInterval = ""; initData.name = ""; initData.description = ""; initData.uid = ""; initData.chart_id = ""; initData.sharing_enabled = {}; initData.is_banned_from_ideas = false initData.metaInfo = { id: "", name: "", description: "", uid: "", username: "", tags: "", lastModified: "", }; initData.readOnly = initData.chart_id === '' && initData.uid !== ''; initData.addonId = ""; initData.litePlanPlatform = "" window.TRADING_SERVER_LOGGER_URL = "https://trdlg.tradingview.com"; window.TRADING_REST_SERVER_URL = "https://rest-demo.tradingview.com/tradingview/v1"; window.VIDEO_IDEAS_UPLOADER_URL = "https://ideas-uploader.tradingview.com/api";</script> <script nonce="FUi0LfrxPZmfktSUXkZnmg==">var is_authenticated = false; var user = {"username":"Guest","following":"0","followers":"0","ignore_list":[],"available_offers":{}}; window.initData.priceAlertsFacadeClientUrl = "https://pricealerts.tradingview.com"; window.initData.currentLocaleInfo = {"language":"en","language_name":"English","flag":"us","geoip_code":"us","priority":1000,"iso":"en","iso_639_3":"eng","show_on_widgets":true,"global_name":"English","is_only_recommended_tw_autorepost":true}; window.initData.offerButtonInfo = {}; window.initData.settings = {'S3_LOGO_SERVICE_BASE_URL': 'https://s3-symbol-logo.tradingview.com/', 'S3_NEWS_IMAGE_SERVICE_BASE_URL': 'https://s3.tradingview.com/news/', 'WEBPACK_STATIC_PATH': 'https://static.tradingview.com/static/bundles/', 'TRADING_URL': 'https://papertrading.tradingview.com', 'TRADING_COMPETITION_ID': 'THE_LEAP_CME'}; window.countryCode = "SG"; window.__initialEnabledFeaturesets = (window.__initialEnabledFeaturesets || []).concat( ['tv_production'].concat( window.ClientCustomConfiguration && window.ClientCustomConfiguration.getEnabledFeatureSet ? JSON.parse(window.ClientCustomConfiguration.getEnabledFeatureSet()) : [] ) ); if (window.ClientCustomConfiguration && window.ClientCustomConfiguration.getDisabledFeatureSet) { window.__initialDisabledFeaturesets = JSON.parse(window.ClientCustomConfiguration.getDisabledFeatureSet()); } window.__initialEnabledFeaturesets = (window.__initialEnabledFeaturesets || []).concat( ["mobile_trading","real_brokers"] ); var lastGlobalNotificationIds = [13556,13552,13550,13513,13476,13456,13454,13451,13448,13446,13411]; var shopConf = { offers: [], }; var featureToggleState = {"black_friday_popup":1.0,"black_friday_mainpage":1.0,"black_friday_extend_limitation":1.0,"chart_autosave_5min":1.0,"chart_autosave_30min":1.0,"performance_test_mode":1.0,"chart_storage_hibernation_delay_60min":1.0,"multichart_replay":1.0,"replay_lower_resolution":1.0,"log_replay_to_persistent_logger":0.15,"enable_select_date_replay_mobile":1.0,"pane_buttons_on_tap_separator":1.0,"support_persistent_logs":1.0,"risk_reward_currency":1.0,"enable_step_by_step_hints_for_drawings":1.0,"enable_new_indicators_templates_view":1.0,"allow_brackets_profit_loss":1.0,"enable_traded_context_linking":1.0,"order_context_validation_in_instant_mode":1.0,"internal_fullscreen_api":0.5,"alerts-update-collections-on-reconnection":1.0,"alerts-use-drawing-text-in-alert-message":1.0,"self-replacing-advanced-chart-widget":1.0,"disable-calendar-advanced-chart-widget":1.0,"disable-lse-data-screener-heatmap-widgets":1.0,"symphony_allow_non_partitioned_cookie_on_old_symphony":1.0,"symphony_notification_badges":1.0,"symphony_use_adk_for_upgrade_request":1.0,"news_enable_filtering_by_user":1.0,"timeout_django_db":0.15,"timeout_django_usersettings_db":0.15,"timeout_django_charts_db":0.25,"timeout_django_symbols_lists_db":0.25,"timeout_django_minds_db":0.05,"timeout_django_logging_db":0.25,"disable_services_monitor_metrics":1.0,"enable_signin_recaptcha":1.0,"enable_idea_spamdetectorml":1.0,"enable_idea_spamdetectorml_comments":1.0,"enable_spamdetectorml_chat":1.0,"enable_minds_spamdetectorml":1.0,"backend-connections-in-token":1.0,"one_connection_with_exchanges":1.0,"mobile-ads-ios":1.0,"mobile-ads-android":1.0,"google-one-tap-signin":1.0,"braintree-gopro-in-order-dialog":1.0,"braintree-apple-pay":1.0,"braintree-google-pay":1.0,"braintree-apple-pay-trial":1.0,"triplea-payments":1.0,"braintree-google-pay-trial":1.0,"braintree-one-usd-verification":1.0,"braintree-3ds-enabled":1.0,"braintree-3ds-status-check":1.0,"braintree-additional-card-checks-for-trial":1.0,"braintree-instant-settlement":1.0,"checkout_black_friday_downgrade":1.0,"checkout-subscriptions":1.0,"checkout_additional_card_checks_for_trial":1.0,"checkout_fail_on_duplicate_payment_methods_for_trial":1.0,"checkout_fail_on_banned_countries_for_trial":1.0,"checkout_fail_on_banned_bank_for_trial":1.0,"checkout_fail_on_banned_bank_for_premium_trial":1.0,"checkout_fail_on_close_to_expiration_card_trial":1.0,"checkout_fail_on_prepaid_card_trial":1.0,"checkout_fail_on_commercial_card_trial":1.0,"checkout_show_instead_of_braintree":1.0,"checkout-3ds":1.0,"checkout-3ds-us":1.0,"checkout-paypal":1.0,"annual_to_monthly_downgrade_attempt":1.0,"razorpay_trial_10_inr":1.0,"razorpay_black_friday_downgrade":1.0,"razorpay-card-order-token-section":1.0,"razorpay-card-subscriptions":1.0,"razorpay-upi-subscriptions":1.0,"razorpay-s3-invoice-upload":1.0,"dlocal-payments":1.0,"braintree_transaction_source":1.0,"braintree_commercial_card_check":1.0,"vertex-tax":1.0,"receipt_in_emails":1.0,"adwords-analytics":1.0,"minds_widget_enabled":1.0,"minds_on_symbol_page_enabled":1.0,"required_agreement_for_rt":1.0,"check_market_data_limits":1.0,"force_to_complete_data":1.0,"force_to_upgrade_to_expert":1.0,"send_tradevan_invoice":1.0,"show_pepe_animation":1.0,"screener-alerts-read-only":1.0,"screener_hide_forex_selector_on_chart":1.0,"screener_redirect_forex_to_stock_on_chart":1.0,"screener_send_touch_request":1.0,"screener_standalone_load_recently_used_screen":1.0,"screener_widgetbar_load_recently_used_screen":1.0,"ses_tracking":1.0,"send_financial_notifications":1.0,"symbol_page_faq":1.0,"show_advertising_banner_symbol_page":1.0,"spark_translations":1.0,"spark_category_translations":1.0,"spark_tags_translations":1.0,"pro_plan_initial_refunds_disabled":1.0,"enable_ideas_recommendations":1.0,"enable_ideas_recommendations_feed":1.0,"fail_on_duplicate_payment_methods_for_trial":1.0,"ethoca_alert_notification_webhook":1.0,"hide_suspicious_users_ideas":1.0,"disable_publish_strategy_range_based_chart":1.0,"restrict_simultaneous_requests":1.0,"login_from_new_device_email":1.0,"ssr_worker_nowait":1.0,"broker_A1CAPITAL":1.0,"broker_ACTIVTRADES":1.0,"static_dom":1.0,"broker_ALICEBLUE":1.0,"hide_ALICEBLUE_on_ios":1.0,"hide_ALICEBLUE_on_android":1.0,"hide_ALICEBLUE_on_mobile_web":1.0,"broker_ALOR":1.0,"broker_ALPACA":1.0,"broker_AMP":1.0,"hide_ANGELONE_on_ios":1.0,"hide_ANGELONE_on_android":1.0,"hide_ANGELONE_on_mobile_web":1.0,"ANGELONE_beta":1.0,"hide_BAJAJ_on_ios":1.0,"hide_BAJAJ_on_android":1.0,"hide_BAJAJ_on_mobile_web":1.0,"BAJAJ_beta":1.0,"broker_BINANCE":1.0,"enable_binanceapis_base_url":1.0,"broker_BINGBON":1.0,"broker_BITAZZA":1.0,"broker_BITGET":1.0,"broker_BITMEX":1.0,"hide_BITMEX_on_ios":1.0,"hide_BITMEX_on_android":1.0,"hide_BITMEX_on_mobile_web":1.0,"BITMEX_beta":1.0,"broker_BITSTAMP":1.0,"broker_BLACKBULL":1.0,"broker_BYBIT":1.0,"broker_CAPITALCOM":1.0,"broker_CFI":1.0,"broker_CITYINDEX":1.0,"cityindex_spreadbetting":1.0,"hide_CMCMARKETS_on_ios":1.0,"hide_CMCMARKETS_on_android":1.0,"hide_CMCMARKETS_on_mobile_web":1.0,"CMCMARKETS_beta":1.0,"broker_COBRATRADING":1.0,"broker_COINBASE":1.0,"hide_COINBASE_on_ios":1.0,"hide_COINBASE_on_android":1.0,"hide_COINBASE_on_mobile_web":1.0,"coinbase_request_server_logger":1.0,"COINBASE_beta":1.0,"broker_COLMEX":1.0,"hide_CQG_on_ios":1.0,"hide_CQG_on_android":1.0,"hide_CQG_on_mobile_web":1.0,"cqg-realtime-bandwidth-limit":1.0,"hide_CURRENCYCOM_on_ios":1.0,"hide_CURRENCYCOM_on_android":1.0,"hide_CURRENCYCOM_on_mobile_web":1.0,"broker_DERAYAH":1.0,"broker_DHAN":1.0,"broker_DNSE":1.0,"broker_DORMAN":1.0,"hide_DUMMY_on_ios":1.0,"hide_DUMMY_on_android":1.0,"hide_DUMMY_on_mobile_web":1.0,"broker_EASYMARKETS":1.0,"broker_EDGECLEAR":1.0,"edgeclear_oauth_authorization":1.0,"broker_EIGHTCAP":1.0,"broker_ERRANTE":1.0,"broker_ESAFX":1.0,"hide_FIDELITY_on_ios":1.0,"hide_FIDELITY_on_android":1.0,"hide_FIDELITY_on_mobile_web":1.0,"FIDELITY_beta":1.0,"broker_FOREXCOM":1.0,"forexcom_session_v2":1.0,"broker_FPMARKETS":1.0,"hide_FTX_on_ios":1.0,"hide_FTX_on_android":1.0,"hide_FTX_on_mobile_web":1.0,"ftx_request_server_logger":1.0,"broker_FUSIONMARKETS":1.0,"fxcm_server_logger":1.0,"broker_FXCM":1.0,"broker_FXOPEN":1.0,"broker_FYERS":1.0,"broker_GBEBROKERS":1.0,"broker_GEMINI":1.0,"broker_GLOBALMENKUL":1.0,"hide_GLOBALPRIME_on_ios":1.0,"hide_GLOBALPRIME_on_android":1.0,"hide_GLOBALPRIME_on_mobile_web":1.0,"globalprime-brokers-side-maintenance":1.0,"broker_GOMARKETS":1.0,"hide_GOMARKETS_on_ios":1.0,"hide_GOMARKETS_on_android":1.0,"hide_GOMARKETS_on_mobile_web":1.0,"GOMARKETS_beta":1.0,"broker_GOTRADE":1.0,"hide_GOTRADE_on_ios":1.0,"hide_GOTRADE_on_android":1.0,"hide_GOTRADE_on_mobile_web":1.0,"broker_HERENYA":1.0,"broker_HTX":1.0,"broker_IBKR":1.0,"check_ibkr_side_maintenance":1.0,"ibkr_request_server_logger":1.0,"ibkr_parallel_provider_initialization":1.0,"ibkr_ws_account_summary":1.0,"ibkr_ws_server_logger":1.0,"ibkr_subscribe_to_order_updates_first":1.0,"ibkr_ws_account_ledger":1.0,"broker_IBROKER":1.0,"broker_ICMARKETS":1.0,"broker_IG":1.0,"broker_INFOYATIRIM":1.0,"broker_INNOVESTX":1.0,"broker_INTERACTIVEIL":1.0,"INTERACTIVEIL_beta":1.0,"broker_IRONBEAM":1.0,"hide_IRONBEAM_CQG_on_ios":1.0,"hide_IRONBEAM_CQG_on_android":1.0,"hide_IRONBEAM_CQG_on_mobile_web":1.0,"broker_LIBERATOR":1.0,"hide_LIBERATOR_on_ios":1.0,"hide_LIBERATOR_on_android":1.0,"hide_LIBERATOR_on_mobile_web":1.0,"LIBERATOR_beta":1.0,"broker_MARKETSCOM":1.0,"broker_MEXEM":1.0,"hide_MOCKBROKER_on_ios":1.0,"hide_MOCKBROKER_on_android":1.0,"hide_MOCKBROKER_on_mobile_web":1.0,"broker_MOOMOO":1.0,"broker_NINJATRADER":1.0,"broker_OANDA":1.0,"oanda_rest_api":1.0,"oanda_rest_server_logging":0.2,"launch-oanda-country-group-1":1.0,"launch-oanda-country-group-2":1.0,"launch-oanda-country-group-3":1.0,"launch-oanda-country-group-4":1.0,"oanda_oauth_multiplexing":1.0,"broker_OKX":1.0,"broker_OPTIMUS":1.0,"broker_OSMANLI":1.0,"paper_force_connect_pushstream":1.0,"modular_paper_trading":1.0,"paper_subaccount_custom_currency":1.0,"paper_outside_rth":1.0,"broker_PEPPERSTONE":1.0,"broker_PAYTM":1.0,"broker_PHEMEX":1.0,"broker_PHILLIPCAPITAL_TR":1.0,"broker_PHILLIPNOVA":1.0,"broker_PLUS500":1.0,"plus500_oauth_authorization":1.0,"broker_QUESTRADE":1.0,"broker_ROBOMARKETS":1.0,"broker_SAMUEL":1.0,"broker_SAXOBANK":1.0,"hide_SKILLING_on_ios":1.0,"hide_SKILLING_on_android":1.0,"hide_SKILLING_on_mobile_web":1.0,"skilling-brokers-side-maintenance":1.0,"broker_SPREADEX":1.0,"hide_SWISSQUOTE_on_ios":1.0,"hide_SWISSQUOTE_on_android":1.0,"hide_SWISSQUOTE_on_mobile_web":1.0,"SWISSQUOTE_beta":1.0,"broker_STONEX":1.0,"broker_TASTYFX":1.0,"broker_TASTYTRADE":1.0,"broker_THINKMARKETS":1.0,"hide_TICKMILL_REST_on_ios":1.0,"hide_TICKMILL_REST_on_android":1.0,"hide_TICKMILL_REST_on_mobile_web":1.0,"TICKMILL_REST_beta":1.0,"hide_TIGER_on_ios":1.0,"hide_TIGER_on_android":1.0,"hide_TIGER_on_mobile_web":1.0,"broker_TOKENIZE":1.0,"broker_TRADENATION":1.0,"hide_TRADESMART_on_ios":1.0,"hide_TRADESMART_on_android":1.0,"hide_TRADESMART_on_mobile_web":1.0,"TRADESMART_beta":1.0,"broker_TRADESTATION":1.0,"tradestation_request_server_logger":1.0,"hide_TRADEZERO_on_ios":1.0,"hide_TRADEZERO_on_android":1.0,"hide_TRADEZERO_on_mobile_web":1.0,"TRADEZERO_beta":1.0,"broker_TRADIER":1.0,"broker_TRADIER_FUTURES":1.0,"tradier_futures_oauth_authorization":1.0,"broker_TRADOVATE":1.0,"hide_TRADU_on_ios":1.0,"hide_TRADU_on_android":1.0,"hide_TRADU_on_mobile_web":1.0,"broker_VANTAGE":1.0,"broker_VELOCITY":1.0,"broker_WEBULL":1.0,"broker_WEBULLJAPAN":1.0,"broker_WEBULLPAY":1.0,"hide_WEBULLPAY_on_ios":1.0,"hide_WEBULLPAY_on_android":1.0,"hide_WEBULLPAY_on_mobile_web":1.0,"broker_WHITEBIT":1.0,"broker_WHSELFINVEST":1.0,"broker_WHSELFINVEST_FUTURES":1.0,"WHSELFINVEST_FUTURES_oauth_authorization":1.0,"broker_YLG":1.0,"broker_id_session":1.0,"disallow_concurrent_sessions":1.0,"mobile_trading_web":1.0,"mobile_trading_ios":1.0,"mobile_trading_android":1.0,"continuous_front_contract_trading":1.0,"trading_request_server_logger":1.0,"rest_request_server_logger":1.0,"oauth2_code_flow_provider_server_logger":1.0,"rest_logout_on_429":1.0,"review_popup_on_chart":1.0,"show_concurrent_connection_warning":1.0,"enable_trading_server_logger":1.0,"order_presets":1.0,"order_ticket_resizable_drawer_on":1.0,"rest_use_async_mapper":1.0,"paper_competition_leaderboard":1.0,"paper_competition_link_community":1.0,"paper_competition_landing":1.0,"paper_competition_leaderboard_user_stats":1.0,"paper_competition_previous_competitions":1.0,"amp_oauth_authorization":1.0,"blueline_oauth_authorization":1.0,"dorman_oauth_authorization":1.0,"ironbeam_oauth_authorization":1.0,"optimus_oauth_authorization":1.0,"stonex_oauth_authorization":1.0,"tickmill_oauth_authorization":1.0,"ylg_oauth_authorization":1.0,"new_order_size_calculator":1.0,"trading_general_events_ga_tracking":1.0,"replay_result_sharing":1.0,"replay_trading_brackets":1.0,"hide_all_brokers_button_in_ios_app":1.0,"force_max_allowed_pulling_intervals":1.0,"paper_delay_trading":1.0,"enable_first_touch_is_selection":1.0,"enable_order_moving_by_price_line":1.0,"enable_anchor_for_traded_objects":1.0,"renew_token_preemption_30":1.0,"do_not_open_ot_from_plus_button":1.0,"broker_side_promotion":1.0,"enable_symbols_popularity_showing":1.0,"enable_translations_s3_upload":1.0,"etf_fund_flows_only_days_resolutions":1.0,"disable_snowplow_platform_events":1.0,"notify_idea_mods_about_first_publication":1.0,"enable_waf_tracking":1.0,"backtesting_report":1.0,"new_errors_flow":1.0,"disable_pine_v4":1.0,"enable_profiler":1.0,"pine_logs_in_detach":1.0,"symbol_search_country_sources":1.0,"symbol_search_bond_type_filter":1.0,"watchlists_dialog_scroll_to_active":1.0,"bottom_panel_track_events":1.0,"snowplow_beacon_feature":1.0,"show_data_problems_in_help_center":1.0,"enable_apple_device_check":1.0,"should_charge_full_price_on_upgrade_if_google_payment":1.0,"update_availability_for_std":1.0,"enable_push_notifications_android":1.0,"enable_push_notifications_ios":1.0,"enable_manticore_cluster":1.0,"enable_envoy_proxy":1.0,"enable_envoy_proxy_papertrading":1.0,"enable_envoy_proxy_screener":1.0,"hide_ca_us_isin":1.0,"options_reduce_polling_interval":1.0,"options_strategy_analyzer_tab":1.0,"options_details_widget":1.0,"options_overlay":1.0,"options_product_page":1.0,"options_builder_dialog":1.0,"options_exchange_nse":1.0,"options_exchange_cme":1.0,"options_exchange_cbot":1.0,"options_exchange_comex":1.0,"options_exchange_nymex":1.0,"options_exchange_bse":1.0,"options_exchange_opra":1.0,"options_chain_use_quote_session":1.0,"show_toast_about_unread_message":1.0,"enable_partner_payout":1.0,"enable_email_change_logging":1.0,"set_limit_to_1000_for_colored_lists":1.0,"enable_email_on_partner_status_change":1.0,"enable_partner_program_apply":1.0,"enable_partner_program":1.0,"compress_cache_data":1.0,"news_enable_streaming":1.0,"news_screener_page_client":1.0,"news_screener_page_django":1.0,"enable_declaration_popup_on_load":1.0,"move_ideas_and_minds_into_news":1.0,"hide_data_window_tab":1.0,"show_futures_front_contract":1.0,"enable_prof_popup_free":1.0,"do_not_disclose_phone_occupancy":1.0,"enable_redirect_to_widget_documentation_of_any_localization":1.0,"news_enable_streaming_hibernation":1.0,"news_streaming_hibernation_delay_10min":1.0,"pass_recovery_search_hide_info":1.0,"watchlist_screener_tabs":1.0,"news_enable_streaming_on_screener":1.0,"enable_forced_email_confirmation":1.0,"enable_support_assistant":1.0,"show_gift_button":1.0,"address_validation_enabled":1.0,"generate_invoice_number_by_country":1.0,"show_summary_over_the_chart":1.0,"show_favorite_layouts":1.0,"hide_collapse_button_on_mane_pane":1.0,"news_enable_new_story_page_layout":1.0,"enable_social_auth_confirmation":1.0,"enable_ad_block_detect":1.0,"disable_content_locale_check_on_client":1.0,"rename_minds_tab_to_discussions":1.0,"show_community_feed_button":1.0,"tvd_last_tab_close_button":1.0,"move_watchlist_actions":1.0,"news_enable_story_page_provider_widget":1.0,"enable_lingua_lang_check":1.0,"get_saved_active_list_before_getting_all_lists":1.0,"enable_alternative_twitter_api":1.0,"show_referral_notification_dialog":0.5,"set_new_black_color":1.0,"pine_standalone_screener_enabled":1.0,"use_symbol_search_options_exchanges_list":1.0,"enable_parallel_requests_global_drawings_with_symbol":1.0,"hide_right_toolbar_button":1.0,"news_use_news_mediator":1.0,"allow_trailing_whitespace_in_number_token":1.0,"restrict_pwned_password_set":1.0,"enable_extra_full_name_validators":1.0};</script> <script nonce="FUi0LfrxPZmfktSUXkZnmg=="> window.initData = window.initData || {}; window.initData.snowplowSettings = { collectorId: 'tv_cf', url: 'snowplow-pixel.tradingview.com', params: { appId: 'tradingview', postPath: '/com.tradingview/track', }, enabled: true, } </script> <script nonce="FUi0LfrxPZmfktSUXkZnmg==">window.PUSHSTREAM_URL = "wss://pushstream.tradingview.com"; window.CHARTEVENTS_URL = "https://chartevents-reuters.tradingview.com/"; window.ECONOMIC_CALENDAR_URL = "https://economic-calendar.tradingview.com/"; window.EARNINGS_CALENDAR_URL = "https://scanner.tradingview.com"; window.NEWS_SERVICE_URL = "https://news-headlines.tradingview.com"; window.NEWS_MEDIATOR_URL = "https://news-mediator.tradingview.com"; window.NEWS_STREAMING_URL = "https://notifications.tradingview.com/news/channel"; window.SS_HOST = "symbol-search.tradingview.com"; window.SS_URL = ""; window.SS_DOMAIN_PARAMETER = 'production'; window.DEFAULT_SYMBOL = "NASDAQ:AAPL"; window.COUNTRY_CODE_TO_DEFAULT_EXCHANGE = {"en":"US","us":"US","ae":"ADX","ar":"BCBA","at":"VIE","au":"ASX","bd":"DSEBD","be":"EURONEXT_BRU","bh":"BAHRAIN","br":"BMFBOVESPA","ca":"TSX","ch":"SIX","cl":"BCS","zh_CN":"SSE","co":"BVC","cy":"CSECY","cz":"PSECZ","de_DE":"XETR","dk":"OMXCOP","ee":"OMXTSE","eg":"EGX","es":"BME","fi":"OMXHEX","fr":"EURONEXT_PAR","gr":"ATHEX","hk":"HKEX","hu":"BET","id":"IDX","ie":"EURONEXTDUB","he_IL":"TASE","in":"BSE","is":"OMXICE","it":"MIL","ja":"TSE","ke":"NSEKE","kr":"KRX","kw":"KSE","lk":"CSELK","lt":"OMXVSE","lv":"OMXRSE","lu":"LUXSE","mx":"BMV","ma":"CSEMA","ms_MY":"MYX","ng":"NSENG","nl":"EURONEXT_AMS","no":"OSL","nz":"NZX","pe":"BVL","ph":"PSE","pk":"PSX","pl":"GPW","pt":"EURONEXT_LIS","qa":"QSE","rs":"BELEX","ru":"RUS","ro":"BVB","ar_AE":"TADAWUL","se":"NGM","sg":"SGX","sk":"BSSE","th_TH":"SET","tn":"BVMT","tr":"BIST","zh_TW":"TWSE","gb":"LSE","ve":"BVCV","vi_VN":"HOSE","za":"JSE"}; window.SCREENER_HOST = "https://scanner.tradingview.com"; window.AWS_BBS3_DOMAIN = "https://tradingview-user-uploads.s3.amazonaws.com"; window.AWS_S3_CDN = "https://s3.tradingview.com"; window.OPTIONS_CHARTING_HOST = "https://options-charting.tradingview.com"; window.initData.SCREENER_STORAGE_URL = "https://screener-storage.tradingview.com/screener-storage"; window.initData.screener_storage_release_version = 32; window.DATA_ISSUES_HOST = "https://support-middleware.tradingview.com"; window.TELEMETRY_HOSTS = {"charts":{"free":"https://telemetry.tradingview.com/free","pro":"https://telemetry.tradingview.com/pro","widget":"https://telemetry.tradingview.com/widget","ios_free":"https://telemetry.tradingview.com/charts-ios-free","ios_pro":"https://telemetry.tradingview.com/charts-ios-pro","android_free":"https://telemetry.tradingview.com/charts-android-free","android_pro":"https://telemetry.tradingview.com/charts-android-pro"},"alerts":{"all":"https://telemetry.tradingview.com/alerts"},"line_tools_storage":{"all":"https://telemetry.tradingview.com/line-tools-storage"},"news":{"all":"https://telemetry.tradingview.com/news"},"pine":{"all":"https://telemetry.tradingview.com/pine"},"calendars":{"all":"https://telemetry.tradingview.com/calendars"},"site":{"free":"https://telemetry.tradingview.com/site-free","pro":"https://telemetry.tradingview.com/site-pro","widget":"https://telemetry.tradingview.com/site-widget"},"trading":{"all":"https://telemetry.tradingview.com/trading"}}; window.TELEMETRY_WS_ERROR_LOGS_THRESHOLD = "100"; window.RECAPTCHA_SITE_KEY = "6Lcqv24UAAAAAIvkElDvwPxD0R8scDnMpizaBcHQ"; window.RECAPTCHA_SITE_KEY_V3 = "6LeQMHgUAAAAAKCYctiBGWYrXN_tvrODSZ7i9dLA"; window.GOOGLE_CLIENT_ID = "236720109952-v7ud8uaov0nb49fk5qm03as8o7dmsb30.apps.googleusercontent.com"; window.PINE_URL = window.PINE_URL || "https://pine-facade.tradingview.com/pine-facade";</script> <meta name="description" content="Interactive financial charts for analysis and generating trading ideas on TradingView!" /> <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> <link rel="conversions-config prefetch" as="fetch" href="https://s3.tradingview.com/conversions_en.json" crossorigin> <link rel="preconnect" href="https://pine-facade.tradingview.com/pine-facade" crossorigin> <link rel="preconnect chart-storage" href="https://charts-storage.tradingview.com/charts-storage" crossorigin="use-credentials"> <link rel="canonical" href="https://www.tradingview.com/chart/" /> <link rel="icon" href="https://static.tradingview.com/static/images/favicon.ico"> <meta name="application-name" content="TradingView" /> <meta name="format-detection" content="telephone=no" /> <link rel="manifest" href="https://static.tradingview.com/static/images/favicon/manifest.json" /> <meta name="theme-color" media="(prefers-color-scheme: light)" content="#F9F9F9"> <meta name="theme-color" media="(prefers-color-scheme: dark)" content="#262626"> <meta name="apple-mobile-web-app-title" content="TradingView Site" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-status-bar-style" content="black" /> <link rel="apple-touch-icon" sizes="180x180" href="https://static.tradingview.com/static/images/favicon/apple-touch-icon-180x180.png" /><link rel="link-locale" data-locale="en" href="https://www.tradingview.com/chart/"><link rel="link-locale" data-locale="in" href="https://in.tradingview.com/chart/"><link rel="link-locale" data-locale="de_DE" href="https://de.tradingview.com/chart/"><link rel="link-locale" data-locale="fr" href="https://fr.tradingview.com/chart/"><link rel="link-locale" data-locale="es" href="https://es.tradingview.com/chart/"><link rel="link-locale" data-locale="it" href="https://it.tradingview.com/chart/"><link rel="link-locale" data-locale="pl" href="https://pl.tradingview.com/chart/"><link rel="link-locale" data-locale="tr" href="https://tr.tradingview.com/chart/"><link rel="link-locale" data-locale="ru" href="https://ru.tradingview.com/chart/"><link rel="link-locale" data-locale="br" href="https://br.tradingview.com/chart/"><link rel="link-locale" data-locale="id" href="https://id.tradingview.com/chart/"><link rel="link-locale" data-locale="ms_MY" href="https://my.tradingview.com/chart/"><link rel="link-locale" data-locale="th_TH" href="https://th.tradingview.com/chart/"><link rel="link-locale" data-locale="vi_VN" href="https://vn.tradingview.com/chart/"><link rel="link-locale" data-locale="ja" href="https://jp.tradingview.com/chart/"><link rel="link-locale" data-locale="kr" href="https://kr.tradingview.com/chart/"><link rel="link-locale" data-locale="zh_CN" href="https://cn.tradingview.com/chart/"><link rel="link-locale" data-locale="zh_TW" href="https://tw.tradingview.com/chart/"><link rel="link-locale" data-locale="ar_AE" href="https://ar.tradingview.com/chart/"><link rel="link-locale" data-locale="he_IL" href="https://il.tradingview.com/chart/"><meta property="al:ios:app_store_id" content="1205990992" /> <meta property="al:ios:app_name" content="TradingView - trading community, charts and quotes" /> <meta property="og:site_name" content="TradingView" /><meta property="og:type" content="website" /><meta property="og:title" content="" /><meta property="og:description" content="" /><meta property="og:url" content="https://www.tradingview.com/chart/" /><meta property="og:image" content="https://s.tradingview.com/static/images/illustrations/chart.jpg" /><meta property="og:image:height" content="630" /><meta property="og:image:width" content="1200" /><meta property="og:image:secure_url" content="https://static.tradingview.com/static/images/logo-preview.png" /> <meta name="twitter:site" content="@TradingView" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="" /><meta name="twitter:description" content="" /><meta name="twitter:url" content="https://www.tradingview.com/chart/" /><meta name="twitter:image" content="https://s.tradingview.com/static/images/illustrations/chart.jpg" /><meta name="ahrefs-site-verification" content="f729ff74def35be4b9b92072c0e995b40fcb9e1aece03fb174343a1b7a5350ce"> </head> <body class="chart-page unselectable"> <div class="loading-indicator"><div class="tv-spinner tv-spinner--size_large tv-spinner--shown" role="progressbar"></div></div> <script nonce="FUi0LfrxPZmfktSUXkZnmg==">window.fbAppId = "155037361239837";</script> <script nonce="FUi0LfrxPZmfktSUXkZnmg==">window.BLOG_LOCALIZED_URL = "https://www.tradingview.com/blog/en/"; initData.idc_exchanges_list = ["nzx","bme","bme_stocks","shfe","szse","nag","tfx","sgx","sgx_stocks","sgx_futures","twse","bcba","bvc","bvcv","bmv","bvmt","bvl","bcs","six","bsse","bahrain","belex","nseke","qse"]; initData.idc_delay_exchanges_list = ["shfe","tfx","bvcv","bvmt","bsse","bahrain"]; initData.offlineAlertEventsOnInit = true; </script> <script type="application/prs.init-data+json"> { "gaId": "G-YVVRYGL0E0", "gaVars": {"app":"web"}, "gadwId": "AW-353039917", "fbTagId": "1508275579478794", "yaTagId": "69731728" } </script> <script type="application/prs.init-data+json"> { "days_to_deactivation": null, "is_support_available": false, "canSwitchTheme": true, "tvPartnersHost": "https://tv-partners.tradingview.com" } </script> <meta name="tv:server-name" content="prod-frontend-web-b-19" /><div id="aria-live-regions-wrapper" class="aria-live-regions-wrapper"> <div aria-live="polite" aria-relevant="additions"></div> <div aria-live="polite" aria-relevant="additions"></div> <div aria-live="assertive" aria-relevant="additions"></div> <div aria-live="assertive" aria-relevant="additions"></div> </div> </body> </html>