/// <summary> /// The default constructor. /// </summary> static Data() { IndicatorsForBacktestOnly = new[] { "Random Filter", "Date Filter", "Data Bars Filter", "Lot Limiter" }; PositionOpenTime = DateTime.MinValue; PositionType = -1; BalanceData = new BalanceChartUnit[BalanceLenght]; LibraryVersion = "unknown"; ExpertVersion = "unknown"; TerminalName = "MetaTrader"; PointChar = '.'; DFS = "dd.MM"; DF = "dd.MM.yy"; AutoUsePrvBarValue = true; SourceFolder = @"Custom Indicators\"; LoadedSavedStrategy = ""; FirstBar = 40; StrategyName = "New.xml"; StrategyDir = @"Strategies\"; DefaultStrategyDir = @"Strategies\"; ColorDir = @"Colors\"; LanguageDir = @"Languages\"; SystemDir = @"System\"; ProgramDir = @""; IsProgramBeta = false; IsStrategyChanged = false; Debug = false; IsData = false; IsConnected = false; IsAutoStart = false; StartAutotradeWhenConnected = false; ConnectionID = 0; PositionComment = ""; PositionProfit = 0; PositionTakeProfit = 0; PositionStopLoss = 0; PositionOpenPrice = 0; PositionLots = 0; PositionTicket = 0; WrongStopsRetry = 0; WrongTakeProf = 0; WrongStopLoss = 0; SecondsLiveTrading = 0; SavedStrategies = 0; SecondsDemoTrading = 0; LiveTradeStartTime = DateTime.Now; DemoTradeStartTime = DateTime.Now; ProgramName = "Forex Strategy Trader"; ProgramVersion = Application.ProductVersion; string[] asVersion = ProgramVersion.Split('.'); ProgramID = 1000000 * int.Parse(asVersion[0]) + 10000 * int.Parse(asVersion[1]) + 100 * int.Parse(asVersion[2]) + int.Parse(asVersion[3]); Strategy.GenerateNew(); StackStrategy = new Stack <Strategy>(); }
/// <summary> /// The default constructor. /// </summary> static Data() { IndicatorsForBacktestOnly = new[] { "Random Filter", "Date Filter", "Data Bars Filter", "Lot Limiter" }; PositionOpenTime = DateTime.MinValue; PositionType = -1; BalanceData = new BalanceChartUnit[BalanceLenght]; LibraryVersion = "unknown"; ExpertVersion = "unknown"; TerminalName = "MetaTrader"; PointChar = '.'; DFS = "dd.MM"; DF = "dd.MM.yy"; AutoUsePrvBarValue = true; SourceFolder = @"Custom Indicators\"; LoadedSavedStrategy = ""; FirstBar = 40; StrategyName = "New.xml"; StrategyDir = @"Strategies\"; DefaultStrategyDir = @"Strategies\"; ColorDir = @"Colors\"; LanguageDir = @"Languages\"; SystemDir = @"System\"; ProgramDir = @""; IsProgramBeta = false; IsStrategyChanged = false; Debug = false; IsData = false; IsConnected = false; IsAutoStart = false; StartAutotradeWhenConnected = false; ConnectionID = 0; PositionComment = ""; PositionProfit = 0; PositionTakeProfit = 0; PositionStopLoss = 0; PositionOpenPrice = 0; PositionLots = 0; PositionTicket = 0; WrongStopsRetry = 0; WrongTakeProf = 0; WrongStopLoss = 0; SecondsLiveTrading = 0; SavedStrategies = 0; SecondsDemoTrading = 0; LiveTradeStartTime = DateTime.Now; DemoTradeStartTime = DateTime.Now; ProgramName = "Forex Strategy Trader"; ProgramVersion = Application.ProductVersion; string[] asVersion = ProgramVersion.Split('.'); ProgramID = 1000000*int.Parse(asVersion[0]) + 10000*int.Parse(asVersion[1]) + 100*int.Parse(asVersion[2]) + int.Parse(asVersion[3]); Strategy.GenerateNew(); StackStrategy = new Stack<Strategy>(); }
public static void ResetAccountStats() { AccountBalance = 0; AccountEquity = 0; AccountProfit = 0; AccountFreeMargin = 0; BalanceDataPoints = 0; BalanceData = new BalanceChartUnit[BalanceLenght]; }
public static bool SetCurrentAccount(DateTime time, double balance, double equity, double profit, double freeMargin) { bool balanceChanged = false; bool equityChanged = false; IsBalanceDataChganged = false; if (Math.Abs(AccountBalance - balance) > 0.01) { balanceChanged = true; } if (Math.Abs(AccountEquity - equity) > 0.01) { equityChanged = true; } AccountBalance = balance; AccountEquity = equity; AccountProfit = profit; AccountFreeMargin = freeMargin; if (balance > 0.01 && (equityChanged || balanceChanged)) { var chartUnit = new BalanceChartUnit { Time = time, Balance = balance, Equity = equity }; if (BalanceDataPoints == 0) { BalanceData[BalanceDataPoints] = chartUnit; BalanceDataPoints++; } if (BalanceDataPoints == BalanceLenght) { for (int i = 0; i < BalanceLenght - 1; i++) { BalanceData[i] = BalanceData[i + 1]; } BalanceDataPoints = BalanceLenght - 1; } if (BalanceDataPoints < BalanceLenght) { BalanceData[BalanceDataPoints] = chartUnit; BalanceDataPoints++; } IsBalanceDataChganged = true; } return(balanceChanged); }
/// <summary> /// Updates the chart. /// </summary> protected void UpdateBalanceChart(BalanceChartUnit[] balanceData, int balancePoints) { if (_balanceChart.InvokeRequired) { _balanceChart.BeginInvoke(new UpdateBalanceChartDelegate(UpdateBalanceChart), new object[] {balanceData, balancePoints}); } else { _balanceChart.UpdateChartData(balanceData, balancePoints); _balanceChart.RefreshChart(); } }
public static bool SetCurrentAccount(DateTime time, double balance, double equity, double profit, double freeMargin) { bool balanceChanged = false; bool equityChanged = false; IsBalanceDataChganged = false; if (Math.Abs(AccountBalance - balance) > 0.01) balanceChanged = true; if (Math.Abs(AccountEquity - equity) > 0.01) equityChanged = true; AccountBalance = balance; AccountEquity = equity; AccountProfit = profit; AccountFreeMargin = freeMargin; if (balance > 0.01 && (equityChanged || balanceChanged)) { var chartUnit = new BalanceChartUnit {Time = time, Balance = balance, Equity = equity}; if (BalanceDataPoints == 0) { BalanceData[BalanceDataPoints] = chartUnit; BalanceDataPoints++; } if (BalanceDataPoints == BalanceLenght) { for (int i = 0; i < BalanceLenght - 1; i++) BalanceData[i] = BalanceData[i + 1]; BalanceDataPoints = BalanceLenght - 1; } if (BalanceDataPoints < BalanceLenght) { BalanceData[BalanceDataPoints] = chartUnit; BalanceDataPoints++; } IsBalanceDataChganged = true; } return balanceChanged; }
/// <summary> /// Sets data to be displayed. /// </summary> public void UpdateChartData(BalanceChartUnit[] data, int points) { if (data == null || points < 1) return; _balanceData = new double[points]; _equityData = new double[points]; for (int p = 0; p < points; p++) { _balanceData[p] = data[p].Balance; _equityData[p] = data[p].Equity; } _maxBalance = int.MinValue; _minBalance = int.MaxValue; _maxEquity = int.MinValue; _minEquity = int.MaxValue; foreach (double balance in _balanceData) { if (balance > _maxBalance) _maxBalance = (int) balance; if (balance < _minBalance) _minBalance = (int) balance; } foreach (double equity in _equityData) { if (equity > _maxEquity) _maxEquity = (int) equity; if (equity < _minEquity) _minEquity = (int) equity; } _startTime = data[0].Time; InitChart(); }