Files
ai/charting_library/static/bundles/2.351f06db7c9bd8e2a0f1.js
Jenkins c242bf7430 %K and %D should be swapped in Stochastic RSI #1024
Blank chart when tabbing (Mac OSX) #1015
Study Template drop down error #1013
Double volume when loading study template #1012
Remove all studies breaks chart #1008
Rename Donchian Channels plot names #1006
Stochastic %K and %D should be swapped #982
Change brush tool default color #976
Send search requests with a delay #974
Unstable Version - Info indicator top right + event bubble #962
Compress language json #961
Intermittent issue loading complex charts #956
Label "closed" when market should be open #942
Pitchfork plots visibilities are not saved (unstable) #938
Unable to get 'Symbol Info '  option in chart... #936
Add more colors to the bar marks #914
custom_css_url doesn't work #912
Fibonacci retracements' custom levels not being saved #911
Volume added to mutichart layout even if not supported by a symbol #910
Marks are not requested in unstable 1.5 #909
Chart x-axis does not correctly reflect the data when market hours differ from normal #886
Position Line only visible on the top panel #880
Uncaught incorrect identifiers #871
Delete study template confirm message is not available to translate #863
Name escaped incorrectly on templates API call #855
MACD does not show all 3 lines as per the MACD theory #854
unstable: Cannot load chart with Moving Average Convergence/Divergence #853
Chart doesn't load after refreshing if saving with lock scale  #852
Problem with left_toolbar disabled feature #851
XSS vulnerability in demo code #847
Delay in firing onAutoSaveNeeded #846
Loading chart with the same symbol leads to request more and more data #841
Display timezones offset #838
Fetching bars with wrong local date #837
Screenshot dialog appearing #836
Source of Moving averages + MACD #828
Unable to set some style options on studies #798
Timescale marks displayed incorrectly when zoom in/out of chart #796
Volume is recreated when scrolling chart #792
Always show the last tick on the axis #780
Snapshot dialog copy button background is not fully filled #769
True Strength Indicator only shows short length #758
Create an event for crosshair moving #735
Loading chart Layout #720
Remove symbol compare #694
Advanced settings for Moving Average #676
Limit number of studies in the chart #649
Disable timezone #647
Critical bug | Drawing Objects in the empty space in front of the chart #562
Make chart do not request external resources #421
2016-04-01 05:34:58 -05:00

3 lines
81 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

webpackJsonp([2,4],{344:function(t,e,i){"use strict";var o=i(323),n=i(345),r=i(351),s=i(353),a=i(354),l=i(349),c=i(355),u=function(t){this._trading=t};u.prototype.id=function(){return"Paper"},u.prototype.trading=function(){return this._trading},u.prototype.createAccountManager=function(t){return new r(t,this)},u.prototype.connect=function(){this._connection=new n(this)},u.prototype.disconnect=function(){this._connection.disconnect(),delete this._connection},u.prototype.connection=function(){return this._connection||this.connect(),this._connection},u.prototype.registerChartWidget=function(t){return this.connection().registerChartWidget(t)},u.prototype.unregisterChartWidget=function(t){return this._connection.unregisterChartWidget(t)},u.prototype.createProfitLossEmitter=function(t){return this._connection.createProfitLossEmitter(t)},u.prototype.buttonDropdownOptions=function(t){var e=this,i="BP Trading Dropdown",n=e.connection().connectStatus()==o.CONNECTED,r=[];if(n){var e=this;r=[{title:$.t("Show Buy/Sell Panel"),icon:{image:"url('"+TradingView.wrapUrl("images/dialogs/checkbox.png")+"')",offset:e.trading().hideFloatingPanel.value()?"":"0 -16px"},action:function(){var t=e.trading().hideFloatingPanel.value();e.trading()._trackPaperEvent(i,"Show BS Panel",t?"Check":"Uncheck"),e.trading().hideFloatingPanel.setValue(!t)}},{title:$.t("Show Active Orders Only"),icon:{image:"url('"+TradingView.wrapUrl("images/dialogs/checkbox.png")+"')",offset:e.trading().hideCompletedOrders.value()?"0 -16px":""},action:function(){var t=e.trading().hideCompletedOrders.value();e.trading()._trackPaperEvent(i,"Show Active Orders",t?"Uncheck":"Check"),e.trading().hideCompletedOrders.setValue(!t)}},{title:$.t("Journal..."),action:function(){e.trading()._trackPaperEvent(i,"Journal"),runOrSignIn(e.showJournalDialog.bind(e),{source:"Trading show journal"})}},{title:$.t("Account History..."),action:function(){e.trading()._trackPaperEvent(i,"Account History"),runOrSignIn(e.showAccountHistoryDialog.bind(e),{source:"Trading account history"})}},{separator:!0},{title:$.t("Reset Paper Trading Account..."),action:function(){e.trading()._trackPaperEvent(i,"Reset Account"),runOrSignIn(e._resetDialog.bind(e),{source:"Trading reset account"})}},{separator:!0},{title:$.t("Trading Properties..."),action:function(){e.trading()._trackPaperEvent(i,"Trading Properties"),e.trading().showTradingProperties()}},{separator:!0},{title:$.t("Disconnect"),action:function(){e.trading()._trackPaperEvent(i,"Disconnect"),e.connection().disconnect()}}]}else r=[{title:$.t("Connect"),action:function(){e.trading()._trackPaperEvent(i,"Connect"),e.connection().connect()}}];return TradingView.Q16("CQG")&&(r.push({separator:!0}),r.push({title:$.t("Select Broker"),action:function(){e.trading()._trackPaperEvent(i,"Select Broker"),e.trading().selectBroker()}})),r},u.prototype._resetDialog=function(){var t=this,e=$.t("Reset Paper Trading Account");_82.createModalDialog(e,{addClass:"paper-trading-reset"});var i=_82.modalDialog,o=i.find("._tv-dialog-content"),n=$('<div class="main">').appendTo(o);n.html('<p>Delete all your positions, orders and history and set balance to specific value.</p><p>This action cannot be undone.</p><p><label>Balance <input class="balance tv-text-input"></label></p>');var r=n.find(".balance");r.val("100000"),r.TVTicker({min:0,step:1e3}),r.focus(),r.select(),$('<div class="_tv-dialogs-bottom _tv-dialog-center"><input class="_tv-button wide ok" type="button" style="margin-right: 10px;" value="Reset"><input class="_tv-button wide cancel" type="button" value="Cancel"></div>').appendTo(o),o.find("input.cancel").on("click",function(){_82.destroy()}),o.find("input.ok").on("click",function(){var e=+r.val().trim();return!isFinite(e)||0>e?(r.val("100000"),r.focus(),void r.select()):(e||(e=void 0),t.connection().resetAccount(e),void _82.destroy())}),_82.applyHandlers(),_82.positionDialog()},u.prototype.showJournalDialog=function(){a.get(this).open({tab:"journal"})},u.prototype.showAccountHistoryDialog=function(){a.get(this).open({tab:"history"})},u.prototype.supportFloatingPanel=function(){return!0},u.prototype.getOrderDialog=function(){var t=this;return{open:function(e){return t.connection().connectStatus()!=o.CONNECTED?(t.trading().onOpenBottomWidgetBar.fire(),void t.trading().onNeedAttention.fire()):s.get(t).open(e)}}},u.prototype.getPositionDialog=function(){return l.get(this)},u.prototype.getUntradableDialog=function(){return c.get()},u.prototype.chartContextMenuActions=function(t,e){var i=this,o=NaN,n=NaN,r=1,s="",a="",l="",c=!1;if(t){a=t.proSymbol(),l=(t.symbolInfo()||{}).name||a;var u=t.priceScale();if(e){if(o=u.coordinateToPrice(e.localY),u.isPercentage()){var d=t.firstValue();o=void 0!==d?u.priceRange().convertFromPercent(o,d):null}s=t.formatter().format(o)}var p=t.bars().last();p&&(n=p.value[TradingView.CLOSE_PLOT]),c=!!(t.symbolInfo()||{}).is_tradable;var h=t.symbolInfo();r=i.connection().suggestedQty().value(a,{symbolType:h&&h.type})}var f=[];if(c)if(n>o){var _=new TradingView.Action({text:$.t("Buy ")+l+$.t(" Limit ")+TradingView.abbreviatedNumber(r)+" @ "+s,enabled:c});c&&_.callbacks().subscribe(null,function(){runOrSignIn(function(){i.getOrderDialog().open({symbol:a,price:+s||o,side:"buy",type:"limit",qty:r,noConfirm:!0})},{source:"Trading buy limit from context menu"})}),f.push(_);var _=new TradingView.Action({text:$.t("Sell ")+l+$.t(" Stop ")+TradingView.abbreviatedNumber(r)+" @ "+s,enabled:c});c&&_.callbacks().subscribe(null,function(){runOrSignIn(function(){i.getOrderDialog().open({symbol:a,price:+s||o,side:"sell",type:"stop",qty:r,noConfirm:!0})},{source:"Trading sell stop from context menu"})}),f.push(_)}else if(o>n){var _=new TradingView.Action({text:$.t("Sell ")+l+$.t(" Limit ")+TradingView.abbreviatedNumber(r)+" @ "+s,enabled:c});c&&_.callbacks().subscribe(null,function(){runOrSignIn(function(){i.getOrderDialog().open({symbol:a,price:+s||o,side:"sell",type:"limit",qty:r,noConfirm:!0})},{source:"Trading sell limit context menu"})}),f.push(_);var _=new TradingView.Action({text:$.t("Buy ")+l+$.t(" Stop ")+TradingView.abbreviatedNumber(r)+" @ "+s,enabled:c});c&&_.callbacks().subscribe(null,function(){runOrSignIn(function(){i.getOrderDialog().open({symbol:a,price:+s||o,side:"buy",type:"stop",qty:r,noConfirm:!0})},{source:"Trading buy stop context menu"})}),f.push(_)}var _=new TradingView.Action({text:$.t("Create New Order...")});_.callbacks().subscribe(null,function(){runOrSignIn(function(){c?i.getOrderDialog().open({qty:r,symbol:a,price:+s||o}):i.getUntradableDialog().open(a)},{source:"Trading new order from context menu"})}),f.push(_),f.push(new TradingView.ActionSeparator);var _=new TradingView.Action({text:$.t("Trading Properties...")});return _.callbacks().subscribe(null,function(){i.trading().showTradingProperties()}),f.push(_),f},u.prototype.isTVQuoteData=!0,u.prototype.getSymbolInfo=function(t){return $.Deferred().resolve({realtimeContractId:t,formatter:new TradingView.PriceFormatter})},t.exports=u},345:function(t,e,i){"use strict";var o=i(323),n=i(336),r=i(346),s=i(347),a=i(348),l=i(350).Connection,c=function(t){function e(){window.is_authenticated?i.connect():i.disconnect()}this._transport=new r,this._transport.setModel(this);var i=this;i._broker=t,i._accountInfo={},i._orders=[],i._positions=[],i._executions=[],i._journal=[],i._accountHistory=[],i._currencyRates={},i.onAccountInfoUpdate=new Delegate,i.onOrderUpdate=new Delegate,i.onPositionUpdate=new Delegate,i.onExecutionUpdate=new Delegate,i.onJournalUpdate=new Delegate,i.onAccountHistoryUpdate=new Delegate,i.onCurrencyRatesUpdate=new Delegate,i.onStatusChanged=new Delegate,i._chartWidgetControllers=[],i._OCOGroupsMap={},i._nextOCOCOlor=0,i._realtimeSubscriptions={},i._lastQuoteValues={},i._qtyPrefix=n.QTY,TVXWindowEvents.on("trading-reset-account",function(t){i._onResetAccount(JSON.parse(t))}),loginStateChange.subscribe(null,e),e()};c.prototype._OCOCOlors=["#FF00FF","#008F8F"],c.prototype.GetOCOColor=function(t){if(!t.oco)return"#404040";if(this._OCOGroupsMap[t.oco])return this._OCOGroupsMap[t.oco];var e=this._nextOCOCOlor%this._OCOCOlors.length;this._nextOCOCOlor++;var i=this._OCOCOlors[e];return this._OCOGroupsMap[t.oco]=i,i},c.prototype.positions=function(){return this._positions},c.prototype.orders=function(){return this._orders},c.prototype.ordersBySymbol=function(t){var e=t;return this._orders.filter(function(t){return t.symbol==e})},c.prototype.getOrder=function(t){return this._orders.filter(function(e){return e.id==t})[0]},c.prototype.positionsBySymbol=function(t){var e=t;return this._positions.filter(function(t){return t.symbol==e})},c.prototype.executionsBySymbol=function(t){var e=t;return this._executions.filter(function(t){return t.symbol==e})},c.prototype.registerChartWidget=function(t){var e=new a(t,this._broker);this._chartWidgetControllers.push(e);var i=this,n=function(){if(i.connectStatus()==o.CONNECTED){var t=e.symbol();i.executionsBySymbol(t).length||i.requestExecutions(t),e.resetContent(i.ordersBySymbol(t),i.positionsBySymbol(t)[0],i.executionsBySymbol(t))}},r=t.model().mainSeries();r.onSymbolResolved().subscribe(null,n),r.onSymbolError().subscribe(null,n)},c.prototype.unregisterChartWidget=function(t){if(this._chartWidgetControllers.length){var e=this._chartWidgetControllers.filter(function(e){return e.Q2==t})[0];e.resetContent([],null,[]),this._chartWidgetControllers=this._chartWidgetControllers.filter(function(e){return e.Q2!=t})}},c.prototype.resetAllChartWidgets=function(){var t=this;this._chartWidgetControllers.forEach(function(e){var i=e.symbol();e.resetContent(t.ordersBySymbol(i),t.positionsBySymbol(i)[0],t.executionsBySymbol(i))})},c.prototype.connect=function(t){this._transport.connect(t)},c.prototype.disconnect=function(){this._transport.disconnect(),Object.keys(this._realtimeSubscriptions).forEach(function(t){quoteSessionMultiplexerInstance.full.unsubscribe("paper-trading-connection",t)})},c.prototype.onStatus=function(t){var e=this;t==o.CONNECTED?(this.requestAccountInfo().done(function(){e._setAccountInfo(e._accountInfo)}),this.requestCurrencyRates()):(this._accountInfo={},this._orders=[],this._positions=[],this._executions=[],this._journal=[],this._accountHistory=[],this._currencyRates={},delete this._currencyRatesSubscribed,delete this._accountInfoLoaded,this.resetAllChartWidgets()),this.onStatusChanged.fire({status:this.connectStatus()})},c.prototype.connectStatus=function(){return this._transport.connectStatus()},c.prototype._setAccountInfo=function(t){this._accountInfo=t,this.onAccountInfoUpdate.fire(this._accountInfo)},c.prototype.mergeAccountInfo=function(t){this._setAccountInfo(TradingView.merge(this._accountInfo||{},t))},c.prototype.mergeOrder=function(t){var e=this._orders.filter(function(e){return e.id==t.id})[0];e?(delete e.tp,delete e.sl,TradingView.merge(e,t),t=e):this._orders.push(t),this._chartWidgetControllers.forEach(function(e){e.symbol()==t.symbol&&e.onOrderUpdate(t)}),this.onOrderUpdate.fire(t)},c.prototype.mergePosition=function(t){var e=this._positions.filter(function(e){return e.symbol==t.symbol})[0];e?(delete e.tp,delete e.sl,e=$.extend(e,t),t=e):this._positions.push(t),this._positions=this._positions.filter(function(t){return t.qty}),this._chartWidgetControllers.forEach(function(e){e.symbol()==t.symbol&&e.onPositionUpdate(t)}),this.onPositionUpdate.fire(t)},c.prototype.addExecution=function(t){this._executions.push(t),this._chartWidgetControllers.forEach(function(e){e.symbol()==t.symbol&&e.onExecutionUpdate(t)}),this.onExecutionUpdate.fire(t)},c.prototype.addJournal=function(t){this._journal.push(t),this.onJournalUpdate.fire()},c.prototype.journalEntryExists=function(t){return this._journal.some(function(e){return e.id===t})},c.prototype.prependJournal=function(t){for(var e=this._journal,i=0,o=0;o<t.length;o++){var n=t[o],r=n.id;null!=r&&this.journalEntryExists(r)||(i++,e.unshift(n))}return i&&this.onJournalUpdate.fire(),i},c.prototype.addAccountHistory=function(t){this._accountHistory.push(t),this.onAccountHistoryUpdate.fire()},c.prototype.accountHistoryEntryExists=function(t){return this._accountHistory.some(function(e){return e.id===t})},c.prototype.prependAccountHistory=function(t){for(var e=this._accountHistory,i=0,o=0;o<t.length;o++){var n=t[o],r=n.id;null!=r&&this.accountHistoryEntryExists(r)||(i++,e.unshift(n))}return i&&this.onAccountHistoryUpdate.fire(),i},c.prototype._accountInfoLoaded=!1,c.prototype.requestCurrencyRates=function(){if(!this._currencyRatesSubscribed&&"undefined"!=typeof is_authenticated&&is_authenticated){var t=this;this._transport.requestCurrencyRates().done(function(e){e.forEach(function(e){t.updateCurrencyRates(e.p||e)})}),this._currencyRatesSubscribed=!0}},c.prototype.requestAccountInfo=function(){if("undefined"==typeof user||!is_authenticated)return delete this._accountInfoDfd,$.Deferred().reject().promise();if(this._accountInfoLoaded)return $.Deferred().resolve();if(this._accountInfoDfd)return this._accountInfoDfd.promise();var t=this,e=$.Deferred();return this._accountInfoDfd=e,this._transport.requestAccountInfo().done(function(i){t._accountInfo=i.account,t._orders=[];for(var o=0;o<(i.orders||[]).length;o++)t.mergeOrder(i.orders[o]);t._positions=[];for(var o=0;o<(i.positions||[]).length;o++)t.mergePosition(i.positions[o]);t._executions=[];for(var o=0;o<(i.trades||[]).length;o++)t.addExecution(i.trades[o]);t._accountInfoLoaded=!0,e.resolve()}).fail(function(t){e.reject(t)}).always(function(){delete t._accountInfoDfd}),e.promise()},c.prototype.requestJournal=function(t,e){var i=$.Deferred(),o=this;return this._transport.requestJournal(t,e).done(function(t){var e=o.prependJournal(t);i.resolve(e)}).fail(function(t){i.reject(t)}),i.promise()},c.prototype.requestAccountHistory=function(t,e){var i=$.Deferred(),o=this;return this._transport.requestAccountHistory(t,e).done(function(t){var e=o.prependAccountHistory(t);i.resolve(e)}).fail(function(t){i.reject(t)}),i.promise()},c.prototype.requestExecutions=function(t){var e=$.Deferred(),i=this;return this._transport.requestExecutions(t).done(function(t){t.forEach(function(t){i.addExecution(t)})}).fail(function(t){e.reject(t)}),e.promise()},c.prototype.resetAccount=function(t){var e=this,i=$.Deferred();return this._transport.resetAccount({balance:t}).done(function(t){e._onResetAccount(t),i.resolve(),TVXWindowEvents.emit("trading-reset-account",JSON.stringify(t))}).fail(function(t){i.reject(t)}),i.promise()},c.prototype._onResetAccount=function(t){for(var e=this._positions.length;e--;)this.mergePosition({account:this._positions[e].account,symbol:this._positions[e].symbol,qty:0,side:"empty"});for(var e=this._orders.length;e--;)this.mergeOrder({qty:0,account:this._orders[e].account,id:this._orders[e].id,status:void 0});this._orders=[];for(var e=(t.orders||[]).length;e--;)this.mergeOrder(t.orders[e]);this._positions=[];for(var e=(t.positions||[]).length;e--;)this.mergePosition(t.positions[e]);this._executions=[];for(var e=(t.executions||[]).length;e--;)this.addExecution(t.executions[e]);this.mergeAccountInfo(t.account),this._journal=t.journal||[],this.onJournalUpdate.fire(),this._accountHistory=t.accountHistory||[],this.onAccountHistoryUpdate.fire(),this.resetAllChartWidgets()},c.prototype.placeOrder=function(t,e,i,o,n,r,s,a){return this._transport.placeOrder(t,e,i,o,n,r,s,a)},c.prototype.modifyOrder=function(t,e,i,o,n,r){var s=($.Deferred(),this._orders.filter(function(e){return e.id==t})[0]);return this._transport.modifyOrder(s,e,i,o,n,r)},c.prototype.cancelOrder=function(t){return this._transport.cancelOrder(t)},c.prototype.closePosition=function(t){return this._transport.closePosition(t)},c.prototype.reversePosition=function(t){return this._transport.reversePosition(t)},c.prototype.modifyPosition=function(t,e,i){return this._transport.modifyPosition(t,e,i)},c.prototype.updateCurrencyRates=function(t){this._currencyRates[t.symbol||t.currency]=t.rate||t.price,this.onCurrencyRatesUpdate.fire(this._currencyRates)},c.prototype.accountInfo=function(){return this._accountInfo},c.prototype.orders=function(){return this._orders},c.prototype.positions=function(){return this._positions},c.prototype.positions=function(){return this._positions},c.prototype.executions=function(){return this._executions},c.prototype.journal=function(){return this._journal},c.prototype.accountHistory=function(){return this._accountHistory},c.prototype.realtimeProvider=function(){return this._transport.realtimeProvider()},c.prototype.currencyRate=function(t){return this._currencyRates[t]},c.prototype.createProfitLossEmitter=function(t){var e=this._positions.filter(function(e){return e.symbol===t})[0]||{symbol:t};return new s(this,e)},c.prototype.suggestedQty=function(){return l.prototype.suggestedQty.call(this)},c.prototype.subscribeRealtime=function(t,e){return l.prototype.subscribeRealtime.call(this,t,e)},c.prototype.unsubscribeRealtime=function(t,e){return l.prototype.unsubscribeRealtime.call(this,t,e)},t.exports=c},346:function(t,e,i){"use strict";var o=i(323),n=[o.ERROR,o.CONNECTING,o.CONNECTED,o.DISCONNECT],r=function(){this._messageHandler=this._onMessage.bind(this),this._statusHandler=this._onStatus.bind(this),this._manuallyDisconnected=!0};r.prototype.setModel=function(t){this.W98=t},r.prototype.URL_PREFIX="/trading/",r.prototype.send=function(t,e){var i=$.Deferred(),o=this,n=function(n){$.ajax({url:o.URL_PREFIX+t+"/",type:"POST",data:JSON.stringify(e),success:function(t){t||(t={}),t.error?i.reject({type:"server_error",data:t}):i.resolve(t)},error:function(t,e,o){423==t.status?r(n+1,e,t.responseText):i.reject({type:e,content:t.responseText})}})};n(0);var r=function(t,e,r){var s=[10,30,60,120,120,300,300,600,600];t>s.length?i.reject({type:e,content:r}):o._timeoutId=setTimeout(function(){n(t)},1e3*s[t-1])};return i},r.prototype._onStatus=function(t){this._status=t,this.W98.onStatus(this.connectStatus())},r.prototype.connectStatus=function(){return this._manuallyDisconnected||!window.is_authenticated?n[3]:n[this._status]},r.prototype.connect=function(t){this._manuallyDisconnected=!1,TradingView.pushStreamMultiplexer.on("trading",this._messageHandler),TradingView.pushStreamMultiplexer.onStatus(this._statusHandler);var e=this;this._status=TradingView.pushStreamMultiplexer.status(),TradingView.pushStreamMultiplexer.status()==PushStream.OPEN&&setTimeout(function(){e._onStatus(TradingView.pushStreamMultiplexer.status())},0),t&&TradingView.pushStreamMultiplexer.status()==PushStream.CLOSE&&TradingView.pushStreamMultiplexer.forceConnect()},r.prototype.disconnect=function(){if(this._manuallyDisconnected=!0,this._onStatus){this._timeoutId&&clearTimeout(this._timeoutId),TradingView.pushStreamMultiplexer.off("trading",this._messageHandler),TradingView.pushStreamMultiplexer.offStatus(this._statusHandler);var t=this;setTimeout(function(){t._onStatus(PushStream.CLOSED)},0)}},r.prototype.requestAccountInfo=function(){return this.send("account",{})},r.prototype.requestCurrencyRates=function(){return this.send("request_currency_rates",{})},r.prototype.resetAccount=function(t){return this.send("reset_account",t)},r.prototype.requestJournal=function(t,e){return this.send("get_journal",{start_date:t,records_count:e})},r.prototype.requestExecutions=function(t){return this.send("get_trades",{symbol:t})},r.prototype.requestAccountHistory=function(t,e){return this.send("get_account_history",{start_date:t,records_count:e})},r.prototype.placeOrder=function(t,e,i,o,n,r,s,a){var l=$.Deferred(),c={symbol:t,side:e,type:i,qty:o,price:n,sl:r,tp:s};a&&a.expiration&&(c.expiration=Math.round(a.expiration));var u=this;return this.send("place",c).done(function(a){a&&null!=a.id&&u.W98.mergeOrder({id:a.id,symbol:t,side:e,type:i,qty:o,price:n,sl:r,tp:s}),l.resolve(a)}).fail(function(t){l.reject(t)}),l.promise()},r.prototype.modifyOrder=function(t,e,i,o,n,r){var s=$.Deferred(),a={id:t.id};return null!=i&&(a.price=i),t.parent||(null!=o&&(a.sl=o),null!=n&&(a.tp=n),e&&(a.qty=e)),r&&r.expiration&&(a.expiration=Math.round(r.expiration)),this.send("modify",a).done(function(t){s.resolve(t)}).fail(function(t){s.reject(t)}),s.promise()},r.prototype.cancelOrder=function(t){var e=$.Deferred(),i={id:t};return this.send("cancel",i).done(function(t){e.resolve(t)}).fail(function(t){e.reject(t)}),e.promise()},r.prototype.closePosition=function(t){var e=$.Deferred(),i={symbol:t};return this.send("close_position",i).done(function(t){e.resolve(t)}).fail(function(t){e.reject(t)}),e.promise()},r.prototype.reversePosition=function(t){var e=$.Deferred(),i={symbol:t};return this.send("reverse",i).done(function(t){e.resolve(t)}).fail(function(t){e.reject(t)}),e.promise()},r.prototype.modifyPosition=function(t,e,i){var o=$.Deferred(),n={symbol:t,sl:e,tp:i};return this.send("modify_position",n).done(function(t){o.resolve(t)}).fail(function(t){o.reject(t)}),o.promise()},r.prototype._diagnoseIsTradable=function(t){var e=this._alreadyCheckedOrders[t.id];if(!e.is_tradable_processed){var i="paper_order_diagnose_"+TradingView.guid(),o=quoteSessionMultiplexerInstance.simple._quoteApi;e.is_tradable_processed=!0;var n=this,r=function(e,s){var a=n.W98.getOrder(t.id);if(!a)return void quoteSessionMultiplexerInstance.simple.unsubscribe(i);if("is_tradable"in e.values){if("pending"===a.status)return;if(!e.values.is_tradable&&("working"==a.status||"filled"==a.status||"inactive"==a.status)){var l={type:"is_tradable mismatch",sessionId:o._chartApi.sessionid,quoteSessionId:o._sessionid,symbol:a.symbol,orderId:a.id};TradingView.logNormalChart("Server executes non-tradable symbol. Symbol:"+a.symbol+" quoteSessionId: "+o._sessionid+" sessionId:"+o._chartApi.sessionid),_71.sendReport("paper_trading",l,!0,!0)}if(e.values.is_tradable&&("invalid"==a.status||"rejected"==a.status)&&5==a.misc.reject_status){var l={type:"is_tradable mismatch",sessionId:o._chartApi.sessionid,quoteSessionId:o._sessionid,symbol:a.symbol,orderId:a.id};TradingView.logNormalChart("Client placed non-tradable symbol. Symbol:"+a.symbol+" quoteSessionId: "+o._sessionid+" sessionId:"+o._chartApi.sessionid),_71.sendReport("paper_trading",l,!0,!0)}quoteSessionMultiplexerInstance.simple.unsubscribe(i,t.symbol,r)}};quoteSessionMultiplexerInstance.simple.subscribe(i,t.symbol,r)}},r.prototype._diagnoseMarketOrderFillPrice=function(t){var e=this._alreadyCheckedOrders[t.id];if(!e.last_price_processed&&"market"===t.type&&"filled"===t.status){e.last_price_processed=!0;var i="paper_order_diagnose_"+TradingView.guid(),o=quoteSessionMultiplexerInstance.simple._quoteApi,n=this,r=function(e,s){var a=n.W98.getOrder(t.id);if(!a)return void quoteSessionMultiplexerInstance.simple.unsubscribe(i);if("last_price"in e.values){var l=Math.abs(e.values.last_price-a.price),c=l/a.price;if(c>.02){var u={type:"market order unexpected price",symbol:a.symbol,orderPrice:a.price,quotePrice:e.values.last_price,sessionId:o._chartApi.sessionid,quoteSessionId:o._sessionid,orderId:a.id};TradingView.logNormalChart("Order unexpected price. Symbol:"+a.symbol+" quoteSessionId: "+u.quoteSessionId+" sessionId:"+u.sessionId+" order price:"+a.price+" last quote price:"+e.values.last_price),_71.sendReport("paper_trading",u,!0,!0)}quoteSessionMultiplexerInstance.simple.unsubscribe(i,t.symbol,r)}};quoteSessionMultiplexerInstance.simple.subscribe(i,t.symbol,r)}},r.prototype._diagnoseProblemOrder=function(t){this._alreadyCheckedOrders=this._alreadyCheckedOrders||{},this._alreadyCheckedOrders[t.id]=this._alreadyCheckedOrders[t.id]||{},this._diagnoseIsTradable(t),this._diagnoseMarketOrderFillPrice(t)},r.prototype._onMessage=function(t){var e=t.m,i=t.p;switch(TradingView.logDebugChart("TRADING. method:"+e+", data:"+JSON.stringify(i)),e){case"order_update":this.W98.mergeOrder(i),this._diagnoseProblemOrder(i);break;case"position_update":this.W98.mergePosition(i);break;case"execution_update":this.W98.addExecution(i);break;case"journal_update":this.W98.addJournal(i);break;case"balance_update":this.W98.mergeAccountInfo(i);break;case"account_change_update":this.W98.addAccountHistory(i);break;case"update_currency_rates":this.W98.updateCurrencyRates(i)}},r.prototype.realtimeProvider=function(){return quoteSessionMultiplexerInstance.simple},t.exports=r},347:function(t,e){"use strict";var i=function(t,e){var i=this._defaultCurrency;this._tradingModel=t,this._symbol=e.symbol,this._avg_price=+e.avg_price,this._qty=+e.qty||0;var o=null;if("forex"===e.symboltype){var n=/^(?:.*?:)?(\w{3})(\w{3})$/.exec(this._symbol);n&&(o=[n[1],n[2]])}o?o[0]===i?this._reverseCurrency=!0:o[1]===i?this._reverseCurrency=!1:this._currency=o[1]:e.currency&&(this._currency=e.currency),e.pointvalue&&(this._pointvalue=e.pointvalue),this.onValueChanged=new Delegate,this._qsmId="profit-loss-emitter"+Math.random();var r=this;this._boundQuoteListener=function(t,e){var i=!1;null!=e.values.last_price&&(r._last_price=e.values.last_price,i=!0),null==e.values.pricescale&&null==e.values.minmov&&null==e.values.fractional&&null==e.values.minmove2||null==t.values.pricescale||null==t.values.minmov||null==t.values.fractional||null==t.values.minmove2||(r._formatter=new TradingView.PriceFormatter(t.values.pricescale,t.values.minmov,t.values.fractional,t.values.minmove2),i=!0),i&&r._update()},this._boundPositionListener=function(t){t.symbol===r._symbol&&(r._qty=t.qty,r._avg_price=t.avg_price,r._update())},quoteSessionMultiplexerInstance.simple.subscribe(this._qsmId,this._symbol,this._boundQuoteListener),this._tradingModel.onPositionUpdate.subscribe(null,this._boundPositionListener)};i.prototype._tradingModel=null,i.prototype._symbol="",i.prototype._formatter=new TradingView.PriceFormatter,i.prototype._qty=0,i.prototype._avg_price=void 0,i.prototype._last_price=void 0,i.prototype._pointvalue=1,i.prototype._currency=i.prototype._defaultCurrency="USD",i.prototype._reverseCurrency=!1,i.prototype._update=function(){var t,e=(this._last_price-this._avg_price)*this._qty*this._pointvalue;if(t=this._qty<0?e:this._last_price*this._qty*this._pointvalue,this._currency!==this._defaultCurrency){var i=this._tradingModel.currencyRate(this._currency);e*=i,t*=i}if(this._reverseCurrency&&(e/=this._last_price,t/=this._last_price,t+=e),!isFinite(e))return this.value=NaN,void(this.formattedValue="");this.value=e;var o="";e>0&&(o="+"),this.formattedValue=o+e.toFixed(2),isFinite(t)?this.equity=t:this.equity=NaN,this.onValueChanged.fire(this)},i.prototype.onValueChanged=null,i.prototype.value=NaN,i.prototype.formattedValue="",i.prototype.equity=NaN,i.prototype.destroy=function(){quoteSessionMultiplexerInstance.simple.unsubscribe(this._qsmId,this._symbol),this._tradingModel.onPositionUpdate.unsubscribe(null,this._boundPositionListener)},t.exports=i},348:function(t,e,i){"use strict";var o=(i(349),function(t,e){this.Q2=t,this._broker=e,this._connection=e.connection(),this._orders={},this._executions={},this._position=null,this._formatter=new TradingView.PriceFormatter});o.prototype.redraw=function(){var t=this.Q2.model().model(),e=t.paneForSource(t.mainSeries());t.updatePane(e)},o.prototype.symbol=function(){return this.Q2.model().model().mainSeries().proSymbol()},o.prototype.orderSideColor=function(t,e){return"buy"==t.side?e?"rgba(64,148,232,.5)":"rgb(64,148,232)":e?"rgba(231,86,86,.5)":"rgb(231,86,86)"},o.prototype.orderTextColor=function(t,e){if(t.label){if("limit"==t.type)return e?"rgba(38,140,2,.5)":"rgb(38,140,2)";if("stop"==t.type)return e?"rgba(231,86,86,.5)":"rgb(231,86,86)"}return this.orderSideColor(t,e)},o.prototype.positionSideColor=function(t){return"buy"==t.side?"rgb(64,148,232)":"rgb(231,86,86)"},o.prototype.profitColor=function(t){return t>0?"rgb(38,140,2)":0>t?"rgb(231,86,86)":"rgb(100,100,100)"},o.prototype.orderText=function(t){if(t.label){if("stop"==t.type)return $.t("STOP LOSS");if("limit"==t.type)return $.t("PROFIT TRGT")}return(t.side+" "+t.type).toUpperCase()},o.prototype.executionText=function(t){var e=t.side+" "+t.qty+" @ "+this._formatter.format(t.price);return e.substr(0,1).toUpperCase()+e.substr(1).toLowerCase()},o.prototype.executionColor=function(t){return"buy"==t.side?"#4094e8":"#e75656"},o.prototype.onOrderUpdate=function(t){var e=this.Q2,i=t.id,o=this;if("pending"!==t.status&&"working"!==t.status&&"inactive"!==t.status)this._orders[i]&&(this._orders[i]._adapter.remove(),delete this._orders[i]);else{if(!this._orders[i]){var n=e.model().model(),r=n.paneForSource(e.model().model().mainSeries()),s=n.createLineTool(r,{price:t.price,index:0},"LineToolOrder");this._orders[i]=s}if(this._orders[i]){var a=this._orders[i]._adapter,l="working"!==t.status,c=this.orderSideColor(t,l);a.setPrice(t.price).setQuantity(t.qty).setText(this.orderText(t)).setQuantityBackgroundColor(c).setBodyTextColor(this.orderTextColor(t,l)).setBodyBorderColor(c).setQuantityBorderColor(c).setCancelButtonBorderColor(c).setCancelButtonIconColor(c).setLineColor(c).setQuantity(t.qty).onModify(function(){o._broker.getOrderDialog().open(t)}).onContextMenu(function(){var e=new TradingView.Action({text:$.t("Edit Order...")});e.callbacks().subscribe(null,function(){o._broker.getOrderDialog().open(t)});var i=new TradingView.Action({text:$.t("Cancel Order")});return i.callbacks().subscribe(null,function(){o._connection.cancelOrder(t.id)}),[e,i]}).onMove(function(e){var i=TradingView.clone(t),n=a.getPrice(),r=o._formatter.formatAsDecimal(n);i.price=+r||n,i.noConfirm=!0,o._broker.getOrderDialog().open(i).done(function(e){e||(a.setPrice(t.price),a._line.updateAllViews(),o.redraw())})}).onCancel(function(){o._connection.cancelOrder(t.id)}),this._orders[i].updateAllViews()}}this.redraw()},o.prototype.onPositionUpdate=function(t){var e=this.Q2,i=this;if(this._position&&"empty"==t.side&&(this._position._adapter.remove(),this._positionPL&&(this._positionPL.destroy(),this._positionPL=null),this._position=null),"empty"!=t.side){if(!this._position){var o=e.model().model(),n=o.paneForSource(e.model().model().mainSeries()),r=o.createLineTool(n,{price:t.avg_price,index:0},"LineToolPosition");this._position=r,r._adapter.onClose(function(){i._broker.getPositionDialog().closePositionDialog({symbol:i.symbol(),noConfirm:!0}).progress(function(){r._adapter.block()}).done(function(){r._adapter.unblock()}).fail(function(){r._adapter.unblock()})}).onReverse(function(){i._broker.getPositionDialog().reversePositionDialog({symbol:i.symbol(),noConfirm:!0}).progress(function(){r._adapter.block()}).done(function(){r._adapter.unblock()}).fail(function(){r._adapter.unblock()})})}var s=this.positionSideColor(t);if(this._position._adapter.setPrice(t.avg_price).setQuantity(t.qty).setQuantityBackgroundColor(s).setBodyBorderColor(s).setQuantityBorderColor(s).setReverseButtonBorderColor(s).setReverseButtonIconColor(s).setCloseButtonBorderColor(s).setCloseButtonIconColor(s).setLineColor(s).onModify(function(){i._broker.getPositionDialog().open(t)}).onContextMenu(function(){var e=new TradingView.Action({text:$.t("Edit Position...")});e.callbacks().subscribe(null,function(){i._broker.getPositionDialog().open(t)});var o=new TradingView.Action({text:$.t("Close Position")});o.callbacks().subscribe(null,function(){i._broker.getPositionDialog().closePositionDialog({symbol:t.symbol,noConfirm:!0})});var n=new TradingView.Action({text:$.t("Reverse Position")});return n.callbacks().subscribe(null,function(){i._broker.getPositionDialog().reversePositionDialog({symbol:t.symbol,noConfirm:!0})}),[e,o,n]}),!this._positionPL){this._positionPL=this._broker.createProfitLossEmitter(t.symbol);var a=this,l=this._position._adapter,c=function(t){l.setText(t.formattedValue).setBodyTextColor(a.profitColor(t.value)),a._position.updateAllViews(),a.redraw()};this._positionPL.onValueChanged.subscribe(null,c),c(this._positionPL)}this._position.updateAllViews(),this.redraw()}},o.prototype.onExecutionUpdate=function(t){var e=this.Q2,i=t.id,o=new Date(t.time),n=Math.round(o.valueOf()/1e3);
if(this._executions[i])this._executions[i]._adapter.setPrice(t.price);else{var r=e.model().model(),s=r.paneForSource(r.mainSeries()),a=r.createLineTool(s,{price:t.price,index:void 0},"LineToolExecution");this._executions[i]=a}var l=this.executionText(t);this._executions[i]._adapter.setTime(n),this._executions[i]._adapter.setPrice(t.price),this._executions[i]._adapter.setDirection(t.side),this._executions[i]._adapter.setTooltip(l),this._executions[i]._adapter.setArrowColor(this.executionColor(t)),this._executions[i].updateAllViews(),this.redraw()},o.prototype.resetContent=function(t,e,i){var o=this;this.symbol();this._positionQty=void 0,this._positionPrice=void 0,this._formatter=this.Q2.model().mainSeries().formatter();for(var n in this._orders)this._orders[n]._adapter.remove();this._orders={};for(var r in this._executions)this._executions[r]._adapter.remove();this._executions={},this._position&&(this._position._adapter.remove(),this._position=null),this._positionPL&&(this._positionPL.destroy(),this._positionPL=null),t.forEach(function(t){o.onOrderUpdate(t)}),e&&o.onPositionUpdate(e),i.forEach(function(t){o.onExecutionUpdate(t)})},t.exports=o},349:function(t,e){"use strict";function i(t){this._broker=t,this._connection=t.connection()}var o=null;i.get=function(t){return o||(o=new i(t)),o.setBroker(t)},i.prototype.setBroker=function(t){return this._broker=t,this},i.prototype.open=function n(t){function e(t){_82.destroy(r),l.resolve(!!t)}function i(t){13===t.keyCode&&(t.altKey||t.shiftKey||t.ctrlKey||t.isDefaultPrevented()||(t.preventDefault(),c()))}var o=this;this._params=$.extend({},n.defaults,t||{});var r=this.title(),s=_82.createDialog(r);s.addClass("trading-dialog");var a=s.find("._tv-dialog-content");a.html(n.TEMPLATE),$(n.TEMPLATE_HEADER).insertBefore(a),this.$dialog=s,this._initSlTp(),this._fillValues(),this._initTicker();var l=$.Deferred();this.$dialogPivot().find("button.modify").on("click",function(t){t.preventDefault(),o._modify(),e(!0)});var c=function(){o._modify(),e(!0)};return this.$dialogPivot().find("form").on("submit",function(t){t.preventDefault(),c()}),$(document.body).on("keydown.positiondialog",i),_82.applyHandlers(s),_82.makeDraggable(s.find("._tv-dialog")),_82.positionDialog(s),$(s).on("destroy",function(){this._subscribedSymbol&&quoteSessionMultiplexerInstance.simple.unsubscribe("position-dialog",this._subscribedSymbol),this._plSubscription&&this._plSubscription.destroy(),c=null,$(document.body).off("keydown.positiondialog",i)}.bind(this)),l},i.prototype.open.defaults={type:"market"},i.prototype.title=function(){var t=$.t("Position")+", ";if(this._params.side)switch(this._params.side){case"buy":t+=$.t("Long")+" ";break;case"sell":t+=$.t("Short")+" ";break;default:t+=$.t(this._params.side[0].toUpperCase()+this._params.side.slice(1))+" "}return t+=this._params.symbol},i.prototype.open.TEMPLATE_HEADER='<div class="ticker"><div class="description"><span class="symbol-desc"></span> <span class="last-small"></span> <span class="change-small"></span></div><span class="last"></span></div>',i.prototype.open.TEMPLATE='<form><div class="columns"><div class="column-left"><label class="field row field-tp"><span class="cell">'+$.t("Take Profit")+'</span> <input type="text"></label></div><div class="column-right"><label class="field row field-sl"><span class="cell">'+$.t("Stop Loss")+'</span> <input type="text"></label></div></div><div class="buttons"><button type="submit" class="modify">'+$.t("Modify")+"</button></div><form>",i.prototype.$dialogPivot=function(){return this.$dialog},i.prototype._initSpinboxes=function(t,e){var i=this,o=e/t;this.$dialogPivot().find(".field-tp input, .field-sl input").TVTicker({min:o,step:o}).on("tvticker-beforechange",function(){var t=$(this);0===+t.val()&&i._quoteData.last_price&&t.val(i._quoteData.last_price)})},i.prototype._initTicker=function(){function t(t){s.toggleClass("up",t.value>0).toggleClass("down",t.value<0).text(t.formattedValue)}var e=this;this._subscribedSymbol&&quoteSessionMultiplexerInstance.simple.unsubscribe("position-dialog",this._subscribedSymbol);var i=new TradingView.PriceFormatter;this._subscribedSymbol=this.symbol();var o=this.$dialog.find(".ticker .symbol-desc"),n=this.$dialog.find(".ticker .last-small"),r=this.$dialog.find(".ticker .change-small");this._params.qty,this._params.avg_price;e._quoteData={},quoteSessionMultiplexerInstance.simple.subscribe("position-dialog",this._subscribedSymbol,function(t,s){if(e._quoteData=t.values,null==s.values.pricescale&&null==s.values.minmov&&null==s.values.fractional&&null==s.values.minmove2||null==t.values.pricescale||null==t.values.minmov||null==t.values.fractional||null==t.values.minmove2||(i=new TradingView.PriceFormatter(t.values.pricescale,t.values.minmov,t.values.fractional,t.values.minmove2),e._initSpinboxes(t.values.pricescale,t.values.minmov)),"description"in s.values&&o.text(s.values.description),"last_price"in s.values&&n.text(i.format(s.values.last_price)),"change"in s.values||"change_percent"in s.values){var a=i.format(t.values.change)||"",l=t.values.change_percent||"",c=t.values.change||t.values.change_percent;c>0&&(r.addClass("up").removeClass("down"),a="+"+a,l="+"+l),0>c&&(r.addClass("down").removeClass("up"),a=(a+"").replace("-",""),l=(l+"").replace("-","")),r.text(a+" ("+l+"%)")}});var s=this.$dialog.find(".ticker .last");this._plSubscription=this._connection.createProfitLossEmitter(this._params.symbol),this._plSubscription.onValueChanged.subscribe(null,t),t(this._plSubscription)},i.prototype._initSlTp=function(){this._$sl=this.$dialogPivot().find(".field-sl input"),this._$tp=this.$dialogPivot().find(".field-tp input")},i.prototype.symbol=function(){return this._params.symbol},i.prototype.sl=function(t){return arguments.length>0&&this._$sl.val(t||""),t=this._$sl.val(),parseFloat(t)||void 0},i.prototype.tp=function(t){return arguments.length>0&&this._$tp.val(t||""),t=this._$tp.val(),parseFloat(t)||void 0},i.prototype._fillValues=function(){this.sl(this._params.sl),this.tp(this._params.tp)},i.prototype._modify=function(){this._connection.modifyPosition(this.symbol(),this.sl(),this.tp())},i.prototype._handleOrderUpdate=function(t){var e=this;if("filled"===t.status)return _82.destroy(),setTimeout(function(){e.res.resolve()},0),this._connection.onOrderUpdate.unsubscribe(this,this._handleOrderUpdate),!0;if("rejected"==t.status||"invalid"==t.status){var i=(t.misc||{}).reject_reason||"Order has beed rejected by internal reason";return _82.showError(i,_82.modalDialog),this.submitLock=!1,_82.modalDialog.find(".ok").removeClass("process"),setTimeout(function(){e.res.reject({reason:i})},0),this._connection.onOrderUpdate.unsubscribe(this,this._handleOrderUpdate),!0}return!1},i.prototype.closePositionDialog=function(t){function e(){function t(t){var e=t.id||t.order_id,o=i._connection.getOrder(e);o&&i._handleOrderUpdate(o)||i._connection.onOrderUpdate.subscribe(i,i._handleOrderUpdate)}i.submitLock||(n||_82.modalDialog.on("destroy",function(){n=!0,i._connection.onOrderUpdate.unsubscribe(i,i._handleOrderUpdate)}),i.res.notify({}),i._connection.closePosition(o).done(t).fail(function(t){var e=$.t("server failed to place closing order");_82.showError(e,_82.modalDialog),i.submitLock=!1,_82.modalDialog.find(".ok").removeClass("process"),i.res.reject()}),_82.modalDialog.find(".ok").addClass("process"),i.submitLock=!0)}t||(t={});var i=this,o=t.symbol;if(t.symbol){i.submitLock=!1;var n=!1;return i.res=$.Deferred(),t.noConfirm&&i._broker.trading().noConfirmEnabled&&i._broker.trading().noConfirmEnabled.value()?(i.res.notify({}),i._connection.closePosition(o).done(function(t){var e=t.id||t.order_id,t=i._connection.getOrder(e);t&&i._handleOrderUpdate(t)||i._connection.onOrderUpdate.subscribe(i,i._handleOrderUpdate)}).fail(function(t){i.res.reject()})):_82.showConfirm($.t("Close {0} position?").format(o),$.t("Are you sure you want to close {0} position?").format(o),e,null,{okButtonText:$.t("Close position").toUpperCase(),cancelButtonText:$.t("Cancel").toUpperCase(),manualClose:!0}),i.res.promise()}},i.prototype.reversePositionDialog=function(t){function e(){i.submitLock||(i.res.notify({}),i._connection.reversePosition(o).done(function(t){var e=t.id||t.order_id,t=i._connection.getOrder(e);t&&i._handleOrderUpdate(t)||i._connection.onOrderUpdate.subscribe(i,i._handleOrderUpdate)}).fail(function(t){var e=$.t("server failed to place closing order");_82.showError(e,_82.modalDialog),i.submitLock=!1,_82.modalDialog.find(".ok").removeClass("process")}),_82.modalDialog.find(".ok").addClass("process"),i.submitLock=!0)}t||(t={});var i=this,o=t.symbol;if(t.symbol){i.submitLock=!1;return i.res=$.Deferred(),t.noConfirm&&i._broker.trading().noConfirmEnabled&&i._broker.trading().noConfirmEnabled.value()?(i.res.notify({}),i._connection.reversePosition(o).done(function(t){var e=t.id||t.order_id,t=i._connection.getOrder(e);t&&i._handleOrderUpdate(t)||i._connection.onOrderUpdate.subscribe(i,i._handleOrderUpdate)}).fail(function(t){i.res.reject()})):_82.showConfirm($.t("Reverse {0} position?").format(o),$.t("Are you sure you want to reverse {0} position?").format(o),e,null,{okButtonText:$.t("Reverse position").toUpperCase(),cancelButtonText:$.t("Cancel").toUpperCase(),manualClose:!0}),i.res.promise()}},t.exports=i},351:function(t,e,i){(function(e){"use strict";var o=i(323),n=i(352).flick,r=i(352).runForTimes,s=function(t,e){this._broker=e,this._connection=e.connection(),this._bridge=t,this.$container=$(document.createElement("div")),this.$container.appendTo(t.$body),this.$container.css({position:"absolute",width:"100%"}),t.$body.find(".sb-inner-shadow, .sb-scrollbar-wrap").remove(),this._scroll=new _58(t.$body,this.$container),this.height=t.height,this.minimized=t.minimized,this.properties=t.properties;var i=this,n=function(){window.is_authenticated?i._connection.connectStatus()==o.CONNECTED?i._init(t):i._delete(s.prototype._showDisconnectedStub):i._delete(s.prototype._showAnonymousStub)};loginStateChange.subscribe(this,n),i._connection.onStatusChanged.subscribe(null,n),this._broker.trading().onNeedAttention.subscribe(this,this.drawAttention),n(),this.height.subscribe(function(){i._scroll.resize()}),this.minimized.subscribe(function(t){t||i._scroll.resize()})};s.prototype.remove=function(){this._bridge.$body.off("contextmenu",this._contextMenuHandler),this.$container.remove()},s.prototype._delete=function(t){this._initialized=!1,this.$container.empty();var e=this;(this._orders||[]).forEach(function(t){e._unsubscribeOrder(t)}),(this._positions||[]).forEach(function(t){e._unsubscribePosition(t)}),this._orders=[],this._ordersById={},this._positions=[],this._positionsBySymbol={},this._quotes={},t.call(this)},s.prototype._init=function(t){if(!this._initialized){this._initialized=!0;var e=this;(this._orders||[]).forEach(function(t){e._unsubscribeOrder(t)}),(this._positions||[]).forEach(function(t){e._unsubscribePosition(t)}),this._orders=[],this._ordersById={},this._positions=[],this._positionsBySymbol={},this._quotes={};var i=this._connection;this._prepareLayout(),this._$ordersTbody=this.$container.find("tbody.orders"),this._$positionsTbody=this.$container.find("tbody.positions"),this._$statusProfit=this.$container.find(".total-profit"),this._$statusBalance=this.$container.find(".total-balance"),this._$statusEquity=this.$container.find(".total-equity");var e=this;this._sortColumnIdx=TVSettings.getInt("paper.trading.sort.idx",this._sortColumnIdx),this._sortColumnAsc=TVSettings.getBool("paper.trading.sort.asc",this._sortColumnAsc),this.$container.find("thead th").each(function(t,i){e._columns[t]&&!e._columns[t].notSortable&&(i=$(i),t==e._sortColumnIdx&&i.find(".tv-data-table__sortable").addClass(e._sortColumnAsc?"tv-data-table__sortable--asc":"tv-data-table__sortable--desc"),i.find(".tv-data-table__sortable").on("click",function(i){i.preventDefault(),e.$container.find("thead .tv-data-table__sortable--desc, thead .tv-data-table__sortable--asc").removeClass("tv-data-table__sortable--asc tv-data-table__sortable--desc"),e._sortColumnIdx===t?e._sortColumnAsc=!e._sortColumnAsc:(e._sortColumnIdx=t,delete e._sortColumnAsc),$(this).addClass(e._sortColumnAsc?"tv-data-table__sortable--asc":"tv-data-table__sortable--desc"),TVSettings.setValue("paper.trading.sort.idx",e._sortColumnIdx),TVSettings.setValue("paper.trading.sort.asc",e._sortColumnAsc),e._sortView()}))});var n=function(t){e._connectStatus=t,t==o.CONNECTED?(e._updateBalance(),i.positions().forEach(function(t){e._updatePosition(t)}),i.orders().forEach(function(t){e._updateOrder(t)}),i.onAccountInfoUpdate.subscribe(null,function(){e._updateBalance()}),i.onOrderUpdate.subscribe(null,function(t){e._updateOrder(t)}),i.onPositionUpdate.subscribe(null,function(t){e._updatePosition(t)})):(TradingView.logDebug("Empty AM becasue of disconnect"),e._orders.forEach(function(t){e._unsubscribeOrder(t)}),e._orders=[],e._ordersById={},e._positions.forEach(function(t){e._unsubscribePosition(t)}),e._positions=[],e._positionsBySymbol={},e._$positionsTbody.empty(),e._$ordersTbody.empty(),e._$statusProfit.empty(),e._$statusBalance.empty(),e._$statusEquity.empty(),e._updatePositions(),e._updateOrders(),e._sortView())};i.onStatusChanged.subscribe(null,n),n(i.connectStatus()),_44.proSymbol.subscribe(function(t){for(var i=e._orders.length;i--;){var o=e._orders[i];$(o.rowElement).toggleClass("tv-data-table__stroke--active",(o.data&&o.data.symbol)===t)}for(var i=e._positions.length;i--;){var n=e._positions[i];$(n.rowElement).toggleClass("tv-data-table__stroke--active",(n.data&&n.data.symbol)===t)}}),_44.proSymbol.subscribe(function(){e.updateIsTradable()},{callWithLast:!0}),e._broker.trading().hideCompletedOrders.subscribe(function(t){e._$ordersTbody.find(".tv-data-table__stroke--grayed").toggleClass("tv-data-table__stroke--hide",!!t),e._scroll.resize()},{callWithLast:!0}),this._contextMenuHandler=this._onContextMenu.bind(this),t.$body.on("contextmenu",this._contextMenuHandler)}},s.prototype._sortColumnIdx=1,s.prototype._sortColumnAsc=!0,s.prototype._columns=[{label:$.t("Symbol"),className:"tv-data-table__cell--symbol-cell",orderProperty:"symbol",positionProperty:"symbol"},{label:$.t("Order"),className:"order",orderProperty:"id",positionProperty:void 0},{label:$.t("Type"),className:"type",orderProperty:"typeAndSide",positionProperty:"side"},{label:$.t("Qty"),className:"tv-data-table__cell--right-align volume",orderProperty:"qty",positionProperty:"qty"},{label:$.t("Avg Price"),className:"price",orderProperty:"price",positionProperty:"avg_price"},{label:$.t("Last"),className:"last",orderProperty:"formattedLast",positionProperty:"formattedLast"},{label:$.t("T/P"),className:"tp",orderProperty:"tp",positionProperty:"tp"},{label:$.t("S/L"),className:"sl",orderProperty:"sl",positionProperty:"sl"},{label:$.t("Profit"),className:"profit",orderProperty:"status",positionProperty:"formattedProfit"},{label:"",className:"tv-data-table__cell--buttons-cell",orderProperty:"orderCtls",positionProperty:"positionCtls",notSortable:!0}],s.prototype._getters={typeAndSide:function(t){return(t.side||"")+" "+(t.type||"")},orderCtls:function(t){return"pending"===t.status||"inactive"===t.status||"working"===t.status},positionCtls:function(t){return!!t.qty}},s.prototype._writers={typeAndSide:function(t,e,i){var o=document.createElement("span");o.textContent=t,"buy"===i.side?o.className="tv-data-table__blue-text":"sell"===i.side&&(o.className="tv-data-table__light-red-text"),e.innerHTML="",e.appendChild(o)},side:function(t,e,i){var o=document.createElement("span");"buy"===i.side?(o.className="tv-data-table__blue-text",o.textContent=$.t("long")):"sell"===i.side?(o.className="tv-data-table__light-red-text",o.textContent=$.t("short")):o.textContent=t,e.innerHTML="",e.appendChild(o)},formattedProfit:function(t,e,i){var o=$(e).find(".value");o.length||(o=$(document.createElement("span")).addClass("value").css("display","inline-block").appendTo(e)),o.text(t||"").toggleClass("tv-data-table__green-text",i.profit>0).toggleClass("tv-data-table__red-text",i.profit<0),o.css("min-width",o.width())},symbol:function(t,e,i){var o=document.createElement("span");o.className="symbol",o.textContent=t,$(e).empty(),$(o).appendTo(e).on("click",function(e){e.preventDefault(),_44.symbol.setValue(t)})},orderCtls:function(t,e,i){if($(e).empty(),t){var o=this,n=document.createElement("span");n.className="tv-data-table__button",n.title=$.t("Edit Order"),$(n).append(svgAsset("properties","12x12")),$(n).appendTo(e).on("click",function(t){t.preventDefault();var e=o._broker.connection().orders().filter(function(t){return t.id===i.id})[0];e&&o._broker.getOrderDialog().open(e)});var n=document.createElement("span");n.className="tv-data-table__button",n.title=$.t("Cancel Order"),$(n).append(svgAsset("close-cross","12x12")),$(n).appendTo(e).on("click",function(t){t.preventDefault(),o._broker.connection().cancelOrder(i.id)})}},positionCtls:function(t,e,i){if($(e).empty(),t){var o=this,n=document.createElement("span");n.className="tv-data-table__button",n.title=$.t("Edit Position"),$(n).append(svgAsset("properties","12x12")),$(n).appendTo(e).on("click",function(t){t.preventDefault();var e=o._broker.connection().positions().filter(function(t){return t.symbol===i.symbol})[0];e&&o._broker.getPositionDialog().open(e)});var n=document.createElement("span");n.className="tv-data-table__button",n.title=$.t("Close Position"),$(n).append(svgAsset("close-cross","12x12")),$(n).appendTo(e).on("click",function(t){t.preventDefault(),o._broker.getPositionDialog().closePositionDialog({symbol:i.symbol,noConfirm:!0})})}},formattedLast:function(t,e,i,o){return isFinite(i.last)?(o||(o={}),$(e).empty().append(s._highlightChange(i.formattedLast,o.formattedLast,i.last-o.last)),void(i.isForex&&$(e).lastCharSup())):void(e.textContent="")},status:function(t,e,i){var o=t;"pending"==t?o="placing":"working"==t&&(o="pending"),e.textContent=o},avg_price:function(t,e,i){e.textContent=+t.toFixed(6)}},s.prototype._createOrder=function(){var t=e.render(TradingView.templates.tvDataTableRow,{columns:this._columns});t=$(t);for(var i=[],o=0;o<t.children().length;o++)i.push(t.children()[o]);return{rowElement:t,cellElements:i,data:{}}},s.prototype._subscribeOrder=function(t,e){var i=this;t.qsmClient||(t.qsmClient="accountmanager."+TradingView.guid(),t.formatter=new TradingView.PriceFormatter,quoteSessionMultiplexerInstance.simple.subscribe(t.qsmClient,e,function(e,o){var n=!1;null==o.values.pricescale&&null==o.values.minmov&&null==o.values.fractional&&null==o.values.minmove2||null==e.values.pricescale||null==e.values.minmov||null==e.values.fractional||null==e.values.minmove2||(t.formatter=new TradingView.PriceFormatter(e.values.pricescale,e.values.minmov,e.values.fractional,e.values.minmove2),n=!0),null!=o.values.last_price&&(t.last=o.values.last_price,n=!0),null!=o.values.type&&(t.symbolType=o.values.type,n=!0),n&&i._updateOrder(t.data)}))},s.prototype._unsubscribeOrder=function(t){t.qsmClient&&t.data&&t.data.symbol&&(quoteSessionMultiplexerInstance.simple.unsubscribe(t.qsmClient,t.data.symbol),delete t.qsmClient)},s.prototype._updateOrders=function(){for(var t=this._connection.orders(),e=0;e<t.length;e++)this._updateOrder(t[e])},s.prototype._isOrderStatusActive=function(t){return"pending"===t||"inactive"===t||"working"===t},s.prototype._updateOrder=function(t){var e=this,i=TradingView.clone(t),o=this._ordersById[i.id];if(t.status){o||(o=this._createOrder(),$(o.rowElement).on("dblclick",function(t){var i=o.data.status;e._isOrderStatusActive(i)&&(t.isDefaultPrevented()||(t.preventDefault(),e._broker.getOrderDialog().open(o.data)))}),this._ordersById[i.id]=o,this._orders.push(o),this._$ordersTbody.prepend(o.rowElement),this._subscribeOrder(o,i.symbol)),i.last=o.last,i.formattedLast=o.formatter?o.formatter.format(o.last):o.last,i.isForex="forex"===o.symbolType;for(var n=0;n<this._columns.length;n++){var r=this._columns[n].orderProperty;r&&(this._getters[r]&&(i[r]=this._getters[r](i)),o.data&&o.data[r]===i[r]||(this._writers[r]?this._writers[r].call(this,i[r],o.cellElements[n],i,o.data):o.cellElements[n].textContent=i[r],$(o.cellElements[n]).addClass("tv-data-table__cell"),"symbol"===r&&$(o.rowElement).toggleClass("tv-data-table__stroke--active",_44.proSymbol.value()===i.symbol),"status"===r&&$(o.rowElement).toggleClass("tv-data-table__stroke--grayed",!this._isOrderStatusActive(i.status))))}o.data=i,!this._isOrderStatusActive(i.status)&&e._broker.trading().hideCompletedOrders.value()&&$(o.rowElement).addClass("tv-data-table__stroke--hide")}else if(o){this._unsubscribeOrder(o),o.rowElement.remove(),delete this._ordersById[i.id];var s=this._orders.indexOf(o);-1!==s&&(this._orders.splice(s,1),e._scroll.resize())}},s.prototype._createPosition=s.prototype._createOrder,s.prototype._subscribePosition=function(t,e){var i=this;t.pl||(t.pl=this._connection.createProfitLossEmitter(e),t.pl.onValueChanged.subscribe(null,function(e){i._updatePosition(t.data)})),t.qsmClient||(t.qsmClient="accountmanager."+TradingView.guid(),t.formatter=new TradingView.PriceFormatter,quoteSessionMultiplexerInstance.simple.subscribe(t.qsmClient,e,function(e,o){var n=!1;null==o.values.pricescale&&null==o.values.minmov&&null==o.values.fractional&&null==o.values.minmove2||null==e.values.pricescale||null==e.values.minmov||null==e.values.fractional||null==e.values.minmove2||(t.formatter=new TradingView.PriceFormatter(e.values.pricescale,e.values.minmov,e.values.fractional,e.values.minmove2),n=!0),null!=o.values.last_price&&(t.last=o.values.last_price,n=!0),null!=o.values.type&&(t.symbolType=o.values.type,n=!0),n&&i._updatePosition(t.data)}))},s.prototype._unsubscribePosition=function(t){t.pl&&(t.pl.destroy(),delete t.pl),t.qsmClient&&t.data&&t.data.symbol&&(quoteSessionMultiplexerInstance.simple.unsubscribe(t.qsmClient,t.data.symbol),delete t.qsmClient)},s.prototype._updatePositions=function(){for(var t=this._connection.positions(),e=0;e<t.length;e++)this._updatePosition(t[e])},s.prototype._updatePosition=function(t){var e=TradingView.clone(t),i=this._positionsBySymbol[e.symbol];if(!e.qty){if(i){i.data=e,this._unsubscribePosition(i);var o=this._positions.indexOf(i);-1!==o&&this._positions.splice(o,1),delete this._positionsBySymbol[e.symbol],$(i.rowElement).remove()}return void this._updateTotalProfit()}i||(i=this._createPosition(),this._positionsBySymbol[e.symbol]=i,this._positions.push(i),this._$positionsTbody.prepend(i.rowElement),this._scroll.resize(),$(i.rowElement).on("dblclick",function(t){i.data.qty;i.data.qty&&(t.isDefaultPrevented()||(t.preventDefault(),this._broker.getPositionDialog().open(i.data)))}),this._subscribePosition(i,e.symbol)),e.formattedProfit=i.pl.formattedValue,e.profit=i.pl.value,e.equity=i.pl.equity,e.last=i.last,e.formattedLast=i.formatter?i.formatter.format(i.last):i.last,e.isForex="forex"===i.symbolType;var n=i.data;i.data=e;for(var r=0;r<this._columns.length;r++){var s=this._columns[r].positionProperty;s&&(this._getters[s]&&(e[s]=this._getters[s](e)),n&&n[s]===e[s]||(this._writers[s]?this._writers[s].call(this,e[s],i.cellElements[r],e,n):i.cellElements[r].textContent=e[s],"symbol"===s&&$(i.rowElement).toggleClass("tv-data-table__stroke--active",_44.proSymbol.value()===e[s])))}this._sortView(),n.profit!==e.profit&&this._updateTotalProfit()},s.prototype._createSorter=function(t,e,i){var o=this;return function(n,r){var s=n.data[t]||"",a=r.data[t]||"";isNaN(+s)||isNaN(+a)||(s=+s,a=+a);var l=o._isOrderStatusActive(n.data.status),c=o._isOrderStatusActive(r.data.status),u=0;return l>c?u=-1:c>l?u=1:(u=s>a?1:a>s?-1:0,i&&(u=-u)),u||(s=n.data[e]||"",a=r.data[e]||"",u=a>s?1:s>a?-1:0),u}},s.prototype._sortView=function(){if(!this.is_sorted){var t=this._createSorter((this._columns[this._sortColumnIdx]||{}).orderProperty,"id",this._sortColumnAsc);this._orders.sort(t);var e=this._createSorter((this._columns[this._sortColumnIdx]||{}).positionProperty,"symbol",this._sortColumnAsc);this._positions.sort(e);for(var i=null,o=this._orders.length;o--;){var n=this._orders[o].rowElement;i&&i.before(n),i=n}for(var i=null,o=this._positions.length;o--;){var n=this._positions[o].rowElement;i&&i.before(n),i=n}}},s.prototype._updateTotalProfit=function(){for(var t=0,e=this._balance,i=this.$container.find(".tv-data-table__cell--status"),o=this._positions.length;o--;){var n=this._positions[o].pl||{};t+=n.value,e+=n.equity}isFinite(t)&&(this._$statusProfit.text((t>0?"+":"")+t.toFixed(2)),t>0?(i.removeClass("tv-data-table__cell--red-background"),i.addClass("tv-data-table__cell--blue-background")):0===t?(i.removeClass("tv-data-table__cell--red-background"),i.removeClass("tv-data-table__cell--blue-background")):(i.removeClass("tv-data-table__cell--blue-background"),i.addClass("tv-data-table__cell--red-background"))),isFinite(e)&&this._$statusEquity.text(e.toFixed(2))},s.prototype._updateBalance=function(){if(this._connection.accountInfo()){var t=+this._connection.accountInfo().balance;this._balance=t,t=null==t?"":t.toFixed(2),this._$statusBalance.text(t),this._updateTotalProfit()}},s.prototype._prepareLayout=function(){var t=e.render(TradingView.templates.tvDataTable,{columns:this._columns,className:"tv-data-table--trading-paper",bodys:[{className:"positions"},{className:"status",strokes:[{cells:[{className:"tv-data-table__cell--status",colspan:8,contain:'<dl class="status-stroke"><dt class="status-name">'+$.t("Balance:")+' </dt><dd class="status-value total-balance">...</dd><dt class="status-name">'+$.t("Equity:")+' </dt><dd class="status-value total-equity">...</dd></dl>'},{className:"tv-data-table__cell--status tv-data-table__cell--bold profit",contain:'<div class="status total-profit">0.00</div>'},{className:"tv-data-table__cell--status tv-data-table__cell--buttons-cell",contain:'<div class="status"></div>'}]}]},{className:"orders"}]});this.$container.html(t)},s.prototype._showAnonymousStub=function(){this.$container.html('<div class="market-table-anonymous-stub">'+$.t('<a class="signin">Sign in</a> or <a class="signup">sign up</a> to use paper trading')+"</div>"),this.$container.find(".signin").on("click",function(){_82.showSignInDialog(null,{source:"Trading account manager"})}),this.$container.find(".signup").on("click",function(){_82.showSignInDialog(null,{mode:"signup",source:"Trading account manager"})}),this._scroll.resize()},s.prototype._showDisconnectedStub=function(){this.$container.empty();var t=this,e=$("<div class='market-table-disconnected-stub'>").appendTo(this.$container);this._title=$("<div class='title'>"+$.t("Paper Trading is disconnected.")+"</div>").appendTo(e);var i=$("<button class='connect-button'>"+$.t("CONNECT")+"</button>").appendTo(e);i.click(function(){t._broker.connection().connect()}),this._broker.trading().availableBrokers().length>1&&$("<div>").addClass("select-broker").append($("<a>").text($.t("or choose another broker")).on("click",function(e){e.preventDefault(),t._broker.trading()._trackPaperEvent("BP Trading","Select Broker"),t._broker.trading().selectBroker(void 0)})).appendTo(e),this._scroll.resize()},s.prototype.drawAttention=function(){r(n,3,this._title,"color","black")},s.prototype._onContextMenu=function(t){if(!t.isDefaultPrevented()&&(t.preventDefault(),this._broker.connection().connectStatus()==o.CONNECTED)){for(var e="BP Trading Context Menu",i=this,n=this._currentSymbolIsTradable,r=$(t.srcElement||t.target).parents().andSelf(),s=null,a=null,l=this._positions.length;l--;)if(r.is(this._positions[l].rowElement)){s=this._positions[l].data;break}if(!s)for(var l=this._orders.length;l--;)r.is(this._orders[l].rowElement)&&(a=this._orders[l].data);var c=[],u=_44.proSymbol.value();if(s){var d=new TradingView.Action({text:$.t("Edit Position...")});d.callbacks().subscribe(null,function(){i._broker.getPositionDialog().open(s)}),c.push(d);var d=new TradingView.Action({text:$.t("Close Position")});d.callbacks().subscribe(null,function(){i._broker.getPositionDialog().closePositionDialog({symbol:s.symbol,noConfirm:!0})}),c.push(d);var d=new TradingView.Action({text:$.t("Reverse Position")});d.callbacks().subscribe(null,function(){i._broker.getPositionDialog().reversePositionDialog({symbol:s.symbol,noConfirm:!0})}),c.push(d),c.push(new TradingView.ActionSeparator),u=s.symbol}if(a){var p=i._isOrderStatusActive(a.status),d=new TradingView.Action({text:$.t("Edit Order..."),enabled:p});d.callbacks().subscribe(null,function(){i._broker.getOrderDialog().open(a)}),c.push(d);var d=new TradingView.Action({text:$.t("Cancel Order"),enabled:p});d.callbacks().subscribe(null,function(){i._connection.cancelOrder(a.id)}),c.push(d),c.push(new TradingView.ActionSeparator),u=a.symbol}var d=new TradingView.Action({text:$.t("Create New Order...")});if(d.callbacks().subscribe(null,function(){n?i._broker.getOrderDialog().open():i._broker.getUntradableDialog().open(u)}),c.push(d),a||s){var u=(a||s).symbol;c.push(new TradingView.ActionSeparator);var d=new TradingView.Action({text:$.t("Show Symbol Info"),checkable:!1});d.callbacks().subscribe(null,function(){var t={};if(i._bridge.Q4)for(var e=i._bridge.Q4.getAll(),o=0;o<e.length;o++)e[o].model().mainSeries().proSymbol()==u&&(t.symbolInfo=e[o].model().mainSeries().symbolInfo());TradingView.SymbolInfoDialog(u,t)}),c.push(d)}c.push(new TradingView.ActionSeparator);var d=new TradingView.Action({text:$.t("Show Active Orders Only"),checkable:!0,checked:i._broker.trading().hideCompletedOrders.value()});d.callbacks().subscribe(null,function(){i._broker.trading()._trackPaperEvent(e,"Show Active Orders"),i._broker.trading().hideCompletedOrders.setValue(!i._broker.trading().hideCompletedOrders.value())}),c.push(d);var d=new TradingView.Action({text:$.t("Show Buy/Sell Panel"),checkable:!0,checked:!i._broker.trading().hideFloatingPanel.value()});d.callbacks().subscribe(null,function(){i._broker.trading()._trackPaperEvent(e,"Show BS Panel"),i._broker.trading().hideFloatingPanel.setValue(!i._broker.trading().hideFloatingPanel.value())}),c.push(d);var d=new TradingView.Action({text:$.t("Journal...")});d.callbacks().subscribe(null,function(){i._broker.trading()._trackPaperEvent(e,"Journal"),i._broker.showJournalDialog()}),c.push(d);var d=new TradingView.Action({text:$.t("Account History...")});d.callbacks().subscribe(null,function(){i._broker.trading()._trackPaperEvent(e,"Account History"),i._broker.showAccountHistoryDialog()}),c.push(d),c.push(new TradingView.ActionSeparator);var d=new TradingView.Action({text:$.t("Trading properties...")});d.callbacks().subscribe(null,function(){i._broker.trading()._trackPaperEvent(e,"Trading Properties"),i._broker.trading().showTradingProperties()}),c.push(d),c.push(new TradingView.ActionSeparator);var d=new TradingView.Action({text:$.t("Disconnect")});d.callbacks().subscribe(null,function(){i._broker.trading()._trackPaperEvent(e,"Disconnect"),i._broker.connection().disconnect()}),c.push(d),TradingView.ContextMenu.createMenu(c).show(t)}},s.prototype._currentSymbolIsTradable=!1,s.prototype._unsubscribeSymbolIsTradable=function(){},s.prototype.updateIsTradable=function(){var t="bottom-trading-widget-is-tradable",e=this,i=_44.proSymbol.value();e._currentSymbolIsTradable=!1,e._unsubscribeSymbolIsTradable(),e._unsubscribeSymbolIsTradable=function(){delete e._unsubscribeSymbolIsTradable,quoteSessionMultiplexerInstance.simple.unsubscribe(t,i)},quoteSessionMultiplexerInstance.simple.subscribe(t,i,function(t,i){return"error"===t.status?void e._unsubscribeSymbolIsTradable():null!=t.values.is_tradable?(e._currentSymbolIsTradable=t.values.is_tradable,void e._unsubscribeSymbolIsTradable()):void 0})},s._highlightChange=function(t,e,i){if(!i)return $(document.createTextNode(t));var o,n=t+"",r=e+"";if(n.length==r.length){for(var s=0;s<n.length;s++)if(n.charAt(s)!==r.charAt(s)){
o=s;break}}else o=0;if(!isFinite(o))return $(document.createTextNode(n));var a=document.createTextNode(n.substr(0,o)),l=document.createElement("span");return l.className=0>i?"tv-data-table__red-text":"tv-data-table__green-text",l.appendChild(document.createTextNode(n.substr(o))),$(a).add(l)},t.exports=s}).call(e,i(29))},352:function(t,e,i){"use strict";var o=i(266)["default"];Object.defineProperty(e,"__esModule",{value:!0});var n=function(t,e,i){var n=arguments.length<=3||void 0===arguments[3]?300:arguments[3];return new o(function(o){t.css(e,i),setTimeout(function(){t.css(e,""),setTimeout(function(){o()},n)},n)})};e.flick=n;var r=function(t,e){for(var i=arguments.length,o=Array(i>2?i-2:0),n=2;i>n;n++)o[n-2]=arguments[n];var r=function s(t,i){i>e||t.apply(null,o).then(function(){s(t,++i)})};r(t,1)};e.runForTimes=r},353:function(t,e,i){(function(e){"use strict";function o(t){this._broker=t}var n=i(323),r=null;o.get=function(t){return r||(r=new o),r.setBroker(t)},o.prototype.setBroker=function(t){return this._broker=t,this},o.prototype.open=function s(t){function i(t){l._connection.onOrderUpdate.unsubscribe(null,f),h.resolve(!!t),_82.destroy(u),a=!1}function o(){l._validate()&&!a&&(a=!0,l._params.id?(l._modify(),i(!0)):!l._params.id&&l._params.side&&l._place(l._params.side).done(function(t){a=!1,_=t.id}))}function r(t){13===t.keyCode&&(t.altKey||t.shiftKey||t.ctrlKey||t.isDefaultPrevented()||(t.preventDefault(),o()))}this._connection=this._broker.connection();var a=!1;if(this._connection.connectStatus()!=n.CONNECTED)return this._broker.trading().onOpenBottomWidgetBar.fire(),void this._broker.trading().onNeedAttention.fire();var l=this;if(this._params=$.extend({},s.defaults,t||{}),this._params.symbol||(this._params.symbol=_44.proSymbol.value()),this._params.noConfirm){var c;if(c=t.id?this._modifyOrderNoConfirm(t):this._placeOrderNoConfirm(t))return $.Deferred().resolve(!0).promise()}this._params.qty||this._params.id||(this._params.qty=l._connection.suggestedQty().value(this._params.symbol),this._qtyUnknown=!0);var u=this.title(),d=_82.createDialog(u);d.addClass("trading-dialog");var p=d.find("._tv-dialog-content");p.html(e.render(s.TEMPLATE,{is_bracket:!!this._params.label})),$(s.TEMPLATE_HEADER).insertBefore(p),this.$dialog=d,this._initType(),this._initQty(),this._initPrice(),this._initSlTp(),this._initExp(),this._initMode(),this._fillValues(),this._initTicker();var h=$.Deferred(),f=function(t){if("working"!=t.status&&"filled"!=t.status||i(!0),"rejected"==t.status||"invalid"==t.status){var e=(t.misc||{}).reject_reason||"Order has beed rejected by internal reason";_82.showError(e,d),m.$dialogPivot().find("button.buy").removeClass("process"),m.$dialogPivot().find("button.sell").removeClass("process"),m.$dialogPivot().find("button.buy").removeClass("deselect"),m.$dialogPivot().find("button.sell").removeClass("deselect"),a=!1}},_=l._params.id;l._connection.onOrderUpdate.subscribe(null,f);var m=this;return"sell"!==this._params.side?this.$dialogPivot().find("button.buy").on("click",function(t){m.$dialogPivot().find("button.buy").addClass("process"),m.$dialogPivot().find("button.sell").addClass("deselect"),t.preventDefault(),l._validate()&&!a&&(a=!0,l._place("buy").done(f))}):this.$dialogPivot().find("button.buy").hide(),"buy"!==this._params.side?this.$dialogPivot().find("button.sell").on("click",function(t){m.$dialogPivot().find("button.sell").addClass("process"),m.$dialogPivot().find("button.buy").addClass("deselect"),t.preventDefault(),l._validate()&&!a&&(a=!0,l._place("sell").done(f))}):this.$dialogPivot().find("button.sell").hide(),this.$dialogPivot().find("button.modify").on("click",function(t){t.preventDefault(),l._validate()&&(l._modify(),i(!0))}),this.$dialogPivot().find("form").on("submit",function(t){t.preventDefault(),o()}),$(document.body).on("keydown.orderdialog",r),_82.applyHandlers(d),_82.makeDraggable(d.find("._tv-dialog")),_82.positionDialog(d),$(d).on("destroy",function(){this._subscribedSymbol&&l._connection.realtimeProvider().unsubscribe("order-dialog",this._subscribedSymbol),o=null,$(document.body).off("keydown.orderdialog",r),h.resolve(!1)}.bind(this)),h.promise()},o.prototype.open.defaults={type:"market"},o.prototype.title=function(){var t;return t=this._params.id?$.t("Order #")+this._params.id+", ":$.t("Place Order")+", ",this._params.side&&(t+=$.t(this._params.side[0].toUpperCase()+this._params.side.slice(1))+" "),t+=this._params.symbol},o.prototype.open.TEMPLATE_HEADER='<div class="ticker"><span class="description"></span><span class="last"></span><span class="change"></span></div>',o.prototype.open.TEMPLATE='<form action="javascript://"><div class="type-selector"><a class="stop">'+$.t("Stop")+'</a><a class="market">'+$.t("Market")+'</a><a class="limit">'+$.t("Limit")+'</a></div><div class="columns">{{^is_bracket}}<div class="column-left"><label class="field row field-qty"><span class="cell">'+$.t("Quantity")+'</span> <input type="text"></label><label class="field row field-tp"><span class="cell">'+$.t("Take Profit")+'</span> <input type="text"></label></div><div class="column-right"><label class="field row field-price"><span class="if-limit if-stop"><span class="cell">'+$.t("Price")+'</span> <input type="text"></span></label><label class="field row field-sl"><span class="cell">'+$.t("Stop Loss")+'</span> <input type="text"></label></div><div class="column-left"><div class="field row field-exp if-limit if-stop"><label><span class="cell">'+$.t("Expiration")+' </span> <span class="date-container"><input type="text" name="exp-date" maxlength="10"><i></i></span></label><label><span class="time-container"><input type="text" name="exp-time" maxlength="5"><i></i></span></label></div></div>{{/is_bracket}}{{#is_bracket}}<div class="column-left"><label class="field row field-price"><span class="if-limit if-stop"><span class="cell">'+$.t("Price")+'</span> <input type="text"></span></label></div>{{/is_bracket}}</div><input type="submit" style="display:none"></form><div class="buttons"><button type="submit" class="buy">'+$.t("Buy")+'</button><button type="submit" class="sell">'+$.t("Sell")+'</button><button type="submit" class="modify">'+$.t("Modify Order")+"</button></div>",o.prototype.$dialogPivot=function(){return this.$dialog},o.prototype._initSpinboxes=function(t,e,i){var o=this,n=e/t,r=function(t){var e=i.format(t);return e},s=function(t){var e=i.parse(t);if(e.res){var o=e.price;return o}};this.$dialogPivot().find(".field-price input, .field-tp input, .field-sl input").TVTicker({min:0,step:n,formatter:r,parser:s}).on("tvticker-beforechange",function(){var t=$(this);0===+t.val()&&o._quoteData.last_price&&t.val(o._quoteData.last_price)}),void 0!==this._params.price&&this.price(i.format(this._params.price)),void 0!==this._params.sl&&this.sl(i.format(this._params.sl)),void 0!==this._params.tp&&this.tp(i.format(this._params.tp))},o.prototype._initTicker=function(){var t=this;this._subscribedSymbol&&t._connection.realtimeProvider().unsubscribe("order-dialog",this._subscribedSymbol);var e=new TradingView.PriceFormatter;this._subscribedSymbol=this.symbol();var i=this.$dialog.find(".ticker .description"),o=this.$dialog.find(".ticker .last"),n=this.$dialog.find(".ticker .change");t._quoteData={},t._connection.realtimeProvider().subscribe("order-dialog",this._subscribedSymbol,function(r,s){if(t._quoteData=r.values,null==s.values.pricescale&&null==s.values.minmov&&null==s.values.fractional&&null==s.values.minmove2||null==r.values.pricescale||null==r.values.minmov||null==r.values.fractional||null==r.values.minmove2||(e=new TradingView.PriceFormatter(r.values.pricescale,r.values.minmov,r.values.fractional,r.values.minmove2),t._initSpinboxes(r.values.pricescale,r.values.minmov,e),t._formatter=e),null!=s.values.type&&t._qtyUnknown&&(t.qty(t._connection.suggestedQty().value(t.symbol(),{symbolType:s.values.type})),t._qtyUnknown=!1),null!=s.values.description&&i.text(s.values.description),null!=s.values.last_price&&(o.text(e.format(s.values.last_price)),"forex"===r.values.type&&o.lastCharSup()),null!=s.values.change||null!=s.values.change_percent){var a=e.format(r.values.change)||"",l=r.values.change_percent||"",c=r.values.change||r.values.change_percent;c>0&&(n.addClass("up").removeClass("down"),a="+"+a,l="+"+l),0>c&&(n.addClass("down").removeClass("up"),a=(a+"").replace("-",""),l=(l+"").replace("-","")),n.text(a+" ("+l+"%)")}})},o.prototype._initMode=function(){this._params.id?(this.$dialogPivot().find("button.close").hide(),this.$dialog.addClass("is-mode-modify"),this.$dialog.find("input").attr("disabled","disabled"),this.$dialog.find(".field-sl, .field-tp").find("input").attr("disabled",null),"filled"!=this._params.status&&this.$dialog.find(".field-qty, .field-price, .date-container, .time-container").find("input").attr("disabled",null)):this.$dialog.addClass("is-mode-place")},o.prototype.symbol=function(t){return this._params.symbol},o.prototype._initType=function(){var t=this,e=this._$type=this.$dialogPivot().find(".type-selector");this._params.id?e.addClass("disabled"):["stop","limit","market"].forEach(function(i){e.find("a."+i).on("click",function(o){o.preventDefault(),e.hasClass("disabled")||t.type(i)})}),this._params.type&&t.type(this._params.type)},o.prototype.type=function(t){return t&&(this.$dialogPivot().removeClass("is-"+this._type),this._type=t,this.$dialogPivot().addClass("is-"+this._type),this._$type.find("a").removeClass("active"),this._$type.find("a."+t).addClass("active")),this._type},o.prototype._initQty=function(){this._$qty=this.$dialogPivot().find(".field-qty input"),this._$qty.size()&&(this._$qty.TVTicker(),this._$qty.on("change",this._qtyRefresh.bind(this)))},o.prototype._qtyRefresh=function(){this.qty(this.qty())},o.prototype.qty=function(t){return this._$qty&&this._$qty.size()?(arguments.length>0&&this._$qty.val(t||""),t=this._$qty.val(),t=parseFloat(t),t=t&&t>0?t:void 0):this._params.qty},o.prototype._initPrice=function(){this._$price=this.$dialogPivot().find(".field-price input")},o.prototype.price=function(t){if(arguments.length>0)return void this._$price.val(t||"");t=this._$price.val();var e=this._formatter.parse(t);return e.res?e.price:void 0},o.prototype.side=function(){return this._params.side},o.prototype._initSlTp=function(){this._$sl=this.$dialogPivot().find(".field-sl input"),this._$tp=this.$dialogPivot().find(".field-tp input")},o.prototype._initExp=function(){var t=this;this._$expDate=this.$dialogPivot().find('.field-exp input[name="exp-date"]'),this._$expTime=this.$dialogPivot().find('.field-exp input[name="exp-time"]');var e=new Date;e.setMonth(e.getMonth()+3),this._$expDate.datepicker({dateFormat:"yy-mm-dd",minDate:new Date,maxDate:e,showOtherMonths:!0}),TradingView.makeInputDateOnly(this._$expDate),this._$expTime.clockpicker({autoclose:!0,donetext:"OK",afterShow:function(){var e=+t.$dialog.css("z-index")+1;isFinite(e)&&this.popover.css("z-index",e)}}),TradingView.makeInputTimeOnly(this._$expTime),this._$expDate.on("change",function(){t._validate()}),this._$expTime.on("change",function(){t._validate()})},o.prototype.sl=function(t){if(arguments.length>0)return void this._$sl.val(t||"");t=this._$sl.val();var e=this._formatter.parse(t);return e.res?e.price:void 0},o.prototype.tp=function(t){if(arguments.length>0)return void this._$tp.val(t||"");t=this._$tp.val();var e=this._formatter.parse(t);return e.res?e.price:void 0},o.prototype.exp=function(t){var e;return arguments.length>0&&(e=moment.unix(t),e.isValid()?(this._$expTime.val(e.format("HH:mm")),this._$expDate.val(e.format("YYYY-MM-DD"))):(this._$expTime.val(""),this._$expDate.val(""))),e=e||moment(this._$expDate.val()+" "+this._$expTime.val()),e.isValid()?e.unix():void 0},o.prototype._fillValues=function(){this.type(this._params.type),this.qty(this._params.qty||1);var t=new Date;t.setTime(t.getTime()+864e5);var e=t.valueOf()/1e3;this.exp(this._params.exp||e)},o.prototype._place=function(t){var e=this,i=this.toJSON();t&&(i.side=t);var o=e._connection.placeOrder(i.symbol,i.side,i.type,i.qty,i.price,i.sl,i.tp,{expiration:i.exp});return e._connection.suggestedQty().setValue(i.symbol,i.qty),o},o.prototype._modify=function(){var t=this,e=this.toModifyJSON();t._connection.modifyOrder(e.id,e.qty,e.price,e.sl,e.tp,{expiration:e.exp})},o.prototype.toJSON=function(){var t={symbol:this.symbol(),type:this.type(),side:this.side(),qty:this.qty(),sl:this.sl(),tp:this.tp()};return"market"!==t.type&&(t.price=this.price(),t.exp=this.exp()),t},o.prototype.toModifyJSON=function(){var t={id:this._params.id,qty:this.qty(),sl:this.sl(),tp:this.tp(),exp:this.exp()};return"market"!==this._params.type&&(t.price=this.price()),t},o.prototype._validate=function(){var t=!0;if("market"!==this.type()&&this._$expTime.size()&&this._$expDate.size()){var e=/^(\d+):(\d+)$/.exec(this._$expTime.val());e&&+e[1]<24&&+e[1]>=0&&+e[2]<60&&+e[2]>=0?this._$expTime.removeClass("invalid"):(this._$expTime.addClass("invalid"),t=!1);var i=/^(\d+)-(\d+)-(\d+)$/.exec(this._$expDate.val());i&&+i[2]<13&&+i[2]>0&&+i[3]<32&&+i[3]>0?this._$expDate.removeClass("invalid"):(this._$expDate.addClass("invalid"),t=!1);var o=new Date;o.setMonth(o.getMonth()+3);var n=1e3*this.exp();(n<new Date||n>o)&&(t=!1,this._$expDate.addClass("invalid"))}return t},o.prototype._placeOrderNoConfirm=function(t){var e=this;if(e._broker.trading().noConfirmEnabled&&e._broker.trading().noConfirmEnabled.value()&&!t.id&&t.side&&("market"==t.type||t.price)&&t.qty)return e._connection.placeOrder(t.symbol,t.side,t.type,t.qty,"market"===t.type?void 0:t.price,t.sl,t.tp),!0},o.prototype._modifyOrderNoConfirm=function(t){var e=this;if(e._broker.trading().noConfirmEnabled&&e._broker.trading().noConfirmEnabled.value()&&t.id)return e._connection.modifyOrder(t.id,t.qty,"market"===t.type?void 0:t.price,t.sl,t.tp),!0},t.exports=o}).call(e,i(29))},354:function(t,e){"use strict";function i(t){this._broker=t}var o=null;i.get=function(t){return o||(o=new i(t)),o.setBroker(t)},i.prototype.setBroker=function(t){return this._broker=t,this},i.prototype.open=function(t){function e(t){t?D.spin(S.get(0)):D.stop()}function i(t){I&&t?(I=!1,A.spin(v.get(0))):t?A.spin(q.get(0)):A.stop()}function o(){if(f){var t=50;b.prop("scrollHeight")-b.prop("clientHeight")-b.prop("scrollTop")<t&&n()}}function n(){return"journal"===C?r():"history"===C?s():void 0}function r(){if(!N&&!M&&f){var t,i=p.journal(),o=i.length;i.length&&(t=i[0].time),e(!0),M=p.requestJournal(t),M.done(function(){var t=p.journal();o>=t.length&&(N=!0)}).always(function(){M=null,e(!1)}).done(c)}}function s(){if(!L&&!B&&f){var t,e=p.accountHistory(),o=e.length;e.length&&(t=e[0].time),i(!0),B=p.requestAccountHistory(t),B.done(function(){var t=p.accountHistory();o>=t.length&&(L=!0)}).always(function(){B=null,i(!1)}).done(d)}}function a(){return"journal"===C?c():"history"===C?d():void 0}function l(t){var e=$(document.createElement("tr"));t.id&&e.attr("data-id",t.id);var i=$(document.createElement("th")).appendTo(e);return TradingView.agoDateFormatter(i,new Date(1e3*t.time),TradingView.agoDateFormatter.shortFormat),$(document.createElement("td")).text(t.msg||"").appendTo(e),e}function c(){var t=p.journal();w.toggle(!t.length&&!!N);var e={};P.find("tr").each(function(){var t=$(this),i=t.data("id");e[i]=t});for(var i=$(),n=t.length;n--;){var r=t[n],s=r.id,a=e[s];a||(a=l(r)),a.prev().is(i)||(i.size()?a.insertAfter(i):a.prependTo(P)),i=a,delete e[s]}for(var c in e)TradingView.agoDateFormatter.destroy(e[c]),e[c].remove();o()}function u(t){var e=$(document.createElement("tr"));t.id&&e.attr("data-id",t.id);var i=$(document.createElement("th")).appendTo(e);TradingView.agoDateFormatter(i,new Date(1e3*t.time),TradingView.agoDateFormatter.shortFormat);var o=t.before;isFinite(+o)&&(o=(+o).toFixed(2));var n=t.after;return isFinite(+n)&&(n=(+n).toFixed(2)),$(document.createElement("td")).text(o||"").attr("title",t.before||"").appendTo(e),$(document.createElement("td")).text(n||"").attr("title",t.after||"").appendTo(e),$(document.createElement("td")).text(t.comment||"").appendTo(e),e}function d(){var t=p.accountHistory();O.toggle(!t.length&&!!L);var e={};V.find("tr").each(function(){var t=$(this),i=t.data("id");e[i]=t});for(var i=$(),n=t.length;n--;){var r=t[n],s=r.id,a=e[s];a||(a=u(r)),a.prev().is(i)||(i.size()?a.insertAfter(i):a.prependTo(V)),i=a,delete e[s]}for(var l in e)TradingView.agoDateFormatter.destroy(e[l]),e[l].remove();o()}t=t||{};var p=this._broker.connection(),h=$.t("Trading Journal"),f=_82.createDialog(h,{addClass:"trading-journal-dialog",hideTitle:!0,dragHandle:".properties-tabs"}),_=f.find("._tv-dialog-content"),m=$('<div class="properties-tabs"></div>').appendTo(_);$('<a href="#" class="properties-tabs-label"></a>').text($.t("Trading Journal")).appendTo(m),$('<a href="#" class="properties-tabs-label"></a>').text($.t("Account History")).appendTo(m);var b=$(document.createElement("div")).appendTo(_);b.css({height:600,width:800,overflow:"auto"});var y=$(document.createElement("div")).addClass("page journal-page").appendTo(b),v=$(document.createElement("div")).addClass("page history-page").appendTo(b),g=new _70(m,b),T=["journal","history"],C=T[g.index()||0];if(t.tab){var x=T.indexOf(t.tab);-1!==x&&(C=t.tab,g.setActivePage(x))}g.tabChanged.subscribe(null,function(t){C=T[t],a()});var w=$('<div class="stub"></div>').text($.t("Journal is empty")).hide().appendTo(y),k=$(document.createElement("table")).addClass("journal").appendTo(y),P=$(document.createElement("tbody")).appendTo(k),S=$('<div class="loading"></div>').appendTo(y),D=TradingView.unifiedSpinner("mini");D.spin(y.get(0));var O=$('<div class="stub"></div>').text($.t("No account history yet")).hide().appendTo(v),E=$(document.createElement("table")).addClass("history").appendTo(v),V=$(document.createElement("tbody")).appendTo(E),q=$('<div class="loading"></div>').appendTo(v),A=TradingView.unifiedSpinner("mini"),I=!0;b.on("scroll",o);var N=!1,M=null,L=!1,B=null;_82.applyHandlers(f),_82.positionDialog(f),p.onJournalUpdate.subscribe(null,c),p.onAccountHistoryUpdate.subscribe(null,d),f.on("destroy",function(){TradingView.agoDateFormatter.destroy(_),p.onJournalUpdate.unsubscribe(null,c),p.onAccountHistoryUpdate.unsubscribe(null,d),f=null}),p.requestAccountInfo().done(function(){e(!1),a()})},t.exports=i},355:function(t,e){"use strict";function i(){}var o=null;i.get=function(){return o||(o=new i),o},i.prototype.open=function(t){_82.showNotice($.t("Non-tradable symbol"),{html:"<p>"+$.t("Symbol __symbol__ cannot be traded on TradingViews Paper Trading. Why not?",{symbol:t})+"</p><ul><li>"+$.t("Indexes dont have prices, they have values. There are corresponding ETFs that can be traded. SPX is the SnP500 index, but SPY is the ETF that can be traded.")+"</li><br/><li>"+$.t("Spreads cant be traded because they are not a single symbol, they are a visual representation of a calculation.")+"</li><br/><li>"+$.t("Crypto/crypto pairs (eg. LTC/BTC) are not currently supported but that may change in the future.")+"</li><br /><li>"+$.t("Symbols from Quandl are not currently supported.")+"</li></ul>",classSuffix:"slim",doNotCloseOnBgClick:!0,centerCaption:!0})},t.exports=i}});