/// <summary> /// Reset data and stats. /// </summary> private void ResetTrader() { _tickLocalTime = DateTime.Now; // Prevents ping for one second. StopTrade(); Data.IsConnected = false; _bridge.ResetBarsManager(); Data.ResetBidAskClose(); Data.ResetAccountStats(); Data.ResetPositionStats(); Data.ResetBarStats(); Data.ResetTicks(); UpdateTickChart(Data.InstrProperties.Point, Data.ListTicks.ToArray()); UpdateBalanceChart(Data.BalanceData, Data.BalanceDataPoints); UpdateChart(); }
/// <summary> /// Sets the instrument's properties after connecting; /// </summary> bool UpdateDataFeedInfo(DateTime time, string symbol, DataPeriods period) { lock (lockerDataFeed) { Data.ResetBidAsk(); Data.ResetAccountStats(); Data.ResetPositionStats(); Data.ResetBarStats(); Data.ResetTicks(); // Reads market info from the chart MT4Bridge.MarketInfo marketInfo = bridge.GetMarketInfoAll(symbol); if (marketInfo == null) { if (JournalShowSystemMessages) { JournalMessage jmsgsys = new JournalMessage(JournalIcons.System, DateTime.Now, symbol + " " + (MT4Bridge.PeriodType)(int) period + " " + Language.T("Cannot update market info.")); AppendJournalMessage(jmsgsys); } return(false); } // Sets instrument properties Data.Period = period; Data.InstrProperties.Symbol = symbol; Data.InstrProperties.LotSize = (int)marketInfo.ModeLotSize; Data.InstrProperties.MinLot = marketInfo.ModeMinLot; Data.InstrProperties.MaxLot = marketInfo.ModeMaxLot; Data.InstrProperties.LotStep = marketInfo.ModeLotStep; Data.InstrProperties.Digits = (int)marketInfo.ModeDigits; Data.InstrProperties.Spread = marketInfo.ModeSpread; Data.InstrProperties.SwapLong = marketInfo.ModeSwapLong; Data.InstrProperties.SwapShort = marketInfo.ModeSwapShort; Data.InstrProperties.TickValue = marketInfo.ModeTickValue; Data.InstrProperties.StopLevel = marketInfo.ModeStopLevel; Data.InstrProperties.MarginRequired = marketInfo.ModeMarginRequired; SetNumUpDownLots(marketInfo.ModeMinLot, marketInfo.ModeLotStep, marketInfo.ModeMaxLot); // Sets Market Info string[] values = new string[] { symbol, Data.DataPeriodToString(period), marketInfo.ModeLotSize.ToString(), marketInfo.ModePoint.ToString("F" + marketInfo.ModeDigits.ToString()), marketInfo.ModeSpread.ToString(), marketInfo.ModeSwapLong.ToString(), marketInfo.ModeSwapShort.ToString() }; UpdateStatusPageMarketInfo(values); MT4Bridge.Bars bars = bridge.GetBars(symbol, (MT4Bridge.PeriodType)(int) period); if (bars == null) { if (JournalShowSystemMessages) { Data.SoundError.Play(); JournalMessage jmsgsys = new JournalMessage(JournalIcons.System, DateTime.Now, symbol + " " + (MT4Bridge.PeriodType)(int) period + " " + Language.T("Cannot receive bars!")); AppendJournalMessage(jmsgsys); } return(false); } if (bars.Count < MaxBarsCount((int)period)) { if (JournalShowSystemMessages) { Data.SoundError.Play(); JournalMessage jmsg = new JournalMessage(JournalIcons.Error, DateTime.Now, symbol + " " + (MT4Bridge.PeriodType)(int) period + " " + Language.T("Cannot receive enough bars!")); AppendJournalMessage(jmsg); } return(false); } if (JournalShowSystemMessages) { JournalMessage jmsgsys = new JournalMessage(JournalIcons.System, DateTime.Now, symbol + " " + (MT4Bridge.PeriodType)(int) period + " " + Language.T("Market data updated, bars downloaded.")); AppendJournalMessage(jmsgsys); } // Account Information. MT4Bridge.AccountInfo account = bridge.GetAccountInfo(); if (account == null) { if (JournalShowSystemMessages) { Data.SoundError.Play(); JournalMessage jmsg = new JournalMessage(JournalIcons.Error, DateTime.Now, symbol + " " + (MT4Bridge.PeriodType)(int) period + " " + Language.T("Cannot receive account information!")); AppendJournalMessage(jmsg); } return(false); } if (JournalShowSystemMessages) { JournalMessage jmsgsys = new JournalMessage(JournalIcons.System, DateTime.Now, symbol + " " + (MT4Bridge.PeriodType)(int) period + " " + Language.T("Account information received.")); AppendJournalMessage(jmsgsys); } Data.AccountName = account.Name; Data.IsDemoAccount = account.IsDemo; Data.AccountCurrency = account.Currency; Data.SetCurrentAccount(time, account.Balance, account.Equity, account.Profit, account.FreeMargin); UpdateBalanceChart(Data.BalanceData, Data.BalanceDataPoints); SetTradeStrip(); SetLblSymbolText(symbol); } return(true); }