public void UpdateBalances_UIResultHandler(RequestItemGroup resultResponse)
        {
            if (RequestManager.IsResultHasErrors(resultResponse))
            {
                return;
            }

            Dictionary <string, Balance> balancesDict = (Dictionary <string, Balance>)resultResponse.items[0].result.resultData;
            List <Balance> balances = balancesDict.Values.ToList();

            balances = balances.Where(i => i.balance != 0).ToList();
            marketBalance.Add(resultResponse.market, balances);

            if (marketBalance.Count == marketFilter.Count)
            {
                //            labelBalanceBaseValue.Text = Helper.PriceToStringBtc(tradeLogic.balanceBase.balance);
                //            TradeLast lastbtcInUsdtPrice = (TradeLast)resultResponse.items[2].result.resultData;
                //            double btcInUsd = (lastbtcInUsdtPrice.bid + lastbtcInUsdtPrice.ask) / 2;
                //                averageUsdPrice = averageBtcPrice * btcInUsd;
                //            labelAverage.Text = "Average: " + Helper.PriceToStringBtc(averageBtcPrice) + " = " + Helper.PriceToString(averageUsdPrice) + "$";
                List <ExchangeBalance> totalBalances = ConvertBalancesToList();
                CalcTotalBalance(totalBalances);
                CreateBalancesGridView(totalBalances);
                requestBalancesStart = false;
            }
        }
Exemple #2
0
        public void SetBid_UIResultHandler(RequestItemGroup resultResponse)
        {
            if (RequestManager.IsResultHasErrors(resultResponse))
            {
                return;
            }
            AllOrders orders = (AllOrders)resultResponse.items[0].result.resultData;

            double quantityToSell = 0;

            if (Helper.IsDouble(textAmountSell.Text))
            {
                quantityToSell = Helper.ToDouble(textAmountSell.Text);
            }
            else
            {
                MessageBox.Show("Amount is Invalid");  return;
            }

            List <BuyOrder> buyOrders = orders.buyOrders.Where(o => o.quantity >= quantityToSell).OrderByDescending(o => o.rate).ToList();

            if (buyOrders.Count > 0)
            {
                textPriceSell.Text = Helper.PriceToStringBtc(buyOrders[0].rate);
            }
        }
Exemple #3
0
        public void UpdateMyOrdersHistory_UIResultHandler(RequestItemGroup resultResponse)
        {
            if (RequestManager.IsResultHasErrors(resultResponse))
            {
                return;
            }
            List <OrderDone> ordersHistory = (List <OrderDone>)resultResponse.items[0].result.resultData;

            var dataView = ordersHistory.Select(item => new
            {
                date      = item.doneDate,
                orderType = item.orderType,
                price     = Helper.PriceToStringBtc(item.price),
                amount    = Helper.TradeAmountToString(item.quantity),
                remain    = item.quantityRemaining
            }).ToList();
            List <DGVColumn> columns = new List <DGVColumn>()
            {
                new DGVColumn("date", "Date", "string"),
                new DGVColumn("orderType", "Type", "string"),
                new DGVColumn("price", "Price", "string"),
                new DGVColumn("amount", "Amount", "string"),
                new DGVColumn("remain", "Remain", "string")
            };
            DataGridViewWrapper gv = new DataGridViewWrapper(dgridMyOrdersHistory, true);

            gv.Create(dataView, columns);
            gv.AutoSizeDisplayedExcept("remain");
        }
Exemple #4
0
        public void SetAsk_UIResultHandler(RequestItemGroup resultResponse)
        {
            if (RequestManager.IsResultHasErrors(resultResponse))
            {
                return;
            }
            //            TradeLast tradelast = (TradeLast)resultResponse.result.resultData;
            //            if (tradelast.ask != 0) textPrice.Text = Helper.PriceToStringBtc(tradelast.ask);
            AllOrders orders = (AllOrders)resultResponse.items[0].result.resultData;

            double quantityToBuy = 0;

            if (Helper.IsDouble(textAmountBuy.Text))
            {
                quantityToBuy = Helper.ToDouble(textAmountBuy.Text);
            }
            else
            {
                MessageBox.Show("Amount is Invalid");
                return;
            }

            List <SellOrder> sellOrders = orders.sellOrders.Where(o => o.quantity >= quantityToBuy).OrderBy(o => o.rate).ToList();

            if (sellOrders.Count > 0)
            {
//                double price = tradeLogic.LastAskFromOrderBook(quantity);
                textPriceBuy.Text = Helper.PriceToStringBtc(sellOrders[0].rate);
            }
        }
Exemple #5
0
        public void UpdateTradeHistory_UIResultHandler(RequestItemGroup resultResponse)
        {
            if (RequestManager.IsResultHasErrors(resultResponse))
            {
                return;
            }
            List <Trade> tradeHistory = (List <Trade>)resultResponse.items[0].result.resultData;

            var dataView = tradeHistory.Select(item => new
            {
                date      = item.tradeDate,
                orderType = item.orderType,
                price     = Helper.PriceToStringBtc(item.price),
                amount    = Helper.TradeAmountToString(item.quantity),
                fillType  = item.fillType
            }).Take(40).ToList();
            List <DGVColumn> columns = new List <DGVColumn>()
            {
                new DGVColumn("date", "Date", "string"),
                new DGVColumn("orderType", "Type", "string"),
                new DGVColumn("price", "Price", "string"),
                new DGVColumn("amount", "Amount", "string"),
                new DGVColumn("fillType", "Fill", "string")
            };
            DataGridViewWrapper gv = new DataGridViewWrapper(dgridTradeHistory, true);

            gv.Create(dataView, columns);
            gv.AutoSizeFillExcept("date");
            gv.RowColorByCondition("orderType", "SELL", Color.LightPink);
        }
Exemple #6
0
        public void UpdateTradeState_UIResultHandler(RequestItemGroup resultResponse)
        {
            if (RequestManager.IsResultHasErrors(resultResponse))
            {
                return;
            }

            Dictionary <string, Balance> balances = (Dictionary <string, Balance>)resultResponse.items[0].result.resultData;

            tradeLogic.UpdateBalance(balances);

            if (labelBalanceBase.Text != "_")
            {
                if (tradeLogic.balanceBase.balance != tradeLogic.prevBalanceBase.balance)
                {
                    labelBalanceBaseBold.Start();
                }
                if (tradeLogic.balanceCounter.balance != tradeLogic.prevBalanceCounter.balance)
                {
                    labelBalanceMarketBold.Start();
                }
            }
            labelBalanceBase.Text        = tradeLogic.baseCurrencyName;
            labelBalanceMarket.Text      = tradeLogic.counterCurrencyName;
            labelBalanceBaseValue.Text   = Helper.PriceToStringBtc(tradeLogic.balanceBase.balance);
            labelBalanceMarketValue.Text = Helper.PriceToStringBtc(tradeLogic.balanceCounter.balance);
            labelAmountBuy.Text          = tradeLogic.counterCurrencyName;
            labelAmountSell.Text         = tradeLogic.counterCurrencyName;

            TradeLast tradelast = (TradeLast)resultResponse.items[1].result.resultData;

            tradeLogic.lastMarketPrice = tradelast;

            TradeLast lastbtcInUsdtPrice = (TradeLast)resultResponse.items[2].result.resultData;
            TradeLast trade = tradeLogic.lastMarketPrice;

            buttonBuy.Text       = "BUY  " + Helper.PriceToStringBtc(trade.ask);
            buttonSell.Text      = "SELL  " + Helper.PriceToStringBtc(trade.bid);
            buttonBuy.BackColor  = Color.FromArgb(buttoncolor.ToArgb());
            buttonSell.BackColor = Color.FromArgb(buttoncolor.ToArgb());
            if (trade.last >= trade.ask)
            {
                buttonBuy.BackColor = Color.Aquamarine;
            }
            if (trade.last <= trade.bid)
            {
                buttonSell.BackColor = Color.LightPink;//Color.LightPink;;
            }
            labelSpread.Text = Helper.CalcSpread(trade.ask, trade.bid).ToString("0.00") + " %";
            double averageBtcPrice = (trade.ask + trade.bid) / 2;
            double btcInUsd        = (lastbtcInUsdtPrice.bid + lastbtcInUsdtPrice.ask) / 2;
            double averageUsdPrice = averageBtcPrice;

            if (tradeLogic.baseCurrencyName != "USDT" && tradeLogic.baseCurrencyName != "USD")
            {
                averageUsdPrice = averageBtcPrice * btcInUsd;
            }
            labelAverage.Text = "Average: " + Helper.PriceToStringBtc(averageBtcPrice) + " = " + Helper.PriceToString(averageUsdPrice) + "$";
        }
Exemple #7
0
 public void Sell_UIResultHandler(RequestItemGroup resultResponse)
 {
     if (RequestManager.IsResultHasErrors(resultResponse))
     {
         return;
     }
     UpdateMyOpenOrders();
 }
Exemple #8
0
 public void CancellOrder_UIResultHandler(RequestItemGroup resultResponse)
 {
     if (RequestManager.IsResultHasErrors(resultResponse))
     {
         return;
     }
     //            List<OpenOrder> myOpenOrders = (List<OpenOrder>)resultResponse.result.resultData;
     //UpdateMyOpenOrders();
 }
Exemple #9
0
        public void UpdateMyOpenOrders_UIResultHandler(RequestItemGroup resultResponse)
        {
            if (RequestManager.IsResultHasErrors(resultResponse))
            {
                return;
            }
            List <OpenOrder> myOpenOrders = (List <OpenOrder>)resultResponse.items[0].result.resultData;

            var dataView = myOpenOrders.Select(item => new
            {
                openUuid  = item.openUuid,
                date      = item.openedDate,
                orderType = item.orderType,
                price     = Helper.PriceToStringBtc(item.price),
                amount    = Helper.PriceToStringBtc(item.quantity),
                remain    = Helper.PriceToStringBtc(item.quantityRemaining)
            }).ToList();

            GVButtonColumn  buttDeleteRow = new GVButtonColumn("delete", "", "c_button", "Cancel");
            List <GVColumn> columns       = new List <GVColumn>()
            {
                new GVColumn("openUuid", "Order Id", "string"),
                new GVColumn("date", "Date", "string"),
                new GVColumn("orderType", "Type", "string"),
                new GVColumn("price", "Price", "string"),
                new GVColumn("amount", "Amount", "string"),
                new GVColumn("remain", "Remain", "string"),
                buttDeleteRow
            };

            //            GVState gvstate = new GVState();
            if (gvMyOpenOrders == null)
            {
                gvMyOpenOrders = new DataGridViewExWrapper();
            }
            gvMyOpenOrders.Create(dgridOpenOrders, dataView, columns, true);
            gvMyOpenOrders.AutoSizeFillExcept("date");
            gvMyOpenOrders.RowColorByCondition("orderType", "SELL LIMIT", Color.LightPink);

            /*
             * List<DGVColumn> columns = new List<DGVColumn>()
             * {
             *  new DGVColumn( "date", "Date","string") ,
             *  new DGVColumn( "orderType", "Type","string") ,
             *  new DGVColumn( "price", "Price","string") ,
             *  new DGVColumn( "amount", "Amount","string") ,
             *  new DGVColumn( "remain", "Remain","string")
             * };
             * DataGridViewWrapper gv = new DataGridViewWrapper(dgridOpenOrders, true);
             * gv.Create(dataView, columns);
             * gv.AutoSizeDisplayedExcept("price");
             * gv.RowColorByCondition("orderType", "SELL LIMIT", Color.LightPink);
             */
        }
Exemple #10
0
        public void buttonCancellAllOrders_UIResultHandler(RequestItemGroup resultResponse)
        {
            if (RequestManager.IsResultHasErrors(resultResponse))
            {
                return;
            }
            List <OpenOrder> myOpenOrders = (List <OpenOrder>)resultResponse.items[0].result.resultData;

            foreach (OpenOrder order in myOpenOrders)
            {
                tradeLogic.CancellMyOrder(order, CancellOrder_UIResultHandler);
                break;
            }
            //UpdateMyOpenOrders();
        }
Exemple #11
0
        public void LastMarketPrice_UIResultHandler(RequestItemGroup resultResponse)
        {
            timerLastPrice.Start();
            if (RequestManager.IsResultHasErrors(resultResponse))
            {
                return;
            }
            TradeLast tradelast = (TradeLast)resultResponse.items[0].result.resultData;

            if (chart == null)
            {
                return;
            }
            chart.UpdatePrice(tradelast.last);
            chart.ReDrawFull();
        }
Exemple #12
0
        public void listBoxTicker_SelectedIndexChanged_UIResultHandler(RequestItemGroup resultResponse)
        {
            timerLastPrice.Start();
            if (RequestManager.IsResultHasErrors(resultResponse))
            {
                return;
            }
            Dictionary <int, PriceCandle> priceHistory = (Dictionary <int, PriceCandle>)resultResponse.items[0].result.resultData;

            chart = new PriceChart(ticker, Graphics.FromHwnd(panelChart.Handle), 0, 0, panelChart.Width, panelChart.Height);
            chart.SetData(priceHistory, ConvertDataType.BAR_5, ConvertDataType.BAR_15);
            chart.ShowVolume(checkBoxVolume.Checked);
            chart.ClearMouseSelection();
            chart.ReDrawFull();
            Text = "Chart " + market.MarketName() + "  " + ticker;
        }
Exemple #13
0
        public void buttonLoadChartData_UIResultHandler(RequestItemGroup resultResponse)
        {
            timerLastPrice.Start();
            if (RequestManager.IsResultHasErrors(resultResponse))
            {
                return;
            }
            Dictionary <int, PriceCandle> priceHistory = (Dictionary <int, PriceCandle>)resultResponse.items[0].result.resultData;

            if (chart == null || ticker == null)
            {
                return;
            }

            chart = new PriceChart(ticker, Graphics.FromHwnd(panelChart.Handle), 0, 0, panelChart.Width, panelChart.Height);
            chart.SetData(priceHistory, convertFromPeriod, viewResultPeriod);
            chart.ShowVolume(checkBoxVolume.Checked);
            chart.ReDrawFull();
            loadRequeststarted = false;
        }
Exemple #14
0
        public void GetMarketCurrent_UIResultHandler(RequestItemGroup resultResponse)
        {
            if (RequestManager.IsResultHasErrors(resultResponse))
            {
                return;
            }
            Dictionary <string, MarketCurrent> currenciesDict = (Dictionary <string, MarketCurrent>)resultResponse.items[0].result.resultData;

            //            Dictionary<string, TradePair> pairs = (Dictionary<string, TradePair>)resultResponse.items[0].result.resultData;

            if (!marketsLoaded)
            {
                if (Global.marketsState.curMarketPairs[resultResponse.market] == null)
                {
                    Dictionary <string, TradePair> tradePairs = new Dictionary <string, TradePair>();
                    foreach (KeyValuePair <string, MarketCurrent> pair in currenciesDict)
                    {
                        Pair      pairinfo = new Pair(pair.Value.ticker);
                        TradePair tpair    = new TradePair
                        {
                            currency1 = pairinfo.currency1,
                            currency2 = pairinfo.currency2,
                            isActive  = true,
                            ticker    = pair.Value.ticker
                        };

                        tradePairs.Add(pair.Key, tpair);
                    }
                    Global.marketsState.SetPairs(resultResponse.market, tradePairs);
                }


                bool allMarketsReady = true;
                foreach (var marketName in Global.markets.GetMarketList())
                {
                    if (Global.marketsState.curMarketPairs[marketName] == null)
                    {
                        allMarketsReady = false;
                        break;
                    }
                }
                if (allMarketsReady)
                {
                    marketsLoaded = true;
                }
            }

            if (marketsLoaded)
            {
                Market curmarket = ExchangeManager.GetMarketByMarketName(toolStripComboBoxMarket.Text);
                if (curmarket.HaveKey())
                {
                    toolButtonTickerBtc.Enabled = true;
                    toolButtonTickerUsd.Enabled = true;
                    if (curmarket.Options().AllPairRatesSupported)
                    {
                        toolStripButtonAlerts.Enabled = true;
                    }
                }
                if (curmarket.Options().ChartDataSupported)
                {
                    toolStripButtonChart.Enabled = true;
                }
                toolStripButtonBalance.Enabled  = true;
                toolStripComboBoxMarket.Enabled = true;
                labelInfo.Text = "";
            }

            List <MarketCurrentView> currencies = currenciesDict.Values.Select(item => new MarketCurrentView
            {
                ticker        = item.ticker,
                origPrice     = item.lastPrice,
                lastPrice     = item.lastPrice,
                lastPriceUSD  = 0,
                percentChange = item.percentChange,
                volumeBtc     = item.volumeBtc,
                volumeUSDT    = item.volumeUSDT
            }).ToList();


            if (currenciesDict.ContainsKey("USDT_BTC"))
            {
                double btcPrice = currenciesDict["USDT_BTC"].lastPrice;
                foreach (var item in currencies)
                {
                    if (item.ticker.StartsWith("BTC"))
                    {
                        item.volumeUSDT = item.volumeBtc * btcPrice;
                    }

                    if (item.ticker.StartsWith("BTC"))
                    {
                        item.lastPriceUSD = item.lastPrice * btcPrice;
                    }
                    else if (item.ticker.StartsWith("USDT"))
                    {
                        double usdprice = item.lastPrice;
                        item.lastPriceUSD = usdprice;
                        item.lastPrice    = item.lastPrice / btcPrice;
                    }
                }
            }
            currencies = currencies.OrderByDescending(x => x.volumeUSDT).ToList();

            List <MarketCurrentView> currenciesCopy = new List <MarketCurrentView>();

            foreach (MarketCurrentView item in currencies)
            {
                MarketCurrentView newItem = new MarketCurrentView()
                {
                    ticker        = item.ticker,
                    origPrice     = item.origPrice,
                    lastPrice     = item.lastPrice,
                    lastPriceUSD  = item.lastPriceUSD,
                    percentChange = item.percentChange,
                    volumeBtc     = item.volumeBtc,
                    volumeUSDT    = item.volumeUSDT
                };
                currenciesCopy.Add(newItem);
            }
            if (ExchangeManager.GetMarketByMarketName(resultResponse.market).Options().AllPairRatesSupported)
            {
                Global.marketsState.Update(resultResponse.market, currenciesCopy);
            }


            if (resultResponse.market != toolStripComboBoxMarket.Text)
            {
                return;
            }


            var dataView = currencies.Select(item => new
            {
                ticker               = item.ticker,
                lastPrice            = item.lastPrice,
                lastPriceUSDT        = item.lastPriceUSD,
                percentChange        = item.percentChange,
                volumeBtc            = item.volumeBtc,
                volumeUSDT           = item.volumeUSDT,
                lastPriceDisplay     = Helper.PriceToStringBtc(item.lastPrice),
                lastPriceUSDTDisplay = item.lastPriceUSD.ToString("N3") + " $",
                percentChangeDisplay = item.percentChange.ToString("0") + " %",
                volumeBtcDisplay     = item.volumeBtc.ToString("N2"),
                volumeUSDTDisplay    = item.volumeUSDT.ToString("N0") + " $"
            }).ToList();
            List <GVColumn> columns = new List <GVColumn>()
            {
                new GVColumn("ticker", "Currency", "string"),
                new GVColumn("lastPrice", "Price BTC", "DisplayField", "lastPriceDisplay"),
                new GVColumn("lastPriceUSDT", "Price $", "DisplayField", "lastPriceUSDTDisplay"),
                new GVColumn("percentChange", "Change %", "DisplayField", "percentChangeDisplay"),
                new GVColumn("volumeBtc", "Volume BTC", "DisplayField", "volumeBtcDisplay"),
                new GVColumn("volumeUSDT", "Volume $", "DisplayField", "volumeUSDTDisplay"),
                new GVColumn("lastPriceDisplay", "Price BTC", "string", "", false),
                new GVColumn("lastPriceUSDTDisplay", "Price $", "string", "", false),
                new GVColumn("percentChangeDisplay", "Change %", "string", "", false),
                new GVColumn("volumeBtcDisplay", "Volume BTC", "string", "", false),
                new GVColumn("volumeUSDTDisplay", "Volume $", "string", "", false)
            };

            if (gvMarkets == null)
            {
                gvMarkets = new DataGridViewExWrapper();
            }
            gvMarkets.Create(dgridMarkets, dataView, columns, true);
            DataGridViewCellStyle styleTicker = new DataGridViewCellStyle {
                Font = new Font("Tahoma", 9.0F, FontStyle.Bold), ForeColor = Color.Black
            };
            DataGridViewCellStyle stylePrice = new DataGridViewCellStyle {
                Font = new Font("Tahoma", 9.0F, FontStyle.Regular), ForeColor = Color.Black
            };

            gvMarkets.SetColumnStyle("ticker", styleTicker);
            gvMarkets.SetColumnStyle("lastPrice", stylePrice);
            gvMarkets.SetColumnStyle("lastPriceUSDT", stylePrice);
            //gvMarkets.AutoSizeFillExcept("volumeUSDT");
            //            gv.RowColorByCondition("orderType", (string s) => { return s == "1"; }, Color.LightPink);


            timerMarkets.Start();
        }
Exemple #15
0
        public void UpdateOrderBook_UIResultHandler(RequestItemGroup resultResponse)
        {
            if (RequestManager.IsResultHasErrors(resultResponse))
            {
                return;
            }

            try
            {
                AllOrders orders = (AllOrders)resultResponse.items[0].result.resultData;

                var dataViewSell = orders.sellOrders.Select(item => new
                {
                    amount = Helper.PriceToStringBtc(item.quantity),
                    price  = Helper.PriceToStringBtc(item.rate)
                }).Take(150).ToList();
                List <DGVColumn> columnsSell = new List <DGVColumn>()
                {
                    new DGVColumn("amount", "Amount", "string"),
                    new DGVColumn("price", "Price", "string")
                };
                DataGridViewWrapper gvSell = new DataGridViewWrapper(dgridSellOrders, true);
                gvSell.Create(dataViewSell, columnsSell);
                gvSell.AutoSizeFillExcept("amount");

                var dataViewBuy = orders.buyOrders.Select(item => new
                {
                    price  = Helper.PriceToStringBtc(item.rate),
                    amount = Helper.PriceToStringBtc(item.quantity)
                }).Take(150).ToList();
                DataGridViewWrapper gvBuy = new DataGridViewWrapper(dgridBuyOrders, true);
                gvBuy.Create(dataViewBuy, columnsSell);
                // gvBuy.AutoSizeFillExcept("amount");


                // contr orderbook data grid
                var dataViewContrSell = orders.sellOrders.Select(item => new
                {
                    price  = Helper.PriceToStringBtc(item.rate),
                    amount = Helper.PriceToStringBtc(item.quantity)
                }).Take(5).OrderByDescending(o => o.price).ToList();

                DataGridViewWrapper gvContrSell = new DataGridViewWrapper(dGridContrSell, true);
                gvContrSell.Create(dataViewContrSell, columnsSell);
//                if (dGridContrSell.RowCount>0)
//                  dGridContrSell.FirstDisplayedScrollingRowIndex = dGridContrSell.RowCount - 1;

                var dataViewContrBuy = orders.buyOrders.Select(item => new
                {
                    price  = Helper.PriceToStringBtc(item.rate),
                    amount = Helper.PriceToStringBtc(item.quantity)
                }).Take(5).ToList();
                DataGridViewWrapper gvContrBuy = new DataGridViewWrapper(dGridContrBuy, true);
                gvContrBuy.Create(dataViewContrBuy, columnsSell);
                gvContrBuy.ShowColumnHeaders(false);
            }
            catch (Exception ex)
            {
                Logman.Log(ex);
            }
        }