コード例 #1
0
        private void CleanDupOrderAndPending()
        {
            try
            {
                //Print(">>>CleanDupOrderAndPending<<<<");

                var pes = PendingOrders.GroupBy(s => s).SelectMany(grp => grp.Skip(0));
                foreach (var pe in pes)
                {
                    NotiSound();
                    Print(pe.Label + " " + pe.TradeType + pe.OrderType);
                    //CancelPendingOrderAsync(pe);
                }

                var pos = Positions.GroupBy(s => s).SelectMany(grp => grp.Skip(0));
                foreach (var po in pos)
                {
                    NotiSound();
                    Print("มี PO เกิน>>" + po.Label + " " + po.TradeType);
                    //ClosePositionAsync(po);
                }

                //foreach (var po in Positions.Where(x => x.SymbolCode == Symbol.Code && x.Comment == CommentSytem))
                //{
                //    var countPo = Positions.Where(x => x.SymbolCode == Symbol.Code && x.Label.ToLower() == po.Label.ToLower() && x.TradeType == po.TradeType).Count();

                //    //มี po เกินก็เคลียก่อนเลย
                //    if (countPo > 1)
                //    {
                //        Print("มี position เกิน คือ " + po.Label);
                //        //ClosePosition(po);
                //    }
                //}

                //foreach (var pe in PendingOrders.Where(x => x.SymbolCode == Symbol.Code && x.Comment == CommentSytem))
                //{
                //    var Pos = Positions.Where(x => x.SymbolCode == Symbol.Code && x.Label == pe.Label && x.TradeType == pe.TradeType);
                //    var Pes = PendingOrders.Where(x => x.SymbolCode == Symbol.Code && x.Label == pe.Label && x.TradeType == pe.TradeType);

                //    if (Pes.Count() > 1)
                //    {
                //        Print("มี pending เกิน คือ " + pe.Label);
                //        //Notifications.PlaySound("C:\\Windows\\Media\\Alarm10.wav");
                //        CancelPendingOrder(pe);
                //    }

                //    ////มี po เกินก็เคลียก่อนเลย
                //    //if (Pes.Count() == 1)
                //    //{
                //    //    //มี po แล้ว ก็เคลีย pe นั้นทิ้ง
                //    //    if (Pos.Count() >= 1)
                //    //    {
                //    //        //Print("มี pending เกิน คือ " + pe.Label);
                //    //        CancelPendingOrder(pe);
                //    //    }
                //    //}
                //}

                ////ปิดpending ที่ไม่อยู่ในระยะปัจจุบัน
                //var lsLess = lsPrice.Where(a => a.Value <= Symbol.Ask).OrderByDescending(o => o.Key).Take(CountPending).ToList();
                //var lsMore = lsPrice.Where(a => a.Value >= Symbol.Ask).OrderBy(o => o.Key).Take(CountPending).ToList();
                //List<int> lsTrade = new List<int>();
                //foreach (var kk in lsLess.OrderBy(o => o.Key))
                //{
                //    lsTrade.Add(kk.Key);
                //}
                //foreach (var kk in lsMore.OrderBy(o => o.Key))
                //{
                //    lsTrade.Add(kk.Key);
                //}

                ////หา pending ที่ถูกตั้งที่ไม่อยู่ในระยะ
                //foreach (var pe in PendingOrders.Where(x => x.SymbolCode == Symbol.Code && x.Comment.ToLower() == "cb"))
                //{
                //    if (!lsTrade.Contains(Convert.ToInt32(pe.Label)))
                //    {
                //        //Print("มี pending เกินหลุดขอบ คือ " + pe.Label);
                //        CancelPendingOrder(pe);
                //    }
                //}

                ////ถ้าไม่มีอะไรซ้ำก็อัพเดต haveDup ว่าไม่มีแล้ว ก็จะหลุด lopp while
                //haveDup = false;

                //Print("------------CleanDupOrderAndPending-------------");
            } catch (Exception ex)
            {
                Print("Error in CleanDupOrderAndPending.");
                Print(ex.Message);
            }
        }