Пример #1
0
        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();
     }
 }
Пример #3
0
 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 = @"Indicators\";
     LibraryDir = @"Libraries\";
     UserFilesDir = @"User Files\";
     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>();
 }
Пример #4
0
        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;
        }
Пример #5
0
        public static void ResetAccountStats()
        {
            AccountBalance = 0;
            AccountEquity = 0;
            AccountProfit = 0;
            AccountFreeMargin = 0;

            BalanceDataPoints = 0;
            BalanceData = new BalanceChartUnit[BalanceLenght];
        }
Пример #6
0
        /// <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();
        }