public void AppendToQueryParameters(Dictionary <string, string> queryParameters)
        {
            if (Phased)
            {
                queryParameters.Add(Parameters.Phased, Phased.ToString());
                queryParameters.Add(Parameters.PhasingFinishHeight, FinishHeight.ToString());
                queryParameters.Add(Parameters.PhasingVotingModel, ((int)VotingModel).ToString());
                queryParameters.Add(Parameters.PhasingQuorum, Quorum.ToString());

                if (MinBalance > 0)
                {
                    queryParameters.Add(Parameters.PhasingMinBalance, MinBalance.ToString());
                }
                if (HoldingId > 0)
                {
                    queryParameters.Add(Parameters.PhasingHolding, HoldingId.ToString());
                }
                if (MinBalanceModel != MinBalanceModel.None)
                {
                    queryParameters.Add(Parameters.PhasingMinBalanceModel, ((int)MinBalanceModel).ToString());
                }
                WhiteListed.ForEach(w => queryParameters.Add(Parameters.PhasingWhitelisted, w.AccountRs));
                LinkedFullHash.ForEach(h => queryParameters.Add(Parameters.PhasingLinkedFullHash, h.ToHexString()));
                if (HashedSecret != null)
                {
                    queryParameters.Add(Parameters.PhasingHashedSecret, HashedSecret.ToHexString());
                }
                if (HashedSecretAlgorithm.HasValue)
                {
                    queryParameters.Add(Parameters.PhasingHashedSecretAlgorithm, ((int)HashedSecretAlgorithm.Value).ToString());
                }
            }
        }
示例#2
0
        /// <summary>
        /// Generate the Account Statistics in pips.
        /// </summary>
        static void GenerateAccountStats()
        {
            accountStatsParam = new string[26]
            {
                Language.T("Intrabar scanning"),
                Language.T("Interpolation method"),
                Language.T("Ambiguous bars"),
                Language.T("Profit per day"),
                Language.T("Tested bars"),
                Language.T("Account balance"),
                Language.T("Minimum account"),
                Language.T("Maximum account"),
                Language.T("Maximum drawdown"),
                Language.T("Max equity drawdown"),
                Language.T("Max equity drawdown"),
                Language.T("Gross profit"),
                Language.T("Gross loss"),
                Language.T("Sent orders"),
                Language.T("Executed orders"),
                Language.T("Traded lots"),
                Language.T("Winning trades"),
                Language.T("Losing trades"),
                Language.T("Win/loss ratio"),
                Language.T("Time in position"),
                Language.T("Charged spread"),
                Language.T("Charged rollover"),
                Language.T("Charged commission"),
                Language.T("Charged slippage"),
                Language.T("Total charges"),
                Language.T("Balance without charges")
            };

            string unit = " " + Language.T("pips");

            accountStatsValue     = new string[26];
            accountStatsValue[0]  = isScanned ? Language.T("Accomplished") : Language.T("Not accomplished");
            accountStatsValue[1]  = InterpolationMethodShortToString();
            accountStatsValue[2]  = ambiguousBars.ToString();
            accountStatsValue[3]  = ProfitPerDay.ToString() + unit;
            accountStatsValue[4]  = (Bars - FirstBar).ToString();
            accountStatsValue[5]  = NetBalance.ToString() + unit;
            accountStatsValue[6]  = MinBalance.ToString() + unit;
            accountStatsValue[7]  = MaxBalance.ToString() + unit;
            accountStatsValue[8]  = MaxDrawdown.ToString() + unit;
            accountStatsValue[9]  = MaxEquityDrawdown.ToString() + unit;
            accountStatsValue[10] = EquityPercentDrawdown.ToString("F2") + " %";
            accountStatsValue[11] = GrossProfit.ToString() + unit;
            accountStatsValue[12] = GrossLoss.ToString() + unit;
            accountStatsValue[13] = SentOrders.ToString();
            accountStatsValue[14] = ExecutedOrders.ToString();
            accountStatsValue[15] = TradedLots.ToString("F2");
            accountStatsValue[16] = winningTrades.ToString();
            accountStatsValue[17] = losingTrades.ToString();
            accountStatsValue[18] = ((float)winningTrades / (winningTrades + losingTrades)).ToString("F2");
            accountStatsValue[19] = TimeInPosition.ToString() + " %";
            accountStatsValue[20] = Math.Round(TotalChargedSpread).ToString() + unit;
            accountStatsValue[21] = Math.Round(TotalChargedRollOver).ToString() + unit;
            accountStatsValue[22] = Math.Round(TotalChargedCommission).ToString() + unit;
            accountStatsValue[23] = TotalChargedSlippage.ToString("F2") + unit;
            accountStatsValue[24] = Math.Round(TotalChargedSpread + TotalChargedRollOver + TotalChargedSlippage).ToString() + unit;
            accountStatsValue[25] = Math.Round(NetBalance + TotalChargedSpread + TotalChargedRollOver + TotalChargedSlippage).ToString() + unit;

            accountStatsFlag    = new bool[26];
            accountStatsFlag[0] = ambiguousBars > 0 && !isScanned;
            accountStatsFlag[1] = interpolationMethod != InterpolationMethod.Pessimistic;
            accountStatsFlag[2] = ambiguousBars > 0;
            accountStatsFlag[5] = NetBalance < 0;
            accountStatsFlag[8] = MaxDrawdown > 500;

            return;
        }
        /// <summary>
        /// Sets the additional stats in pips.
        /// </summary>
        static void SetAdditioanlStats()
        {
            string unit = " " + Language.T("pips");

            additionalStatsParamName = new string[]
            {
                Language.T("Initial account"),
                Language.T("Account balance"),
                Language.T("Net profit"),
                Language.T("Gross profit"),
                Language.T("Gross loss"),
                Language.T("Profit factor"),
                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 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")
            };

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

            additionalStatsValueTotal = new string[]
            {
                "0" + unit,
                NetBalance.ToString() + unit,
                NetBalance.ToString() + unit,
                Math.Round(grossProfit).ToString() + unit,
                Math.Round(grossLoss).ToString() + unit,
                (grossLoss == 0 ? "N/A" : Math.Abs(grossProfit / grossLoss).ToString("F2")),
                Math.Round(((365f / Data.Time[Data.Bars - 1].Subtract(Data.Time[0]).Days) * NetBalance)).ToString() + unit,
                MinBalance.ToString() + unit,
                minBalanceDate.ToShortDateString(),
                MaxBalance.ToString() + unit,
                maxBalanceDate.ToShortDateString(),
                Math.Abs(MinBalance).ToString() + unit,
                Math.Round(maxDrawdown).ToString() + unit,
                maxDrawdownDate.ToShortDateString(),
                Data.Bars.ToString(),
                (Data.Bars - Data.FirstBar).ToString(),
                barsWithPos.ToString(),
                (100f * barsWithPos / (Data.Bars - Data.FirstBar)).ToString("F2") + "%",
                totalTrades.ToString(),
                totalWinTrades.ToString(),
                totalLossTrades.ToString(),
                (1f * totalWinTrades / (totalWinTrades + totalLossTrades)).ToString("F2"),
                Math.Round(Math.Max(maxLongWin, maxShortWin)).ToString() + unit,
                Math.Round(grossProfit / totalWinTrades).ToString() + unit,
                Math.Round(Math.Min(maxLongLoss, maxShortLoss)).ToString() + unit,
                Math.Round(grossLoss / totalLossTrades).ToString() + unit,
                (1f * NetBalance / totalTrades).ToString("F2") + unit
            };

            additionalStatsValueLong = new string[]
            {
                "0" + unit,
                NetLongBalance.ToString() + unit,
                NetLongBalance.ToString() + unit,
                Math.Round(grossLongProfit).ToString() + unit,
                Math.Round(grossLongLoss).ToString() + unit,
                (grossLongLoss == 0 ? "N/A" : Math.Abs(grossLongProfit / grossLongLoss).ToString("F2")),
                Math.Round(((365f / Data.Time[Data.Bars - 1].Subtract(Data.Time[0]).Days) * NetLongBalance)).ToString() + unit,
                MinLongBalance.ToString() + unit,
                minLongBalanceDate.ToShortDateString(),
                MaxLongBalance.ToString() + unit,
                maxLongBalanceDate.ToShortDateString(),
                Math.Round(Math.Abs(minLongBalance)).ToString() + unit,
                Math.Round(maxLongDrawdown).ToString() + unit,
                maxLongDrawdownDate.ToShortDateString(),
                Data.Bars.ToString(),
                (Data.Bars - Data.FirstBar).ToString(),
                barsWithLongPos.ToString(),
                (100f * barsWithLongPos / (Data.Bars - Data.FirstBar)).ToString("F2") + "%",
                totalLongTrades.ToString(),
                winningLongTrades.ToString(),
                losingLongTrades.ToString(),
                (1f * winningLongTrades / (winningLongTrades + losingLongTrades)).ToString("F2"),
                Math.Round(maxLongWin).ToString() + unit,
                Math.Round(grossLongProfit / winningLongTrades).ToString() + unit,
                Math.Round(maxLongLoss).ToString() + unit,
                Math.Round(grossLongLoss / losingLongTrades).ToString() + unit,
                (1f * NetLongBalance / (winningLongTrades + losingLongTrades)).ToString("F2") + unit
            };

            additionalStatsValueShort = new string[]
            {
                "0" + unit,
                NetShortBalance.ToString() + unit,
                NetShortBalance.ToString() + unit,
                Math.Round(grossShortProfit).ToString() + unit,
                Math.Round(grossShortLoss).ToString() + unit,
                (grossShortLoss == 0 ? "N/A" : Math.Abs(grossShortProfit / grossShortLoss).ToString("F2")),
                Math.Round(((365f / Data.Time[Data.Bars - 1].Subtract(Data.Time[0]).Days) * NetShortBalance)).ToString() + unit,
                MinShortBalance.ToString() + unit,
                minShortBalanceDate.ToShortDateString(),
                MaxShortBalance.ToString() + unit,
                maxShortBalanceDate.ToShortDateString(),
                Math.Round(Math.Abs(minShortBalance)).ToString() + unit,
                Math.Round(maxShortDrawdown).ToString() + unit,
                maxShortDrawdownDate.ToShortDateString(),
                Data.Bars.ToString(),
                (Data.Bars - Data.FirstBar).ToString(),
                barsWithShortPos.ToString(),
                (100f * barsWithShortPos / (Data.Bars - Data.FirstBar)).ToString("F2") + "%",
                totalShortTrades.ToString(),
                winningShortTrades.ToString(),
                losingShortTrades.ToString(),
                (1f * winningShortTrades / (winningShortTrades + losingShortTrades)).ToString("F2"),
                Math.Round(maxShortWin).ToString() + unit,
                Math.Round(grossShortProfit / winningShortTrades).ToString() + unit,
                Math.Round(maxShortLoss).ToString() + unit,
                Math.Round(grossShortLoss / losingShortTrades).ToString() + unit,
                (1f * NetShortBalance / (winningShortTrades + losingShortTrades)).ToString("F2") + unit
            };
        }