public async Task <BaseTypes.Ticker> GetMarketPrice(BaseTypes.Market Market, InvokePrint Print) { try { Ticker tmp = await bittrex.GetTicker(Market.MarketName); if (tmp.Ask == null || tmp.Bid == null) { Print("Ask or Bid is null!"); return(null); } return(new BaseTypes.Ticker { Ask = tmp.Ask.Value, Bid = tmp.Bid.Value, }); } catch (Exception ex) { System.Media.SystemSounds.Beep.Play(); Print(String.Format("Ошибка BitrexApi GetMarketPrice: {0}.\r\nMarket: {1}.", ex.Message, Market.ToString())); return(null); } }
//max Limit=1000 public async Task <List <BaseTypes.Candle> > GetCandles(BaseTypes.Market Market, Candle_Interval Interval, int Limit, InvokePrint Print) { try { var tinterval = GetTimeInterval(Interval); var BCandles = await binanceClient.GetCandleSticks(Market.MarketName.Replace("-", ""), tinterval, null, null, Limit); var Candles = new List <BaseTypes.Candle>(); foreach (var t in BCandles) { Candles.Add(new BaseTypes.Candle { Open = t.Open, Hight = t.High, Low = t.Low, Close = t.Close, Time = TimeFromUTC(t.OpenTime) }); } return(Candles); } catch (Exception ex) { System.Media.SystemSounds.Beep.Play(); Print(String.Format("Ошибка BinanceApi GetCandles: {0}.\r\nMarket: {1}, Interval: {2}", ex.Message, Market.ToString(), Interval.ToString())); return(null); } }
public async Task <BaseTypes.Ticker> GetMarketPrice(BaseTypes.Market Market, InvokePrint Print) { try { var asdf = await binanceClient.GetPriceChange24H(Market.MarketName.Replace("-", "")); BaseTypes.Ticker ticker = null; foreach (var tmp in asdf) { if (tmp.Symbol == Market.MarketName.Replace("-", "")) { ticker = new BaseTypes.Ticker { Ask = tmp.AskPrice, Bid = tmp.BidPrice, }; break; } } return(ticker); } catch (Exception ex) { System.Media.SystemSounds.Beep.Play(); Print(String.Format("Ошибка BinanceApi GetMarketPrice: {0}.\r\nMarket: {1}.", ex.Message, Market.ToString())); return(null); } }
public async Task <BaseTypes.TradeResult> ExecuteMarket(BaseTypes.Market Market, double Amount, bool DirectionBuy, InvokePrint Print) { decimal rate = 0; decimal amount = 0; try { BaseTypes.Ticker ticker = await GetMarketPrice(Market, Print); if (DirectionBuy) { rate = (decimal)ticker.Ask; if (rate < 0.00001M) { rate += (decimal)((double)rate * 0.1); } else { rate += (decimal)((double)rate * 0.01); } } else { rate = (decimal)ticker.Bid; rate -= (decimal)((double)rate * 0.25); } rate = Math.Round(rate, 8); if (DirectionBuy) { amount = (decimal)Amount; } else { amount = Math.Round((decimal)Amount * (decimal)ticker.Bid, 8); } string uuid = await ExecuteOrder(Market, amount, rate, DirectionBuy, Print); BaseTypes.TradeResult tresult = new BaseTypes.TradeResult() { Symbol = Market.MarketName, OrderId = uuid, IsFilled = false }; return(tresult); } catch (Exception ex) { System.Media.SystemSounds.Beep.Play(); Print(String.Format("Ошибка BittrexApi ExecuteMarket: {0}.\r\nMarket: {1}, Amount: {2}, DirectionBuy: {3}.\r\nrate: {4}, amount: {5}.", ex.Message, Market.ToString(), Amount, DirectionBuy, rate, amount)); return(null); } }
public async Task <List <BaseTypes.Candle> > GetCandles(BaseTypes.Market Market, Candle_Interval Interval, int Limit, InvokePrint Print) { try { var tmp = await bittrex.GetCandles(Market.MarketName, Interval.ToString()); List <Candle> BCandles = tmp.ToList(); List <BaseTypes.Candle> lastByHistory = await CandleByMarketHistory(Market, Interval, Print); List <BaseTypes.Candle> Candles = new List <BaseTypes.Candle>(BCandles.Count); foreach (var t in BCandles) { Candles.Add(new BaseTypes.Candle { Open = t.Open, Hight = t.Hight, Low = t.Low, Close = t.Close, Time = t.Time }); } if (lastByHistory != null) { Candles.AddRange(lastByHistory); } return(Candles); } catch (Exception ex) { System.Media.SystemSounds.Beep.Play(); Print(String.Format("Ошибка BittrexApi GetCandles: {0}.\r\nMarket: {1}, Interval: {2}", ex.Message, Market.ToString(), Interval.ToString())); return(null); } }