Exemple #1
0
        public void TestVolatAll()
        {
            IMarketProvider moex = GetMoex();
            IMarketProvider cbr  = GetCbr();

            DataProvider.Input.CombinedProvider.Provider provider =
                new DataProvider.Input.CombinedProvider.Provider(new List <IMarketProvider>()
            {
                moex,
                cbr
            });

            Core.Mir.Environment environment =
                new Core.Mir.Environment();
            environment.Market = new MarketData(provider);

            CalculationOneData calculation = new CalculateVolat.Volat();

            calculation.ReportDate = new DateTime(2018, 05, 12);
            Dictionary <string, object> pars = new Dictionary <string, object>()
            {
                { CalculateVolat.Volat.WINDOW, 5 },
                { CalculateVolat.Volat.MINIMAL_AMOUT, 90 },
            };

            calculation.SetParams(pars);
            calculation.Environment = environment;

            calculation.Run();
        }
        public void LoadData()
        {
            treeView1.Nodes.Clear();

            var iConnection = DataBaseLink.Fabricate.CreateConnection(_connection, DataBaseLink.ConnectionType.Npgsql);

            DataBaseLink.DbLink _dbLink = new DataBaseLink.DbLink(iConnection);
            //достаем финансовые инструменты и сортируем по папкам

            IMarketProvider moex = GetMoex();
            IMarketProvider cbr  = GetCbr();

            DataProvider.Input.CombinedProvider.Provider provider =
                new DataProvider.Input.CombinedProvider.Provider(new List <IMarketProvider>()
            {
                moex,
                cbr
            });

            List <FinType> finTypes = new List <FinType>()
            {
                FinType.Bond,
                FinType.Certificate,
                FinType.DepositaryReceipt,
                FinType.Equity,
                FinType.Fund
            };

            Dictionary <FinType, string> types = new Dictionary <FinType, string>()
            {
                { FinType.Bond, "Облигации" },
                { FinType.Certificate, "Сертификаты" },
                { FinType.DepositaryReceipt, "Депозитарные распискы" },
                { FinType.Equity, "Акции" },
                { FinType.Fund, "Фонды" },
            };

            List <PortfolioPosition> positions = provider.GetAllPositions(finTypes);

            foreach (var x in types)
            {
                TreeNode root = treeView1.Nodes.Add(x.Value, x.Value);
                foreach (var z in positions.Where(p => p.FinType == x.Key))
                {
                    root.Nodes.Add(z.Ident, z.Ident);
                }
            }
        }
        public void TestCalculateVar()
        {
            IMarketProvider moex = GetMoex();
            IMarketProvider cbr  = GetCbr();

            DataProvider.Input.CombinedProvider.Provider provider =
                new DataProvider.Input.CombinedProvider.Provider(new List <IMarketProvider>()
            {
                moex,
                cbr
            });

            Core.Mir.Environment environment =
                new Core.Mir.Environment();
            environment.Market = new MarketData(provider);

            CalculationOneData calculation = new Var();

            calculation.ReportDate = new DateTime(2018, 05, 04);
            Dictionary <string, object> pars = new Dictionary <string, object>()
            {
                { Var.WINDOW, 5 },
                { Var.QUANTILE, 0.9m },
            };

            calculation.SetParams(pars);
            calculation.Environment = environment;
            bool result = false;

            try
            {
                result = calculation.Run();
            }
            catch
            {
                result = false;
            }
            #region Settings Output
            #region Выгрузка данных в мир
            if (result)
            {
                #region Settings outputProvider
                string mirConnection = ConfigurationManager.AppSettings["mirconnection"];
                DataProvider.Output.Mir.Mapping outMapping = new DataProvider.Output.Mir.Mapping();

                outMapping.AI = new Dictionary <Enum, string>()
                {
                    #region Финансовые инструменты
                    { FinType.Equity, "12" },
                    { FinType.Bond, "13" },
                    { FinType.Fund, "14" },
                    { FinType.Certificate, "15" },
                    { FinType.DepositaryReceipt, "16" },
                    { FinType.FxRate, "20" },
                    { TimeSeriesAttribute.Var, "21675" },
                    #endregion
                };

                outMapping.TKE = new Dictionary <KeyValuePair <Type, string>, Enum>()
                {
                    #region Валюта
                    { new KeyValuePair <Type, string>(typeof(Currencies), "CHF"), Currencies.CHF },
                    { new KeyValuePair <Type, string>(typeof(Currencies), "EUR"), Currencies.EUR },
                    { new KeyValuePair <Type, string>(typeof(Currencies), "GBP"), Currencies.GBP },
                    { new KeyValuePair <Type, string>(typeof(Currencies), "RUB"), Currencies.RUB },
                    { new KeyValuePair <Type, string>(typeof(Currencies), "RUR"), Currencies.RUB },
                    { new KeyValuePair <Type, string>(typeof(Currencies), "USD"), Currencies.USD },
                    #endregion
                };


                outMapping.ET = new Dictionary <Enum, Type>()
                {
                    { ScalarAttribute.DetailedType, typeof(FinTypeDetailedLevel) },
                    { ScalarAttribute.Currency, typeof(Currencies) },
                    { ScalarAttribute.FinType, typeof(FinType) },
                };

                mirConnection = "Host = localhost; Username =postgres; Password =roman; Database =MIR";
                using (var outProvider = new DataProvider.Output.Mir.Provider(mirConnection, outMapping))
                {
                    outProvider.SetParams(new Dictionary <string, object>()
                    {
                        { DataProvider.Output.Mir.Provider.SCALAR, "CALCULATED" },
                        { DataProvider.Output.Mir.Provider.QUOTE, "CALCULATED" }
                    });

                    outProvider.Save(calculation.returnResultSet());
                }



                #endregion
            }
            #endregion

            #region Выгрузка данных в Excel
            string excelPath     = @"C:\Users\RomanBushuev\YandexDisk\MarketData\Reports\Var\";
            string excelFileName = string.Format("{0}.xlsx",
                                                 calculation.ReportDate.ToString("yyyy.MM.dd"));

            DataProvider.Output.Excel.Provider excelProvider =
                new DataProvider.Output.Excel.Provider(excelPath + excelFileName);

            excelProvider.Save(calculation.returnResultSet());
            #endregion
            #endregion
        }
        public void ReadDataFromMoexAndCbr()
        {
            #region mapping mir_moex
            DataProvider.Input.MirReader.Mapping mapping = new DataProvider.Input.MirReader.Mapping();

            mapping.AI = new Dictionary <Enum, string>()
            {
                #region Финансовые инструменты
                { FinType.Equity, "12" },
                { FinType.Bond, "13" },
                { FinType.Fund, "14" },
                { FinType.Certificate, "15" },
                { FinType.DepositaryReceipt, "16" },
                { FinType.Default, "20" },
                { TimeSeriesAttribute.Close, "3" },
                { ScalarAttribute.Name, "4" },
                { ScalarAttribute.Nominal, "9" },
                { ScalarAttribute.MatDate, "11" },
                { ScalarAttribute.Currency, "8" },
                #endregion
            };

            mapping.TKE = new Dictionary <KeyValuePair <Type, string>, Enum>()
            {
                #region Валюта
                { new KeyValuePair <Type, string>(typeof(Currencies), "CHF"), Currencies.CHF },
                { new KeyValuePair <Type, string>(typeof(Currencies), "EUR"), Currencies.EUR },
                { new KeyValuePair <Type, string>(typeof(Currencies), "GBP"), Currencies.GBP },
                { new KeyValuePair <Type, string>(typeof(Currencies), "RUB"), Currencies.RUB },
                { new KeyValuePair <Type, string>(typeof(Currencies), "RUR"), Currencies.RUB },
                { new KeyValuePair <Type, string>(typeof(Currencies), "USD"), Currencies.USD },
                #endregion

                #region Фин.инструменты
                { new KeyValuePair <Type, string>(typeof(FinType), "CERTIFICATE"), FinType.Certificate },
                { new KeyValuePair <Type, string>(typeof(FinType), "DEPOSITARY RECEIPT"), FinType.DepositaryReceipt },
                { new KeyValuePair <Type, string>(typeof(FinType), "BOND"), FinType.Bond },
                { new KeyValuePair <Type, string>(typeof(FinType), "EQUITY"), FinType.Equity },
                { new KeyValuePair <Type, string>(typeof(FinType), "FUND"), FinType.Fund },
                { new KeyValuePair <Type, string>(typeof(FinType), "FX_RATE"), FinType.FxRate },
                { new KeyValuePair <Type, string>(typeof(FinType), "PERCENT_CURVE"), FinType.PercentCurve },
                #endregion
            };


            mapping.ET = new Dictionary <Enum, Type>()
            {
                { ScalarAttribute.DetailedType, typeof(FinTypeDetailedLevel) },
                { ScalarAttribute.Currency, typeof(Currencies) },
                { ScalarAttribute.FinType, typeof(FinType) },
            };

            Dictionary <string, object> sq = new Dictionary <string, object>()
            {
                { DataProvider.Input.MirReader.Provider.QUOTE, "MOEX" },
                { DataProvider.Input.MirReader.Provider.SCALAR, "MOEX" },
            };
            #endregion

            DataProvider.Input.MirReader.Provider MoexProvider =
                new DataProvider.Input.MirReader.Provider(connection, mapping);
            MoexProvider.SetParams(sq);

            #region mapping mir_cbr
            DataProvider.Input.MirReader.Mapping mapping2 = new DataProvider.Input.MirReader.Mapping();

            mapping2.AI = new Dictionary <Enum, string>()
            {
                #region Финансовые инструменты
                { FinType.Equity, "12" },
                { FinType.Bond, "13" },
                { FinType.Fund, "14" },
                { FinType.Certificate, "15" },
                { FinType.DepositaryReceipt, "16" },
                { FinType.Default, "20" },
                { TimeSeriesAttribute.Close, "3" },
                { ScalarAttribute.Name, "4" },
                { ScalarAttribute.Nominal, "9" },
                { ScalarAttribute.MatDate, "11" },
                { ScalarAttribute.Currency, "8" },
                { Currencies.CHF, "CHF" },
                { Currencies.EUR, "EUR" },
                { Currencies.USD, "USD" }
                #endregion
            };

            mapping2.TKE = new Dictionary <KeyValuePair <Type, string>, Enum>()
            {
                #region Валюта
                { new KeyValuePair <Type, string>(typeof(Currencies), "CHF"), Currencies.CHF },
                { new KeyValuePair <Type, string>(typeof(Currencies), "EUR"), Currencies.EUR },
                { new KeyValuePair <Type, string>(typeof(Currencies), "GBP"), Currencies.GBP },
                { new KeyValuePair <Type, string>(typeof(Currencies), "RUB"), Currencies.RUB },
                { new KeyValuePair <Type, string>(typeof(Currencies), "RUR"), Currencies.RUB },
                { new KeyValuePair <Type, string>(typeof(Currencies), "USD"), Currencies.USD },
                #endregion

                #region Фин.инструменты
                { new KeyValuePair <Type, string>(typeof(FinType), "CERTIFICATE"), FinType.Certificate },
                { new KeyValuePair <Type, string>(typeof(FinType), "DEPOSITARY RECEIPT"), FinType.DepositaryReceipt },
                { new KeyValuePair <Type, string>(typeof(FinType), "BOND"), FinType.Bond },
                { new KeyValuePair <Type, string>(typeof(FinType), "EQUITY"), FinType.Equity },
                { new KeyValuePair <Type, string>(typeof(FinType), "FUND"), FinType.Fund },
                { new KeyValuePair <Type, string>(typeof(FinType), "FX_RATE"), FinType.FxRate },
                { new KeyValuePair <Type, string>(typeof(FinType), "PERCENT_CURVE"), FinType.PercentCurve },
                #endregion
            };


            mapping2.ET = new Dictionary <Enum, Type>()
            {
                { ScalarAttribute.DetailedType, typeof(FinTypeDetailedLevel) },
                { ScalarAttribute.Currency, typeof(Currencies) },
                { ScalarAttribute.FinType, typeof(FinType) },
            };

            Dictionary <string, object> sq2 = new Dictionary <string, object>()
            {
                { DataProvider.Input.MirReader.Provider.QUOTE, "CBR" },
                { DataProvider.Input.MirReader.Provider.SCALAR, "CBR" },
            };
            #endregion

            DataProvider.Input.MirReader.Provider CbrProvider =
                new DataProvider.Input.MirReader.Provider(connection, mapping2);
            CbrProvider.SetParams(sq2);

            DataProvider.Input.CombinedProvider.Provider combinedProvider =
                new DataProvider.Input.CombinedProvider.Provider(new List <IMarketProvider>()
            {
                MoexProvider, CbrProvider
            });

            var positionTS = combinedProvider.GetTimeSeries(position, TimeSeriesAttribute.Close);
            var currencyTS = combinedProvider.GetTimeSeries(Currencies.USD, TimeSeriesAttribute.Close);

            Assert.IsTrue(positionTS != null && positionTS.Series.Count != 0 &&
                          currencyTS != null && currencyTS.Series.Count != 0);
            Console.WriteLine(positionTS.Series.Count);
            Console.WriteLine(currencyTS.Series.Count);
        }