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; } }
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); } }
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"); }
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); } }
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); }
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) + "$"; }
public void Sell_UIResultHandler(RequestItemGroup resultResponse) { if (RequestManager.IsResultHasErrors(resultResponse)) { return; } UpdateMyOpenOrders(); }
public void CancellOrder_UIResultHandler(RequestItemGroup resultResponse) { if (RequestManager.IsResultHasErrors(resultResponse)) { return; } // List<OpenOrder> myOpenOrders = (List<OpenOrder>)resultResponse.result.resultData; //UpdateMyOpenOrders(); }
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); */ }
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(); }
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(); }
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; }
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; }
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(); }
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); } }