public OptionPositionChartPanel()
        {
            InitializeComponent();

            AssetPrice.ValueChanged  += AssetPrice_OnValueChanged;
            CurrentDate.ValueChanged += CurrentDate_OnValueChanged;

            _studioConnector = ConfigManager.GetService <IStudioConnector>();
            _studioConnector.ValuesChanged += StudioConnectorValuesChanged;
            _studioConnector.NewPositions  += StudioConnectorNewPositions;

            PosChart.MarketDataProvider = _studioConnector;
            PosChart.SecurityProvider   = ConfigManager.GetService <IEntityRegistry>().Securities;

            _token = GuiDispatcher.GlobalDispatcher.AddPeriodicalAction(() =>
            {
                lock (_needRefreshLock)
                {
                    if (!_needRefresh)
                    {
                        return;
                    }

                    _needRefresh = false;
                }

                if (!AssetPriceReset.IsEnabled)
                {
                    Process(() => AssetPrice.Value = LastTradePrice);
                }

                RefreshChart();
            });
        }
		public OptionPositionChartPanel()
		{
			InitializeComponent();

			AssetPrice.ValueChanged += AssetPrice_OnValueChanged;
			CurrentDate.ValueChanged += CurrentDate_OnValueChanged;

			_studioConnector = ConfigManager.GetService<IStudioConnector>();
			_studioConnector.ValuesChanged += StudioConnectorValuesChanged;
			_studioConnector.NewPositions += StudioConnectorNewPositions;

			PosChart.MarketDataProvider = _studioConnector;
			PosChart.SecurityProvider = ConfigManager.GetService<IEntityRegistry>().Securities;

			_token = GuiDispatcher.GlobalDispatcher.AddPeriodicalAction(() =>
			{
				lock (_needRefreshLock)
				{
					if (!_needRefresh)
						return;

					_needRefresh = false;
				}

				if (!AssetPriceReset.IsEnabled)
					Process(() => AssetPrice.Value = LastTradePrice);

				RefreshChart();
			});
		}