StringBuilder EnvironmentHTMLReport()
{
StringBuilder sb = new StringBuilder();
string swapUnit = (Data.InstrProperties.SwapType == Commission_Type.money ? Data.InstrProperties.PriceIn : Language.T(Data.InstrProperties.SwapType.ToString()));
string commission = Language.T("Commission") + " " + Data.InstrProperties.CommissionScopeToString + " " + Data.InstrProperties.CommissionTimeToString;
string commUnit = (Data.InstrProperties.CommissionType == Commission_Type.money ? Data.InstrProperties.PriceIn : Language.T(Data.InstrProperties.CommissionType.ToString()));
sb.AppendLine("<h3>" + Language.T("Market") + "</h3>");
sb.AppendLine("<table class=\"fsb_table_cleen\" cellspacing=\"0\">");
sb.AppendLine("<tr><td>" + Language.T("Symbol") + "</td><td> - <strong>" + Data.Symbol + "</strong></td></tr>");
sb.AppendLine("<tr><td>" + Language.T("Time frame") + "</td><td> - <strong>" + Data.PeriodString + "</strong></td></tr>");
sb.AppendLine("</table>");
sb.AppendLine("<h3>" + Language.T("Account") + "</h3>");
sb.AppendLine("<table class=\"fsb_table_cleen\" cellspacing=\"0\">");
sb.AppendLine("<tr><td>" + Language.T("Initial account") + "</td><td> - " + Configs.InitialAccount.ToString("F2") + " " + Configs.AccountCurrency + "</td></tr>");
sb.AppendLine("<tr><td>" + Language.T("Lot size") + "</td><td> - " + Data.InstrProperties.LotSize.ToString() + "</td></tr>");
sb.AppendLine("<tr><td>" + Language.T("Leverage") + "</td><td> - 1/" + Configs.Leverage + "</td></tr>");
sb.AppendLine("<tr><td>" + Language.T("Required margin") + "</td><td> - " + Backtester.RequiredMargin(1, Data.Bars - 1).ToString("F2") + " " + Configs.AccountCurrency + "* " + Language.T("for each open lot") + "</td></tr>");
sb.AppendLine("</table>");
sb.AppendLine("<h3>" + Language.T("Charges") + "</h3>");
sb.AppendLine("<table class=\"fsb_table_cleen\" cellspacing=\"0\">");
sb.AppendLine("<tr><td>" + Language.T("Spread") + "</td><td> - " + Plural("pip", Data.InstrProperties.Spread) + "</td><td>(" + Backtester.PipsToMoney(Data.InstrProperties.Spread, Data.Bars - 1).ToString("F2") + " " + Configs.AccountCurrency + "*)</td></tr>");
sb.AppendLine("<tr><td>" + Language.T("Swap number for a long position rollover") + "</td><td> - " + Data.InstrProperties.SwapLong.ToString() + " " + swapUnit + "</td><td>(" + Backtester.RolloverInMoney(PosDirection.Long, 1, 1, Data.Close[Data.Bars - 1]).ToString("F2") + " " + Configs.AccountCurrency + "*)</td></tr>");
sb.AppendLine("<tr><td>" + Language.T("Swap number for a short position rollover") + "</td><td> - " + Data.InstrProperties.SwapShort.ToString() + " " + swapUnit + "</td><td>(" + Backtester.RolloverInMoney(PosDirection.Short, 1, 1, Data.Close[Data.Bars - 1]).ToString("F2") + " " + Configs.AccountCurrency + "*)</td></tr>");
sb.AppendLine("<tr><td>" + commission + "</td><td> - " + Data.InstrProperties.Commission.ToString() + " " + commUnit + "</td><td>(" + Backtester.CommissionInMoney(1, Data.Close[Data.Bars-1], false).ToString("F2") + " " + Configs.AccountCurrency + "*)</td></tr>");
sb.AppendLine("<tr><td>" + Language.T("Slippage") + "</td><td> - " + Plural("pip", Data.InstrProperties.Slippage) + "</td><td>(" + Backtester.PipsToMoney(Data.InstrProperties.Slippage, Data.Bars - 1).ToString("F2") + " " + Configs.AccountCurrency + "*)</td></tr>");
sb.AppendLine("</table>");
sb.AppendLine("<p>--------------<br />");
sb.AppendLine("* " + Language.T("This value may vary!"));
sb.AppendLine("</p>");
return sb;
}