示例#1
0
        public void TestTradesToday()
        {
            //string filename = "today_trades.txt";
            string fileSummary        = "summary.xls";
            string fileVariability    = "variability.txt";
            string fileBrutto         = "brutto.txt";
            string fileBruttoFiltr    = "brutto_filtr.txt";
            string fileBruttoFiltrPro = "brutto_filtr_pro.txt";
            string fileTrades         = "trades.txt";

            MarketTradesRepository   mTR = new MarketTradesRepository();
            TradesBolingerRepository tBR = new TradesBolingerRepository();

            mTR = (MarketTradesRepository)StaticService.Deserializes(mTR.GetType().ToString(), mTR);
            tBR = (TradesBolingerRepository)StaticService.Deserializes("09.11.2016_070008", tBR);

            //for (int i = 3; i <= 3; i++)
            //{
            //    CalculationExtremumPrice(mTR, i, filename);
            //}

            StaticService.DeleteFile(fileSummary);
            StaticService.DeleteFile(fileVariability);
            StaticService.DeleteFile(fileTrades);
            StaticService.DeleteFile(fileBruttoFiltr);
            StaticService.DeleteFile(fileBruttoFiltrPro);
            StaticService.LogFileWriteNotDateTime("Profit sett\tProfit\tCount profit\tCount loss\tCount all", fileSummary, true);

            // оптимизация по профиту
            for (int i = 5; i <= 5; i++)
            {
                CalculationExtremumProfit(mTR, tBR, 5, i, fileSummary, fileTrades, fileVariability, fileBrutto, fileBruttoFiltr, fileBruttoFiltrPro);
            }
        }
示例#2
0
 /// <summary>
 /// Асинхронный вызов CalculationExtremumPrice
 /// </summary>
 private Task <string> TaskCalculationString(MarketTradesRepository mTR, ExtremumPrice _extPrice, decimal i, decimal ii, decimal iii)
 {
     return(Task.Run(() =>
     {
         return CalcExtremPriceString(mTR, _extPrice, i, ii, iii, true);
     }));
 }
示例#3
0
        // Вызов поиска экстремумов и вызов поиска экстремумов с дистанцией
        private string CalculationExtremumPrice(MarketTradesRepository _mTR, decimal _otkat, decimal _distance, decimal _profit, bool _write_trades)
        {
            ExtremumPrice _extPrice = new ExtremumPrice();

            _extPrice.CreateExtrem(_mTR, _otkat);
            return(_extPrice.CreateExtremDistance(_mTR, _otkat, _distance, _profit, _write_trades));
        }
示例#4
0
 /// <summary>
 /// Запуск поиска экстремумов
 /// </summary>
 public void CreateExtrem(MarketTradesRepository _mTR, decimal _otkat)
 {
     foreach (var item in _mTR)
     {
         this.ExtremumSearch(item.PriceTrades, item.DateTimeTrades, _otkat);
     }
 }
示例#5
0
 private void ExtremumDistanceProcess(MarketTradesRepository _mTR, decimal _otkat, decimal _distance, decimal _profit, bool _write_trades)
 {
     foreach (var item in _mTR)
     {
         this.ExtremumSearchDistance(item.PriceTrades, item.DateTimeTrades, _otkat, _distance, _profit, _write_trades);
     }
 }
示例#6
0
 private Task <ResultExtremDistance> TaskCalculation(MarketTradesRepository mTR, decimal i, decimal ii, decimal iii)
 {
     return(Task.Run(() =>
     {
         return CalculationExtremumPrice(mTR, i, ii, iii, false);
     }));
 }
示例#7
0
        /// <summary>
        /// Расчет Болинжера по _countPeriod и _kstd
        /// </summary>
        private async Task CreateRepositoryBolinger(MarketTradesRepository _mtr, int _countPeriod, double _kstd, string _fileNameInp)
        {
            double High_line = 0;
            double Midl_line = 0;
            double Low_line  = 0;

            double                   price;
            List <double>            priceList    = new List <double>();
            TradesBolingerRepository _trdBReposit = new TradesBolingerRepository();

            await Task.Run(() =>
            {
                foreach (ParametrMarketTrades item in _mtr)
                {
                    price = (double)item.PriceTrades;

                    priceList.Add(price);

                    if (priceList.Count == _countPeriod)
                    {
                        StaticCalculations.BollingerBands(priceList, _kstd, ref High_line, ref Midl_line, ref Low_line);
                        priceList.RemoveAt(0);
                        _trdBReposit.Add(new ParametrTradesBolinger(item.DateTimeTrades, item.NumberTrades, item.PriceTrades, item.SeccodeTrades, High_line, Low_line, Midl_line));
                    }
                }
                string _fileName = _fileNameInp + StaticService.GenerateKey(_countPeriod, _kstd);
                StaticService.Serializes(_trdBReposit, folderOut + _fileName);
            });
        }
示例#8
0
        /// <summary>
        /// Запуск расчета Болинжера по множеству параметров
        /// </summary>
        private async Task TaskMultiParametrBB(string _path, SettingsClass _sc)
        {
            MarketTradesRepository _marketTrad = (MarketTradesRepository)StaticService.Deserializes(_path);
            List <Task>            tasks       = new List <Task>();

            int    countPeriod = _sc.CountPeriodBB_Start;
            double k_stddev;
            string _fileNameInp = Path.GetFileNameWithoutExtension(_path) + "_";

            for (int i = 0; i < _sc.CountStepPeriod; i++)
            {
                k_stddev = _sc.CountStdDevBB_Start;

                for (int ii = 0; ii < _sc.CountStepStdDev; ii++)
                {
                    Task theTask = CreateRepositoryBolinger(_marketTrad, countPeriod, k_stddev, _fileNameInp);
                    tasks.Add(theTask);

                    k_stddev += _sc.StdDevBBStep;
                }
                countPeriod += _sc.PeriodBBStep;
            }

            await Task.WhenAll(tasks);
        }
示例#9
0
        public ObtainingDriver(RepositiryClasses _rC)
        {
            _allTradChannel = (AllTradesChannel)_rC.GetReference("AllTradesChannel");
            _allTradChannel.LoadedLineEvent += _allTradChannel_LoadedLineEvent;

            marketTradRepo = _rC.MarketTradRepo;
            settClass      = _rC.SettClass;

            id = 0;
        }
示例#10
0
        //--------------

        /// <summary>
        /// Запуск поиска экстремумов
        /// </summary>
        public void CreateExtrem(MarketTradesRepository _mTR, decimal _otkat, decimal _profit)
        {
            position   = 0;
            num_trades = 0;

            foreach (var item in _mTR)
            {
                this.ExtremumSearch(item.PriceTrades, item.DateTimeTrades, _otkat, _profit);
            }
        }
示例#11
0
        }//----------------

        /// <summary>
        /// Запуск поиска экстремумов с дистанцией
        /// Возвращает ResultExtremDistance
        /// </summary>
        public ResultExtremDistance CreateExtremDistanceResult(MarketTradesRepository _mTR, decimal _otkat, decimal _distance, decimal _profit, bool _write_trades)
        {
            ExtremumDistanceProcess(_mTR, _otkat, _distance, _profit, _write_trades);

            if (base.EqCurrent > 0 && base.CountTrades > 0)
            {
                return(new ResultExtremDistance(base.EqCurrent, base.Drawdown, _otkat, _distance, _profit));
            }

            return(new ResultExtremDistance());
        }
示例#12
0
        public string CreateExtremDistance(MarketTradesRepository _mTR, decimal _otkat, decimal _distance, decimal _profit, bool _write_trades, TimeSpan _starttime, TimeSpan _finishtime)
        {
            string _result = String.Empty;

            ExtremumDistanceProcess(_mTR, _otkat, _distance, _profit, _write_trades, _starttime, _finishtime);

            if (base.CountTrades > 0)
            {
                _result = base.EqCurrent + "\t" + base.CountTrades + "\t" + base.CountProfit + "\t" + base.CountLoss + "\t" + base.Drawdown + "\t" + _otkat + "\t" + _distance + "\t" + _profit + "\n";
            }

            return(_result);
        }//----------------
示例#13
0
        //---------
        private MarketTradesRepository ResWhereTime(MarketTradesRepository mTR, TimeSpan _start, TimeSpan _finish)
        {
            IEnumerable <ParametrMarketTrades> _whereRes = mTR.Where(x => x.DateTimeTrades.TimeOfDay >= _start && x.DateTimeTrades.TimeOfDay <= _finish);

            MarketTradesRepository _mtr_range = new MarketTradesRepository();

            foreach (ParametrMarketTrades item in _whereRes)
            {
                _mtr_range.Add(item);
            }

            return(_mtr_range);
        }
示例#14
0
        public async Task TestTradesTodayAsync()
        {
            string _result_test = String.Empty;

            TimeSpan _runTime;
            DateTime _startRun = DateTime.Now;

            decimal otkat    = 30;
            decimal distance = 30;
            decimal profit   = 30;

            List <Task <string> > tasks = new List <Task <string> >();

            MarketTradesRepository mTR = new MarketTradesRepository();

            mTR = (MarketTradesRepository)StaticService.Deserializes(mTR.GetType().ToString(), mTR);

            StaticService.DeleteFile("trade_log.txt");
            StaticService.DeleteFile("equ.txt");

            StaticService.LogFileWriteNotDateTime("EqCurrent\tCountTrades\tCountProfit\tCountLoss\tDrawdown\t_otkat\t_distance\t_profit", "equ.txt", true);

            for (int i = (int)otkat; i <= 200; i += 10)
            {
                for (int ii = i; ii <= 200; ii += 10)
                {
                    for (int iii = i; iii <= 200; iii += 10)
                    {
                        //ExtremumPrice _extPrice2 = new ExtremumPrice();
                        //CalculationExtremumPrice1(mTR, _extPrice2, i, ii, iii, false);

                        Task <string> theTask = TaskCalculation(mTR, i, ii, iii);
                        tasks.Add(theTask);
                    }
                }
            }

            await Task <string> .WhenAll(tasks);

            foreach (Task <string> item in tasks)
            {
                _result_test += item.Result;
            }


            _runTime = DateTime.Now - _startRun;
            StaticService.LogFileWriteNotDateTime(String.Format("{0:00}:{1:00}:{2:00}.{3:000}", _runTime.Hours, _runTime.Minutes, _runTime.Seconds, _runTime.Milliseconds), "runtime.txt", true);

            StaticService.LogFileWriteNotDateTime(_result_test, "equ.txt", true);
        }
示例#15
0
        /// <summary>
        /// Прогон по единичным параметрам
        /// </summary>
        public ExtremumPrice TestTradesToday1()
        {
            decimal otkat    = 80;
            decimal distance = 190;
            decimal profit   = 170;

            MarketTradesRepository mTR = new MarketTradesRepository();

            mTR = (MarketTradesRepository)StaticService.Deserializes(mTR.GetType().ToString(), mTR);

            StaticService.DeleteFile("trade_log.txt");
            StaticService.DeleteFile("equ.txt");

            return(CalculationExtremumPrice1(mTR, otkat, distance, profit, true));
        }
示例#16
0
        /// <summary>
        /// Task для конвертации в .dat
        /// </summary>
        private Task TaskConvert(byte[] _result, string _id)
        {
            StaticService.LogFileWrite(DateTime.Now.ToLongTimeString() + "  " + _id, "runtime.txt", true);

            return(Task.Run(() =>
            {
                string _text = Encoding.UTF8.GetString(_result);
                string[] _separator = new string[3] {
                    "\r\n", "\n", "\r"
                };
                string[] _mapStr = _text.Split(_separator, StringSplitOptions.RemoveEmptyEntries);

                string _date = String.Empty;
                string _time = String.Empty;
                decimal _price = 0;

                MarketTradesRepository marketTradRepo = new MarketTradesRepository();
                int _iD = 0;

                foreach (string _line in _mapStr)
                {
                    string[] _splites = Regex.Split(_line, paternRegEx1);

                    _iD++;
                    _date = _splites[0];
                    _time = _splites[1];

                    try
                    {
                        _price = Convert.ToDecimal(_splites[2]);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }

                    marketTradRepo.Add(new ParametrMarketTrades(_iD.ToString(), _date, _time, 0, _price, ""));
                }

                if (marketTradRepo.Count > 0)
                {
                    StaticService.Serializes(marketTradRepo, folder + marketTradRepo[0].DateTimeTrades.ToShortDateString());
                }

                StaticService.LogFileWrite(DateTime.Now.ToLongTimeString() + "  " + _id, "runtime.txt", true);
            }));
        }
示例#17
0
        /// <summary>
        /// Синхронная конвертация в .dat
        /// </summary>
        private void ConvertMy()
        {
            StreamReader file;

            string[] filePathes = StaticService.GetPathFiles(folder, patern1);

            foreach (string _path in filePathes) // проходим по файлам
            {
                MarketTradesRepository marketTradRepo;
                string  _date  = String.Empty;
                string  _time  = String.Empty;
                decimal _price = 0;

                using (file = new StreamReader(_path))
                {
                    string line;
                    marketTradRepo = new MarketTradesRepository();
                    int _id = 0;

                    while ((line = file.ReadLine()) != null) // проходим по стркам
                    {
                        string[] _splites = Regex.Split(line, paternRegEx1);

                        _id++;
                        _date = _splites[0];
                        _time = _splites[1];

                        try
                        {
                            _price = Convert.ToDecimal(_splites[2]);
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message);
                        }

                        marketTradRepo.Add(new ParametrMarketTrades(_id.ToString(), _date, _time, 0, _price, ""));
                    }
                }

                if (marketTradRepo.Count > 0)
                {
                    StaticService.Serializes(marketTradRepo, folder + marketTradRepo[0].DateTimeTrades.ToShortDateString());
                }
            }
        }
示例#18
0
        // Просто по экстремумам
        private void CalculationExtremumPrice(MarketTradesRepository _mTR, decimal _otkat, string _filename)
        {
            ExtremumPrice extPrice = new ExtremumPrice();

            decimal exchange_fee         = 0.47m; // биржевой сбор SBRF 0.47
            decimal brokerage_commission = 0.59m; // комиссия брокера 0.59
            decimal spred = 3m;

            // находим екстремумы
            extPrice.CreateExtrem(_mTR, _otkat);
            //StaticService.LogFileWrite("----------------Extremums--------------------", _filename, true);
            //foreach (var item in extPrice.Extremums)
            //{
            //    StaticService.LogFileWriteNotDateTime(item.Date_Time + "\t" + item.PriceHigh + "\t" + item.PriceLow, _filename, true);
            //}

            // считаем между ними дельту
            //StaticService.LogFileWrite("\n", filename, true);
            //StaticService.LogFileWriteNotDateTime("----------------считаем между ними дельту--------------------", _filename, true);
            extPrice.DeltaExtr();
            foreach (var item in extPrice.DeltaExtremums)
            {
                StaticService.LogFileWriteNotDateTime(Math.Abs(item).ToString(), "delta_log.txt", true);
            }

            StaticService.LogFileWriteNotDateTime("****************ОТКАТ <" + _otkat + ">****************", _filename, true);

            //&??????????????????
            for (decimal i = _otkat * 2; i <= _otkat * 8; i++)
            {
                decimal criticalSum = 0;

                // фильтруeм дельты
                StaticService.LogFileWriteNotDateTime("----------------фильтруeм дельты <" + i + ">--------------------", _filename, true);
                extPrice.FiltrDelta(i);
                foreach (var item in extPrice.FiltrDeltas)
                {
                    StaticService.LogFileWriteNotDateTime(Math.Abs(item).ToString(), _filename, true);

                    criticalSum += Math.Abs(item) - (_otkat * 2 + TransactionCosts(exchange_fee, brokerage_commission, spred) * 2);
                }
                StaticService.LogFileWriteNotDateTime(criticalSum.ToString(), _filename, true);
            }
        }
示例#19
0
        public RepositiryClasses()
        {
            DDEChannelCreate();

            // --1--
            marketTradesRepository = new MarketTradesRepository();
            testResultRepository   = new TestResultRepositiry();
            settingsClass          = new SettingsClass();

            // --2--
            // восстанавливаем сохраненные экземпляры
            DeserializesObject();

            // последний
            obtainingDriver  = new ObtainingDriver(this);
            convertToDat     = new ConvertToDat();
            calcBolinger     = new CalculationBolinger();
            testMarketDriver = new TestMarketDriver();
        }
示例#20
0
        public void CreateExtrem(MarketTradesRepository _mTR, decimal _otkat, TimeSpan _starttime, TimeSpan _finishtime)
        {
            bool     _search = false;
            TimeSpan _time_trades;

            foreach (var item in _mTR)
            {
                _time_trades = item.DateTimeTrades.TimeOfDay;

                if (_time_trades > _starttime && _time_trades < _finishtime)
                {
                    this.ExtremumSearch(item.PriceTrades, item.DateTimeTrades, _otkat);
                    _search = true;
                }
                if (_time_trades > _finishtime && _search)
                {
                    break;
                }
            }
        }//--------------------------
示例#21
0
        //----
        private void ExtremumDistanceProcess(MarketTradesRepository _mTR, decimal _otkat, decimal _distance, decimal _profit, bool _write_trades, TimeSpan _starttime, TimeSpan _finishtime)
        {
            bool     _search = false;
            TimeSpan _time_trades;

            foreach (var item in _mTR)
            {
                _time_trades = item.DateTimeTrades.TimeOfDay;

                if (_time_trades > _starttime && _time_trades < _finishtime)
                {
                    this.ExtremumSearchDistance(item.PriceTrades, item.DateTimeTrades, _otkat, _distance, _profit, _write_trades);
                    _search = true;
                }
                if (_time_trades > _finishtime && _search)
                {
                    break;
                }
            }
        }
示例#22
0
        //--------

        #region -Constructor-
        public ViewModel()
        {
            repositClasses     = new RepositiryClasses();
            manipulationCharts = new ManipulationCharts();

            marketTradRepo  = repositClasses.MarketTradRepo;
            testResultBufer = repositClasses.TestResReposit;

            settingsClass    = repositClasses.SettClass;
            testMarketDriver = repositClasses.TestmarketDriver;
            intraAdapt       = new IntradayAdaptation();

            // работа через файлы
            convertToDat = repositClasses.ConvToDat;
            calcBolinger = repositClasses.CalcBolinger;

            fromDate  = DateTime.Now;
            toDate    = fromDate;
            oneDay    = fromDate;
            countBest = 1;
        }
示例#23
0
 /// <summary>
 /// Вызов поиска экстремумов и вызов поиска экстремумов с дистанцией
 /// </summary>
 private string CalcExtremPriceString(MarketTradesRepository _mTR, ExtremumPrice _extPrice, decimal _otkat, decimal _distance, decimal _profit, bool _write_trades)
 {
     //_extPrice.CreateExtrem(_mTR, _otkat);
     return(_extPrice.CreateExtremDistance(_mTR, _otkat, _distance, _profit, _write_trades));
 }
示例#24
0
        public async Task AdaptationAsync()
        {
            string _result_test = String.Empty;

            TimeSpan _runTime;
            DateTime _startRun = DateTime.Now;

            TimeSpan steptime   = new TimeSpan(2, 0, 0);
            TimeSpan steptime1  = new TimeSpan(2, 0, 0);
            TimeSpan starttime  = new TimeSpan(10, 1, 0).Subtract(steptime1);
            TimeSpan finishtime = starttime.Add(steptime);
            TimeSpan stoptime   = new TimeSpan(19, 0, 0);
            decimal  otkat      = 30;
            decimal  distance   = 30;
            decimal  profit     = 30;

            MarketTradesRepository mTR = new MarketTradesRepository();

            mTR = (MarketTradesRepository)StaticService.Deserializes(mTR.GetType().ToString(), mTR);

            ExtremumPrice _extPrice = new ExtremumPrice();  // !!!

            StaticService.DeleteFile("trade_log.txt");
            StaticService.DeleteFile("equ.txt");
            StaticService.DeleteFile("trade_log.txt");
            StaticService.DeleteFile("group_log.txt");

            StaticService.LogFileWriteNotDateTime("EqCurrent\tCountTrades\tCountProfit\tCountLoss\tDrawdown\t_otkat\t_distance\t_profit", "equ.txt", true);
            //StaticService.LogFileWriteNotDateTime("EqCurrent\tDrawdown\t_otkat\t_distance\t_profit", "trade_log.txt", true);

            do
            {
                //-------------------------------------
                finishtime = finishtime.Add(steptime1);
                starttime  = finishtime.Subtract(steptime);

                if (finishtime > stoptime)
                {
                    finishtime = stoptime;
                }
                //--------------------------------------


                // I поиск оптимальных параметров
                List <Task <ResultExtremDistance> > tasksResult = new List <Task <ResultExtremDistance> >();
                List <Task <string> > tasksString = new List <Task <string> >();

                List <ResultExtremDistance> resultsExDist = new List <ResultExtremDistance>();

                MarketTradesRepository _mtr_range = ResWhereTime(mTR, starttime, finishtime);

                for (int i = (int)otkat; i <= 200; i += 10)
                {
                    for (int ii = i; ii <= 200; ii += 10)
                    {
                        for (int iii = i; iii <= 200; iii += 10)
                        {
                            Task <ResultExtremDistance> theTask = TaskCalculation(_mtr_range, i, ii, iii);
                            tasksResult.Add(theTask);
                        }
                    }
                }

                await Task <ResultExtremDistance> .WhenAll(tasksResult);

                foreach (Task <ResultExtremDistance> item in tasksResult)
                {
                    if (item.Result.otkat > 0)
                    {
                        resultsExDist.Add(item.Result);
                    }
                }

                // II выборка лучших параметров
                ResultExtremDistance _bestResExDist = MyGroupBy(resultsExDist);


                /*
                 * // III следующий интервал торгуем с выбранными параметрами
                 * MarketTradesRepository _mtr = ResWhereTime(mTR, finishtime, finishtime.Add(steptime1));
                 *
                 * StaticService.LogFileWriteNotDateTime("\nParametr\t" + _bestResExDist.eqcurrent + "\t" + _bestResExDist.drawdown + "\t" + _bestResExDist.otkat + "\t" + _bestResExDist.distance + "\t" + _bestResExDist.profit, "trade_log.txt", true);
                 *
                 * Task<string> theTaskMarket = TaskCalculationString(_mtr, _extPrice, _bestResExDist.otkat, _bestResExDist.distance, _bestResExDist.profit);
                 * tasksString.Add(theTaskMarket);
                 *
                 * await Task<string>.WhenAll(tasksString);
                 *
                 * foreach (Task<string> item in tasksString)
                 * {
                 *  _result_test += item.Result;
                 * }*/
            }while (finishtime < stoptime);

            _runTime = DateTime.Now - _startRun;
            StaticService.LogFileWriteNotDateTime(String.Format("{0:00}:{1:00}:{2:00}.{3:000}", _runTime.Hours, _runTime.Minutes, _runTime.Seconds, _runTime.Milliseconds), "runtime.txt", true);

            StaticService.LogFileWriteNotDateTime(_result_test, "equ.txt", true);
        }
示例#25
0
        //-------------------------------------------


        //
        private void CalculationExtremumProfit(MarketTradesRepository _mTR, TradesBolingerRepository _tBR, decimal _otkat, decimal _profit, string _fileSummary, string _fileTrades, string _filevariability, string _fileBrutto, string _fileBruttoFiltr, string _fileBruttoFiltrPro)
        {
            ExtremumProfit  extPrice  = new ExtremumProfit();
            Queue <decimal> BruttoQue = new Queue <decimal>();

            decimal exchange_fee         = 0.47m; // биржевой сбор SBRF 0.47
            decimal brokerage_commission = 0.59m; // комиссия брокера 0.59
            decimal spred = 3m;

            // --одновременно можно только один
            //extPrice.CreateExtrem(_mTR, _otkat, _profit);
            extPrice.CreateExtrem(_tBR, _otkat, _profit);
            //-------

            //----
            decimal _buyMany      = 0;
            decimal _selMany      = 0;
            decimal _bruttoGlobal = 0;
            int     _countProfit  = 0;
            int     _countLoss    = 0;
            int     _countAll     = 0;
            int     _variability  = 0;

            StaticService.LogFileWriteNotDateTime("Profit setting <" + _profit + ">", _fileTrades, true);
            StaticService.LogFileWriteNotDateTime("Profit setting <" + _profit + ">", _filevariability, true);
            StaticService.LogFileWriteNotDateTime("Profit setting <" + _profit + ">", _fileBrutto, true);
            StaticService.LogFileWriteNotDateTime("Profit setting <" + _profit + ">", _fileBruttoFiltr, true);
            StaticService.LogFileWriteNotDateTime("Profit setting <" + _profit + ">", _fileBruttoFiltrPro, true);

            foreach (var item in extPrice.TradesQueue)
            {
                StaticService.LogFileWriteNotDateTime(item.ToString(), _fileTrades, true);

                double    _num    = item.NumberTrades;
                Operation _oper   = item.Operation;
                decimal   _price  = item.PriceTrades;
                decimal   _brutto = 0;

                if (_oper == Operation.Buuy)
                {
                    _buyMany = _price;
                }
                else
                {
                    _selMany = _price;
                }

                if (_buyMany != 0 && _selMany != 0)
                {
                    _brutto        = _selMany - _buyMany;
                    _bruttoGlobal += _brutto;
                    _buyMany       = 0;
                    _selMany       = 0;

                    if (_brutto > 0)
                    {
                        _countProfit++;
                    }
                    else
                    {
                        _countLoss++;
                    }

                    _countAll++;

                    BruttoQue.Enqueue(_brutto);
                    StaticService.LogFileWriteNotDateTime(_brutto.ToString(), _fileBrutto, true);

                    //
                    VariablityCalc(_brutto, _filevariability, ref _variability);
                    //-----
                }
            }

            // фильтрация pro
            for (int i = 1; i <= 10; i++)
            {
                Queue <decimal> resultPositive = extPrice.FiltrBruttoPro(BruttoQue, i, 0);
                Queue <decimal> resultNegative = extPrice.FiltrBruttoPro(BruttoQue, 0, i);

                decimal _sum = 0;

                foreach (decimal item in resultPositive)
                {
                    _sum += item;
                }

                StaticService.LogFileWriteNotDateTime("FILTR_PRO + <" + i + "> = " + _sum.ToString(), _fileBruttoFiltrPro, true);

                _sum = 0;

                foreach (decimal item in resultNegative)
                {
                    _sum += item;
                }

                StaticService.LogFileWriteNotDateTime("FILTR_PRO - <" + i + "> = " + _sum.ToString(), _fileBruttoFiltrPro, true);
            }


            // циклическая фильтрация
            StaticService.LogFileWriteNotDateTime("SUMMARY_INP = " + _bruttoGlobal.ToString(), _fileBruttoFiltr, true);
            Queue <decimal> _filtr_result = extPrice.FiltrBrutto(BruttoQue);

            for (int i = 0; i < 5; i++)
            {
                decimal _sum = 0;

                foreach (decimal item in _filtr_result)
                {
                    _sum += item;
                }
                StaticService.LogFileWriteNotDateTime("SUMMARY_" + i + " = " + _sum.ToString(), _fileBruttoFiltr, true);

                _filtr_result = extPrice.FiltrBrutto(_filtr_result);
            }

            /*
             * // фильтруем brutto и выводим в файл
             * Queue<decimal> _filtrBrut_I = extPrice.FiltrBrutto(BruttoQue);
             * foreach (decimal item in _filtrBrut_I)
             * {
             *  StaticService.LogFileWriteNotDateTime(item.ToString(), _fileBruttoFiltr, true);
             * }
             *
             * // фильтруем _filtrBrut и выводим в файл
             * StaticService.LogFileWriteNotDateTime("--------LEVEL II", _fileBruttoFiltr, true);
             * Queue<decimal> _filtrBrut_II = extPrice.FiltrBrutto(_filtrBrut_I);
             * foreach (decimal item in _filtrBrut_II)
             * {
             *  StaticService.LogFileWriteNotDateTime(item.ToString(), _fileBruttoFiltr, true);
             * }
             *
             * // summary brutto_filtr
             * decimal _sum_brut_filtr = 0;
             * foreach (decimal item in _filtrBrut_I)
             * {
             *  _sum_brut_filtr += item;
             * }
             * StaticService.LogFileWriteNotDateTime("SUMMARY_I = " + _sum_brut_filtr.ToString(), _fileBruttoFiltr, true);
             *
             * _sum_brut_filtr = 0;
             * foreach (decimal item in _filtrBrut_II)
             * {
             *  _sum_brut_filtr += item;
             * }
             * StaticService.LogFileWriteNotDateTime("SUMMARY_II = " + _sum_brut_filtr.ToString(), _fileBruttoFiltr, true);
             * //---------------------------
             */
            //StaticService.LogFileWriteNotDateTime(_bruttoGlobal + " <" + _profit + ">", _filename, true);
            StaticService.LogFileWriteNotDateTime(_profit + "\t" + _bruttoGlobal + "\t" + _countProfit + "\t" + _countLoss + "\t" + _countAll, _fileSummary, true);
        }