-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtv.html
397 lines (340 loc) · 49 KB
/
tv.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
<!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="q20PFDf/q0Oqoz4AQe1Mgw==">window.initData = {};</script>
<link rel="news-streaming-url" href="https://notifications.tradingview.com/news/channel">
<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="/static/bundles/91284.e28e75165f1449a40136.css" rel="stylesheet" type="text/css"/>
<link crossorigin="anonymous" href="/static/bundles/69797.68e143d52f0a9c0a42c3.css" rel="stylesheet" type="text/css"/>
<link crossorigin="anonymous" href="/static/bundles/36110.a699c72be5565e942bf2.css" rel="stylesheet" type="text/css"/>
<link crossorigin="anonymous" href="/static/bundles/887.d4ce023e54009adf69b3.css" rel="stylesheet" type="text/css"/>
<link crossorigin="anonymous" href="/static/bundles/51273.de1e2a61cac87d771a3d.css" rel="stylesheet" type="text/css"/>
<link crossorigin="anonymous" href="/static/bundles/85532.0e5c42b916a81af98241.css" rel="stylesheet" type="text/css"/>
<link crossorigin="anonymous" href="/static/bundles/5236.78da3405ca60129cefd8.css" rel="stylesheet" type="text/css"/>
<link crossorigin="anonymous" href="/static/bundles/62452.bf7dab3ef1f29ce963d6.css" rel="stylesheet" type="text/css"/>
<link crossorigin="anonymous" href="/static/bundles/49501.e85e12769b99b432a8f0.css" rel="stylesheet" type="text/css"/>
<link crossorigin="anonymous" href="/static/bundles/99138.b0f48cf7c8a82d463c7d.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 only screen and (max-width : 600px), only screen and (max-height: 440px) {
.charts-popup-list .item.save-load-chart-title { display: block; }
}
</style>
<!-- { endblock extra_styles } --><script nonce="q20PFDf/q0Oqoz4AQe1Mgw==">
window.locale = 'en';
window.language = 'en';
</script>
<!-- { block personal_js_bundle } -->
<link crossorigin="anonymous" href="/static/bundles/runtime.dfd1c899a80acd5a8bb8.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/en.18562.f9f3ec0f4c003dcd90d0.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/en.47313.dc3b522a6a8953f87380.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/en.68716.19d2c92f681b6c577007.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/en.84554.ab38730bea357acad2bd.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/en.35047.b6e52c0874e47163ca4c.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/en.21415.15b8633a144e9310c43e.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/en.61285.5e672dcd019f01eab52d.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/en.82231.77407a2f7225187d3786.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/en.36322.ca584a30c628958df9ed.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/en.2590.018c309176b4795d9b20.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/en.71869.bcf486c125f0029bf657.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/en.30610.fbcb5d094ba989da9abc.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/en.66329.6a637b8cd1f1eaf97eda.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/32227.3f2991e6dddea792b349.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/23127.e1a5a557b0a07cfdd28e.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/34890.f3eb9d22a989a9892b03.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/94699.9e12929383e35c3c20f6.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/64685.995e39bf1bf29706c10e.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/86264.e4d346378cfb553b9103.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/1386.a8840ad6c74d681021b5.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/83912.f13b9ecda77176ee679e.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/11183.10db800d837b852a8896.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/44856.07c6930ab8c8395fef32.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/16527.f661357c5a8bbfdec8a3.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/98451.5e2d71e4b90ab20b7bde.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/83323.a8ab6109fddb23958d29.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/24420.0f6e07b30709fc14fe44.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/45430.c981f1baac1b2a3f7cc2.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/9719.9ced512ddf421ff02b91.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/70045.26bda4b8e6ab1a0aa19b.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/52383.bf433de8fa6b3aac0476.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/42095.f686e4f488530fbbe403.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/11532.d4c4f949da52642e1f21.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/27620.54ffdbfc931db6d9c58c.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/87.99b60378acd681b111f6.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/84591.e873ab76d35b2f14b7ad.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/72299.f30b03a3f17bcfc6a9d5.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/51533.acc29c3b86d4a623d54f.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/59990.64f7a8e0a9ee7c8dbb45.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/91218.5d9e924b40a0d8ce3803.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/43396.b1780c058f4a46b7ef20.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/16442.f0e7847c57d46778b9a7.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/86111.50cbb98f73d9569ff280.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/49475.38b0a38e4a84a7fac753.js" rel="preload" as="script"/>
<link crossorigin="anonymous" href="/static/bundles/main_chart.a550d217f540a3be90da.js" rel="preload" as="script"/>
<script crossorigin="anonymous" src="/static/bundles/runtime.dfd1c899a80acd5a8bb8.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/en.18562.f9f3ec0f4c003dcd90d0.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/en.47313.dc3b522a6a8953f87380.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/en.68716.19d2c92f681b6c577007.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/en.84554.ab38730bea357acad2bd.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/en.35047.b6e52c0874e47163ca4c.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/en.21415.15b8633a144e9310c43e.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/en.61285.5e672dcd019f01eab52d.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/en.82231.77407a2f7225187d3786.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/en.36322.ca584a30c628958df9ed.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/en.2590.018c309176b4795d9b20.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/en.71869.bcf486c125f0029bf657.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/en.30610.fbcb5d094ba989da9abc.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/en.66329.6a637b8cd1f1eaf97eda.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/32227.3f2991e6dddea792b349.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/23127.e1a5a557b0a07cfdd28e.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/34890.f3eb9d22a989a9892b03.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/94699.9e12929383e35c3c20f6.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/64685.995e39bf1bf29706c10e.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/86264.e4d346378cfb553b9103.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/1386.a8840ad6c74d681021b5.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/83912.f13b9ecda77176ee679e.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/11183.10db800d837b852a8896.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/44856.07c6930ab8c8395fef32.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/16527.f661357c5a8bbfdec8a3.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/98451.5e2d71e4b90ab20b7bde.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/83323.a8ab6109fddb23958d29.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/24420.0f6e07b30709fc14fe44.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/45430.c981f1baac1b2a3f7cc2.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/9719.9ced512ddf421ff02b91.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/70045.26bda4b8e6ab1a0aa19b.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/52383.bf433de8fa6b3aac0476.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/42095.f686e4f488530fbbe403.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/11532.d4c4f949da52642e1f21.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/27620.54ffdbfc931db6d9c58c.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/87.99b60378acd681b111f6.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/84591.e873ab76d35b2f14b7ad.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/72299.f30b03a3f17bcfc6a9d5.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/51533.acc29c3b86d4a623d54f.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/59990.64f7a8e0a9ee7c8dbb45.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/91218.5d9e924b40a0d8ce3803.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/43396.b1780c058f4a46b7ef20.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/16442.f0e7847c57d46778b9a7.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/86111.50cbb98f73d9569ff280.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/49475.38b0a38e4a84a7fac753.js" defer></script>
<script crossorigin="anonymous" src="/static/bundles/main_chart.a550d217f540a3be90da.js" defer></script>
<!-- { endblock personal_js_bundle } -->
<!-- { block additional_js_bundle } -->
<!-- { endblock additional_js_bundle } -->
<script nonce="q20PFDf/q0Oqoz4AQe1Mgw==">
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="q20PFDf/q0Oqoz4AQe1Mgw==">
(()=>{"use strict";"undefined"!=typeof window&&"undefined"!=typeof navigator&&/mac/i.test(navigator.platform)&&document.documentElement.classList.add("mac_os_system")})();
</script>
<script nonce="q20PFDf/q0Oqoz4AQe1Mgw==">var environment = "battle";
window.WS_HOST_PING_REQUIRED = true;
window.BUILD_TIME = "2024_08_08-14_01";
window.WEBSOCKET_HOST = "wp3.deno.dev";
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="q20PFDf/q0Oqoz4AQe1Mgw==">
(()=>{"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||(n=["android","android_nps"].includes(e)),o||(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+s.length),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="q20PFDf/q0Oqoz4AQe1Mgw==">// 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 = "";
window.TRADING_SERVER_LOGGER_URL = "https://trdlg.tradingview.com";
window.TRADING_REST_SERVER_URL = "https://rest-demo.tradingview.com/tradingview/v1";</script>
<script nonce="q20PFDf/q0Oqoz4AQe1Mgw==">var is_authenticated = false;
var user = {"username":"Guest","following":"0","followers":"0","ignore_list":[],"available_offers":{}};
window.initData.price_alerts_url = "https://alerts.tradingview.com/alerts/";
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': '/static/bundles/', 'TRADING_URL': 'https://papertrading.tradingview.com', 'TRADING_COMPETITION_ID': 'THE_LEAP_3'};
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 = [12321,12318,12315,12286,12268,12267,12199,12198,12195,12193,12155];
var shopConf = {
offers: [],
};
var featureToggleState = {"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,"tick_intervals":1.0,"multichart_replay":1.0,"enable_select_date_replay_mobile":1.0,"support_persistent_logs":1.0,"enable_step_by_step_hints_for_drawings":1.0,"allow_brackets_profit_loss":1.0,"order_context_validation_in_instant_mode":1.0,"internal_fullscreen_api":0.5,"alerts-send-extra-update":1.0,"alerts-use-http-caching":1.0,"self-replacing-advanced-chart-widget":1.0,"move_chart_news_to_streaming":1.0,"disable-calendar-advanced-chart-widget":1.0,"disable-lse-data-screener-heatmap-widgets":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-subscriptions":1.0,"checkout-tvcoins":1.0,"checkout-3ds":1.0,"razorpay-card-order-token-section":1.0,"razorpay-card-tvcoins":1.0,"razorpay-card-subscriptions":1.0,"razorpay-upi-tvcoins":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,"adwords-analytics":1.0,"minds_widget_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,"screener-alerts-read-only":1.0,"screener_enable_stock_custom_screens":1.0,"screener_enable_chart_view":1.0,"ses_tracking":1.0,"send_financial_notifications":1.0,"symbol_page_faq":1.0,"spark_translations":1.0,"spark_category_translations":1.0,"spark_tags_translations":1.0,"unsubscribe_inactive_users":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,"hide_tweet_drawingtool":1.0,"broker_ACTIVTRADES":1.0,"static_dom":1.0,"hide_ADMIRALS_on_ios":1.0,"hide_ADMIRALS_on_android":1.0,"hide_ADMIRALS_on_mobile_web":1.0,"ADMIRALS_beta":1.0,"broker_AFTERPRIME":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,"broker_BINANCE":1.0,"binance_disable_live_account_verification":1.0,"enable_binanceapis_base_url":1.0,"broker_BINGBON":1.0,"broker_BITGET":1.0,"broker_BITSTAMP":1.0,"broker_BLACKBULL":1.0,"broker_BLUELINE":1.0,"broker_BYBIT":1.0,"broker_CAPITALCOM":1.0,"broker_CFI":1.0,"broker_CITYINDEX":1.0,"cityindex_spreadbetting":1.0,"broker_COBRATRADING":1.0,"broker_COMPOSITEDGE":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_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_EIGHTCAP":1.0,"hide_ERRANTE_on_ios":1.0,"hide_ERRANTE_on_android":1.0,"hide_ERRANTE_on_mobile_web":1.0,"ERRANTE_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_GLOBALMENKUL_on_ios":1.0,"hide_GLOBALMENKUL_on_android":1.0,"hide_GLOBALMENKUL_on_mobile_web":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_HERENYA":1.0,"hide_HERENYA_on_ios":1.0,"hide_HERENYA_on_android":1.0,"hide_HERENYA_on_mobile_web":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,"hide_IG_on_ios":1.0,"hide_IG_on_android":1.0,"hide_IG_on_mobile_web":1.0,"IG_beta":1.0,"broker_INFOYATIRIM":1.0,"broker_INNOVESTX":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,"hide_MOCKBROKER_on_ios":1.0,"hide_MOCKBROKER_on_android":1.0,"hide_MOCKBROKER_on_mobile_web":1.0,"broker_MOOMOO":1.0,"hide_MOOMOO_on_ios":1.0,"hide_MOOMOO_on_android":1.0,"hide_MOOMOO_on_mobile_web":1.0,"broker_MOTILALOSWAL":1.0,"broker_OANDA":1.0,"OANDA_beta":1.0,"oanda_rest_api":1.0,"launch-oanda-country-group-1":1.0,"launch-oanda-country-group-2":0.8,"broker_OKX":1.0,"broker_OPTIMUS":1.0,"broker_OSMANLI":1.0,"paper_force_connect_pushstream":1.0,"paper_use_new_auth":1.0,"broker_PEPPERSTONE":1.0,"broker_PAYTM":1.0,"broker_PHEMEX":1.0,"broker_PHILLIPCAPITAL_TR":1.0,"hide_PHILLIPCAPITAL_TR_on_ios":1.0,"hide_PHILLIPCAPITAL_TR_on_android":1.0,"hide_PHILLIPCAPITAL_TR_on_mobile_web":1.0,"PHILLIPCAPITAL_TR_beta":1.0,"broker_PHILLIPNOVA":1.0,"broker_QUESTRADE":1.0,"hide_QUESTRADE_on_ios":1.0,"hide_QUESTRADE_on_android":1.0,"hide_QUESTRADE_on_mobile_web":1.0,"broker_ROBOMARKETS":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,"broker_STONEX":1.0,"broker_THINKMARKETS":1.0,"hide_THINKMARKETS_on_ios":1.0,"hide_THINKMARKETS_on_android":1.0,"hide_THINKMARKETS_on_mobile_web":1.0,"broker_TICKMILL":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_TRADENATION_on_ios":1.0,"hide_TRADENATION_on_android":1.0,"hide_TRADENATION_on_mobile_web":1.0,"broker_TRADESTATION":1.0,"tradestation_request_server_logger":1.0,"broker_TRADIER":1.0,"broker_TRADOVATE":1.0,"broker_VANTAGE":1.0,"hide_VANTAGE_on_ios":1.0,"hide_VANTAGE_on_android":1.0,"hide_VANTAGE_on_mobile_web":1.0,"broker_VELOCITY":1.0,"broker_WEBULL":1.0,"broker_WHITEBIT":1.0,"broker_WHSELFINVEST":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,"paper_competition_banner":1.0,"paper_competition_started_dialog":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,"force_max_allowed_pulling_intervals":1.0,"unsubscribe_competition_for_participants":1.0,"paper_delay_trading":1.0,"enable_first_touch_is_selection":1.0,"enable_order_moving_by_price_line":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,"tvd_app_quit_win32":1.0,"notify_idea_mods_about_first_publication":1.0,"hide_find_in_header":1.0,"new_errors_flow":1.0,"enable_diff_decorations":1.0,"disable_pine_v4":1.0,"enable_profiler":1.0,"symbol_search_country_sources":1.0,"symbol_search_bond_type_filter":1.0,"watchlists_dialog_scroll_to_active":1.0,"snowplow_3":0.1,"bottom_panel_track_events":1.0,"careers_toast":1.0,"show_data_problems_in_help_center":1.0,"enable_apple_device_check":1.0,"stack_trace_clickable":1.0,"enable_push_notifications_android":1.0,"enable_push_notifications_ios":1.0,"enable_manticore_cluster":1.0,"hide_ca_us_isin":1.0,"enable_toggle_streams_rtmp_url":1.0,"options_strategy_analyzer_tab":1.0,"options_details_widget":1.0,"options_overlay":1.0,"options_product_page":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,"new_fcm_client_for_alerts":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,"tvd_delete_layout":1.0,"compress_cache_data":1.0,"enable_notifications_center_in_user_menu":1.0,"news_enable_streaming":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,"vpsession_chart_type":1.0,"do_not_disclose_phone_occupancy":1.0,"unsubscribe_competition":1.0,"enable_redirect_to_widget_documentation_of_any_localization":1.0,"profile_message_button_opens_chat":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,"tvd_new_product_tab":1.0,"enable_idea_multichart_selector_on_publish":1.0,"enable_forced_email_confirmation":1.0,"address_validation_enabled":1.0,"enable_toast_notifications_groupable":1.0,"move_hotlists_to_watchlist_dialog":1.0,"show_summary_over_the_chart":1.0,"vertex_v2_enabled":1.0};</script>
<script nonce="q20PFDf/q0Oqoz4AQe1Mgw==">
window.initData = window.initData || {};
window.initData.snowplowSettings = {
collectorId: 'tv_cf',
url: 'snowplow-pixel.tradingview.com',
params: {
appId: 'tradingview',
},
enabled: true,
}
</script>
<script nonce="q20PFDf/q0Oqoz4AQe1Mgw==">
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.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","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":"MOEX","ro":"BVB","ar_AE":"TADAWUL","sv_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 = 18;
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>\n<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="/static/images/favicon.ico">
<meta name="application-name" content="TradingView" />
<meta name="format-detection" content="telephone=no" />
<link rel="manifest" href="/static/images/favicon/manifest.json" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#F8F9FD">
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1E222D">
<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="/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="sv_SE" href="https://se.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="/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="q20PFDf/q0Oqoz4AQe1Mgw==">window.fbAppId = "155037361239837";</script>
<script nonce="q20PFDf/q0Oqoz4AQe1Mgw==">window.BLOG_LOCALIZED_URL = "https://www.tradingview.com/blog/en/";
initData.idc_exchanges_list = ["dfm","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>
<script type="speculationrules" nonce="q20PFDf/q0Oqoz4AQe1Mgw==">{
"prerender": [
{"source": "document", "where": {"href_matches": "/chart{/}?"}, "eagerness": "conservative"}
]
}</script>
<meta name="tv:server-name" content="prod-frontend-web-b-7" />
<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>