private TradeCases GetBestCase()
        {
            if (MarketName == null)
            {
                return(TradeCases.empty);
            }

            TradeCases BL1B2 = TradeCases.BL1B2;
            TradeCases BL2B1 = TradeCases.BL2B1;
            TradeCases LB1L2 = TradeCases.LB1L2;
            TradeCases LB2L1 = TradeCases.LB2L1;

            List <CaseInfo> ciList = new List <CaseInfo>();

            ciList.Add(new CaseInfo()
            {
                Case          = BL1B2,
                TradeRatio    = CasesAnalisys[BL1B2].TradeRatio,
                WaitingRation = CasesAnalisys[BL1B2].WaitingRatio
            });

            ciList.Add(new CaseInfo()
            {
                Case          = BL2B1,
                TradeRatio    = CasesAnalisys[BL2B1].TradeRatio,
                WaitingRation = CasesAnalisys[BL2B1].WaitingRatio
            });

            ciList.Add(new CaseInfo()
            {
                Case          = LB1L2,
                TradeRatio    = CasesAnalisys[LB1L2].TradeRatio,
                WaitingRation = CasesAnalisys[LB1L2].WaitingRatio
            });

            ciList.Add(new CaseInfo()
            {
                Case          = LB2L1,
                TradeRatio    = CasesAnalisys[LB2L1].TradeRatio,
                WaitingRation = CasesAnalisys[LB2L1].WaitingRatio
            });

            TradeCases result = (from c in ciList
                                 where c.TradeRatio < 1 & c.WaitingRation < 1
                                 orderby c.WaitingRation
                                 select c.Case).FirstOrDefault();

            return(result);
        }
Пример #2
0
        public static TradeCases ToTradeCase(this object o)
        {
            string     s      = o as string;
            TradeCases result = TradeCases.empty;

            if (s != null)
            {
                switch (s)
                {
                case "BL1B2":
                    result = TradeCases.BL1B2;
                    break;

                case "BL2B1":
                    result = TradeCases.BL2B1;
                    break;

                case "LB1L2":
                    result = TradeCases.LB1L2;
                    break;

                case "LB2L1":
                    result = TradeCases.LB2L1;
                    break;

                case "BL1LB1":
                    result = TradeCases.BL1LB1;
                    break;

                case "BL2LB2":
                    result = TradeCases.BL2LB2;
                    break;

                default:
                    break;
                }
            }
            return(result);
        }
        private void UpdateGrid2()
        {
            string[] cases = new string[] { "bl1b2", "bl2b1", "lb1l2", "lb2l1" };
            for (int i = 0; i < Row; i++)
            {
                MarketBookInformation mbi;
                if (CurrentRecord == -1 || CurrentMarket.Mbi.Count <= CurrentRecord) // второе условие нужно так как оно, хз почему, иногда не выполняется
                {
                    mbi = CurrentMarket.Mbi.Last();
                }
                else
                {
                    mbi = CurrentMarket.Mbi[CurrentRecord];
                }

                if (mbi.CasesAnalisys.ContainsKey(arr[i]))
                {
                    var  tr          = mbi.CasesAnalisys[arr[i]].TradeRatio;
                    var  wr          = mbi.CasesAnalisys[arr[i]].WaitingRatio;
                    bool _isGapExist = mbi.CasesAnalisys[arr[i]].Gap > 0;

                    SolidColorBrush fc = GetForegroundColor(tr, _isGapExist);

                    TextBlock blc;
                    //заполняем TR
                    blc            = FindName(cases[i] + "_tr") as TextBlock;
                    blc.Foreground = fc;
                    blc.Text       = tr.ToString("N4", CultureInfo.CurrentCulture);

                    //заполняем WR
                    blc            = FindName(cases[i] + "_wr") as TextBlock;
                    blc.Foreground = fc;
                    blc.Text       = wr.ToString("N2", CultureInfo.CurrentCulture);

                    //заполняем ok для BestCase
                    blc            = FindName(cases[i] + "_mwr") as TextBlock;
                    blc.Foreground = fc;

                    TradeCases currentCase = cases[i].ToUpper().ToTradeCase();
                    TradeCases bestCase    = mbi.BestCase;

                    if (currentCase == bestCase && currentCase != TradeCases.empty)
                    {
                        blc.Text = "Ок";
                    }
                    else
                    {
                        blc.Text = "";
                    }
                }
                if (mbi.CasesAnalisys.ContainsKey(arr[i]))
                {
                    var  tr          = mbi.CasesAnalisys[arr[i]].TradeRatio;
                    var  wr          = mbi.CasesAnalisys[arr[i]].WaitingRatio;
                    bool _isGapExist = mbi.CasesAnalisys[arr[i]].Gap > 0;

                    SolidColorBrush fc = GetForegroundColor(tr, _isGapExist);

                    TextBlock blc;
                    //заполняем TR
                    blc            = FindName(cases[i] + "_tr") as TextBlock;
                    blc.Foreground = fc;
                    blc.Text       = tr.ToString("N4", CultureInfo.CurrentCulture);

                    //заполняем WR
                    blc            = FindName(cases[i] + "_wr") as TextBlock;
                    blc.Foreground = fc;
                    blc.Text       = wr.ToString("N2", CultureInfo.CurrentCulture);

                    //заполняем ok для BestCase
                    blc            = FindName(cases[i] + "_mwr") as TextBlock;
                    blc.Foreground = fc;

                    TradeCases currentCase = cases[i].ToUpper().ToTradeCase();
                    TradeCases bestCase    = mbi.BestCase;

                    if (currentCase == bestCase && currentCase != TradeCases.empty)
                    {
                        blc.Text = "Ок";
                    }
                    else
                    {
                        blc.Text = "";
                    }
                }
            }
        }