Пример #1
0
 public override string ToString()
 {
     base.ToString();
     winners.Name = Name + " Winners";
     losers.Name  = Name + " Losers";
     return(base.ToString() +
            winners.Count.ToString("N0") + " winners. " +
            losers.Count.ToString("N0") + " losers. " +
            WinRate.ToString("P2") + " win ratio. " +
            ProfitFactor.ToString("N2") + " profit factor.\n" +
            Expectancy.ToString("N2") + " expectancy.\n" +
            winners.ToString() +
            losers.ToString());
 }
Пример #2
0
        /// <summary>
        ///     Sets the additional stats in Money.
        /// </summary>
        private static void SetAdditionalMoneyStats()
        {
            string unit = " " + Configs.AccountCurrency;

            AdditionalStatsParamName = new[]
            {
                Language.T("Initial account"),
                Language.T("Account balance"),
                Language.T("Net profit"),
                Language.T("Net profit") + " %",
                Language.T("Gross profit"),
                Language.T("Gross loss"),
                Language.T("Profit factor"),
                Language.T("Annualized profit"),
                Language.T("Annualized profit") + " %",
                Language.T("Minimum account"),
                Language.T("Minimum account date"),
                Language.T("Maximum account"),
                Language.T("Maximum account date"),
                Language.T("Absolute drawdown"),
                Language.T("Maximum drawdown"),
                Language.T("Maximum drawdown") + " %",
                Language.T("Maximum drawdown date"),
                Language.T("Historical bars"),
                Language.T("Tested bars"),
                Language.T("Bars with trades"),
                Language.T("Bars with trades") + " %",
                Language.T("Number of trades"),
                Language.T("Winning trades"),
                Language.T("Losing trades"),
                Language.T("Win/loss ratio"),
                Language.T("Maximum profit"),
                Language.T("Average profit"),
                Language.T("Maximum loss"),
                Language.T("Average loss"),
                Language.T("Expected payoff"),
                Language.T("Average holding period returns"),
                Language.T("Geometric holding period returns"),
                Language.T("Sharpe ratio")
            };

            int totalWinTrades  = winningLongTrades + winningShortTrades;
            int totalLossTrades = losingLongTrades + losingShortTrades;
            int trades          = totalWinTrades + totalLossTrades;

            AdditionalStatsValueTotal = new[]
            {
                Configs.InitialAccount.ToString("F2") + unit,
                NetMoneyBalance.ToString("F2") + unit,
                (NetMoneyBalance - Configs.InitialAccount).ToString("F2") + unit,
                (100 * ((NetMoneyBalance - Configs.InitialAccount) / Configs.InitialAccount)).ToString("F2") + "%",
                GrossMoneyProfit.ToString("F2") + unit,
                GrossMoneyLoss.ToString("F2") + unit,
                ProfitFactor.ToString("F2"),
                AnnualizedProfit.ToString("F2") + unit,
                AnnualizedProfitPercent.ToString("F2") + "%",
                MinMoneyBalance.ToString("F2") + unit,
                minMoneyBalanceDate.ToShortDateString(),
                MaxMoneyBalance.ToString("F2") + unit,
                maxMoneyBalanceDate.ToShortDateString(),
                (Configs.InitialAccount - MinMoneyBalance).ToString("F2") + unit,
                MaxMoneyDrawdown.ToString("F2") + unit,
                maxMoneyDrawdownPercent.ToString("F2") + "%",
                maxMoneyDrawdownDate.ToShortDateString(),
                Bars.ToString(CultureInfo.InvariantCulture),
                (Bars - FirstBar).ToString(CultureInfo.InvariantCulture),
                barsWithPos.ToString(CultureInfo.InvariantCulture),
                (100f * barsWithPos / (Bars - FirstBar)).ToString("F2") + "%",
                trades.ToString(CultureInfo.InvariantCulture),
                totalWinTrades.ToString(CultureInfo.InvariantCulture),
                totalLossTrades.ToString(CultureInfo.InvariantCulture),
                (1f * totalWinTrades / (totalWinTrades + totalLossTrades)).ToString("F2"),
                Math.Max(maxLongMoneyWin, maxShortMoneyWin).ToString("F2") + unit,
                (GrossMoneyProfit / totalWinTrades).ToString("F2") + unit,
                Math.Min(maxLongMoneyLoss, maxShortMoneyLoss).ToString("F2") + unit,
                (GrossMoneyLoss / totalLossTrades).ToString("F2") + unit,
                (1f * (NetMoneyBalance - Configs.InitialAccount) / trades).ToString("F2") + unit,
                AvrgHoldingPeriodRet.ToString("F2") + "%",
                GeomHoldingPeriodRet.ToString("F2") + "%",
                SharpeRatio.ToString("F2")
            };

            AdditionalStatsValueLong = new[]
            {
                Configs.InitialAccount.ToString("F2") + unit,
                NetLongMoneyBalance.ToString("F2") + unit,
                (NetLongMoneyBalance - Configs.InitialAccount).ToString("F2") + unit,
                (100 * ((NetLongMoneyBalance - Configs.InitialAccount) / Configs.InitialAccount)).ToString("F2") + "%",
                grossLongMoneyProfit.ToString("F2") + unit,
                grossLongMoneyLoss.ToString("F2") + unit,
                (Math.Abs(grossLongMoneyLoss - 0) < sigma
                         ? grossLongMoneyProfit
                         : Math.Abs(grossLongMoneyProfit / grossLongMoneyLoss)).ToString("F2"),
                ((365f / Time[Bars - 1].Subtract(Time[0]).Days) *
                 (NetLongMoneyBalance - Configs.InitialAccount)).ToString("F2") + unit,
                (100 * (365f / Time[Bars - 1].Subtract(Time[0]).Days) *
                 (NetLongMoneyBalance - Configs.InitialAccount) / Configs.InitialAccount).ToString("F2") + "%",
                MinLongMoneyBalance.ToString("F2") + unit,
                minLongMoneyBalanceDate.ToShortDateString(),
                MaxLongMoneyBalance.ToString("F2") + unit,
                maxLongMoneyBalanceDate.ToShortDateString(),
                (Configs.InitialAccount - MinLongMoneyBalance).ToString("F2") + unit,
                maxLongMoneyDrawdown.ToString("F2") + unit,
                maxLongMoneyDrawdownPercent.ToString("F2") + "%",
                maxLongMoneyDrawdownDate.ToShortDateString(),
                Bars.ToString(CultureInfo.InvariantCulture),
                (Bars - FirstBar).ToString(CultureInfo.InvariantCulture),
                barsWithLongPos.ToString(CultureInfo.InvariantCulture),
                (100f * barsWithLongPos / (Bars - FirstBar)).ToString("F2") + "%",
                totalLongTrades.ToString(CultureInfo.InvariantCulture),
                winningLongTrades.ToString(CultureInfo.InvariantCulture),
                losingLongTrades.ToString(CultureInfo.InvariantCulture),
                (1f * winningLongTrades / (winningLongTrades + losingLongTrades)).ToString("F2"),
                maxLongMoneyWin.ToString("F2") + unit,
                (grossLongMoneyProfit / winningLongTrades).ToString("F2") + unit,
                maxLongMoneyLoss.ToString("F2") + unit,
                (grossLongMoneyLoss / losingLongTrades).ToString("F2") + unit,
                (1f * (NetLongMoneyBalance - Configs.InitialAccount) /
                 (winningLongTrades + losingLongTrades)).ToString("F2") + unit,
                ahprLong.ToString("F2") + "%",
                ghprLong.ToString("F2") + "%",
                sharpeRatioLong.ToString("F2")
            };

            AdditionalStatsValueShort = new[]
            {
                Configs.InitialAccount.ToString("F2") + unit,
                NetShortMoneyBalance.ToString("F2") + unit,
                (NetShortMoneyBalance - Configs.InitialAccount).ToString("F2") + unit,
                (100 * ((NetShortMoneyBalance - Configs.InitialAccount) / Configs.InitialAccount)).ToString("F2") + "%",
                grossShortMoneyProfit.ToString("F2") + unit,
                grossShortMoneyLoss.ToString("F2") + unit,
                (Math.Abs(grossShortMoneyLoss - 0) < sigma
                         ? grossShortMoneyProfit
                         : Math.Abs(grossShortMoneyProfit / grossShortMoneyLoss)).ToString("F2"),
                ((365f / Time[Bars - 1].Subtract(Time[0]).Days) *
                 (NetShortMoneyBalance - Configs.InitialAccount)).ToString("F2") + unit,
                (100 * (365f / Time[Bars - 1].Subtract(Time[0]).Days) *
                 (NetShortMoneyBalance - Configs.InitialAccount) / Configs.InitialAccount).ToString("F2") + "%",
                MinShortMoneyBalance.ToString("F2") + unit,
                minShortMoneyBalanceDate.ToShortDateString(),
                MaxShortMoneyBalance.ToString("F2") + unit,
                maxShortMoneyBalanceDate.ToShortDateString(),
                (Configs.InitialAccount - MinShortMoneyBalance).ToString("F2") + unit,
                maxShortMoneyDrawdown.ToString("F2") + unit,
                maxShortMoneyDrawdownPercent.ToString("F2") + "%",
                maxShortMoneyDrawdownDate.ToShortDateString(),
                Bars.ToString(CultureInfo.InvariantCulture),
                (Bars - FirstBar).ToString(CultureInfo.InvariantCulture),
                barsWithShortPos.ToString(CultureInfo.InvariantCulture),
                (100f * barsWithShortPos / (Bars - FirstBar)).ToString("F2") + "%",
                totalShortTrades.ToString(CultureInfo.InvariantCulture),
                winningShortTrades.ToString(CultureInfo.InvariantCulture),
                losingShortTrades.ToString(CultureInfo.InvariantCulture),
                (1f * winningShortTrades / (winningShortTrades + losingShortTrades)).ToString("F2"),
                maxShortMoneyWin.ToString("F2") + unit,
                (grossShortMoneyProfit / winningShortTrades).ToString("F2") + unit,
                maxShortMoneyLoss.ToString("F2") + unit,
                (grossShortMoneyLoss / losingShortTrades).ToString("F2") + unit,
                (1f * (NetShortMoneyBalance - Configs.InitialAccount) / (winningShortTrades + losingShortTrades))
                .ToString("F2") + unit,
                ahprShort.ToString("F2") + "%",
                ghprShort.ToString("F2") + "%",
                sharpeRatioShort.ToString("F2")
            };
        }
Пример #3
0
 public string DisplayLine()
 {
     return(Description.PadRight(nameColumnWidth) + "|" + TradeCount.ToString().PadRight(columnWidth) + "|" + ProfitFactor.ToString("0.00").PadRight(columnWidth) + "|$" +
            TotalProfit.ToString("0.00").PadRight(columnWidth) + "|$" + SpreadCost.ToString("0.00").PadRight(columnWidth) + "|" +
            WinPercent.ToString("0.00").PadRight(columnWidth) + "%");
 }