private void SaveOrder(ExchangeName ex, OrderSide type, string orderId = "") { if (WebsocketExchanges(ex)) { _removedOrders[ex][type == OrderSide.BID ? 0 : 1] = orderId; } }
public override int GetHashCode() { unchecked { return(((ExchangeName != null ? ExchangeName.GetHashCode() : 0) * 397) ^ (RoutingKey != null ? RoutingKey.GetHashCode() : 0)); } }
public ExchangeModel(ExchangeName Exchange, Symbol symbolModel) { this.LastOrderbookUpdateWS = DateTime.UtcNow; this.StartTime = DateTime.UtcNow; this.tradeSem = new SemaphoreSlim(1, 1); this.MyTrades = new ObservableList <Trade>(new List <Trade>()); this.Exchange = Exchange; this.Symbol = new Observable <Symbol>(symbolModel); this.OrdersBids = new ObservableList <Order>(new List <Order>()); this.OrdersAsks = new ObservableList <Order>(new List <Order>()); this.CandlesM1 = new ObservableList <Candle>(new List <Candle>()); this.CandlesM5 = new ObservableList <Candle>(new List <Candle>()); this.CandlesM15 = new ObservableList <Candle>(new List <Candle>()); this.CandlesM30 = new ObservableList <Candle>(new List <Candle>()); this.CandlesH1 = new ObservableList <Candle>(new List <Candle>()); this.CandlesH4 = new ObservableList <Candle>(new List <Candle>()); this.CandlesD1 = new ObservableList <Candle>(new List <Candle>()); this.CandlesW1 = new ObservableList <Candle>(new List <Candle>()); this.OrderbookL2Bids = new ObservableList <OrderbookRecord>(new List <OrderbookRecord>()); this.OrderbookL2Asks = new ObservableList <OrderbookRecord>(new List <OrderbookRecord>()); this.Trades = new ObservableList <Trade>(new List <Trade>()); this.BaseBalance = new Observable <Balance>(new Balance(this.Symbol.Value.BaseCurrency)); this.QuoteBalance = new Observable <Balance>(new Balance(this.Symbol.Value.QuoteCurrency)); this.LastDealtOrderRefresh = DateTime.UtcNow.AddDays(-1); }
public static Exchange LoadExchange( ExchangeMonitor exchangeMonitor, ExchangeName exchangeName) { switch (exchangeName) { case ExchangeName.Binance: return(new BinanceExchange(exchangeMonitor)); case ExchangeName.Cryptopia: return(new CryptopiaExchange(exchangeMonitor)); case ExchangeName.EtherDelta: return(new EtherDeltaExchange(exchangeMonitor)); case ExchangeName.Kucoin: return(new KucoinExchange(exchangeMonitor)); case ExchangeName.GDax: return(new GDaxExchange(exchangeMonitor)); default: Debug.Fail("Missing Exchange"); return(null); } }
public Position(string symbol, ExchangeName exchange, decimal quantity, decimal averageEntryPrice) { Symbol = symbol; Exchange = exchange; Quantity = quantity; AverageEntryPrice = averageEntryPrice; }
public ExchangeMonitor( ExchangeMonitorConfig config) { Debug.Assert(instance == null); instance = this; foreach (KeyValuePair <string, string> aliasToName in config.coinAliasToName) { AddAlias(aliasToName.Key, aliasToName.Value); } foreach (string blacklistedCoin in config.blacklistedCoins) { blacklistedFullNameLowerList.Add(blacklistedCoin.ToLowerInvariant()); } exchangeList = new Exchange[config.supportedExchangeList.Length]; for (int i = 0; i < config.supportedExchangeList.Length; i++) { ExchangeName name = config.supportedExchangeList[i]; Exchange exchange = Exchange.LoadExchange(this, name); exchangeList[i] = exchange; } CompleteFirstLoad().Wait(); }
public Instrument(string symbol, decimal tickSize, ExchangeName exchange, bool active = false) { Symbol = symbol; Exchange = exchange; TickSize = tickSize; Active = active; }
public void GivenNameShouldCreate(string name) { var exchangeName = ExchangeName.Create(name); exchangeName.Should().NotBeNull(); exchangeName.Value.Should().Be(name); }
private bool IsExchangeDataValid() { if (ExchangeName.IsEmpty()) { SaveErrorMessage = LocalizedStrings.Str1461; } else if (ExchangeRusName.IsEmpty()) { SaveErrorMessage = LocalizedStrings.Str1462; } else if (ExchangeEngName.IsEmpty()) { SaveErrorMessage = LocalizedStrings.Str1463; } else if (CountryCode == null) { SaveErrorMessage = LocalizedStrings.Str1464; } else { return(true); } return(false); }
public override int GetHashCode() { unchecked { return(((ExchangeName != null ? ExchangeName.GetHashCode() : 0) * 397) ^ MaxConfirmAttempts); } }
public void GivenNameWhenSpaceAroundShouldTrim(string name, string expected) { var exchangeName = ExchangeName.Create(name); exchangeName.Should().NotBeNull(); exchangeName.Value.Should().Be(expected); }
public void GivenNamesWhenValuesAreSameShouldBeEquals() { var exchangeName1 = ExchangeName.Create("seedwork.cqrs"); var exchangeName2 = ExchangeName.Create("seedwork.cqrs"); exchangeName1.Should().Be(exchangeName2); }
private void OrderBookWebSocketHandler(ExchangeName exName, OrderBookEventArgs args) { var instrument = _wsInstruments[args.Instrument1]; var exchange = _wsExchanges[exName]; if (!exchange.ValidOrderPrices(args, instrument)) { return; } var priceArgs = new ExchangePricesEventArgs { CreatedAt = DateTime.UtcNow, Timestamp = args.Timestamp, Instrument1 = args.Instrument1, Instrument2 = args.Instrument2, OrderId = args.OrderId, Exchange = exchange.GetExchangeName(), IsOrderDeleted = args.IsOrderDeleted }; Task.Run(() => _dbRepo.SaveOrderBook(priceArgs, args.OrderBook)); instrument.InitExchangePrice(exchange, priceArgs); OnExchangePrices(null, priceArgs); }
/// <summary> /// Before using this controller, call Start(). /// </summary> public CrypnosticController( CrypnosticConfig config) { log.Trace(nameof(CrypnosticController)); Debug.Assert(config != null); Debug.Assert(config.supportedExchangeList.Length > 0); //Debug.Assert(instance == null); // won't be true if you stop then start. instance = this; coinMarketCap = new CoinMarketCapAPI(); foreach (KeyValuePair <string, string> aliasToName in config.coinAliasToName) { AddCoinAlias(aliasToName.Value, aliasToName.Key); } foreach (string blacklistedCoin in config.blacklistedCoins) { Debug.Assert(fullNameLowerToCoin.ContainsKey(blacklistedCoin.ToLowerInvariant()) == false); blacklistedFullNameLowerList.Add(blacklistedCoin.ToLowerInvariant()); } exchangeList = new Exchange[config.supportedExchangeList.Length]; for (int i = 0; i < config.supportedExchangeList.Length; i++) { ExchangeName name = config.supportedExchangeList[i]; Exchange exchange = Exchange.LoadExchange(name); exchangeList[i] = exchange; } }
internal void AssertValid() { if (BindingKey.IsEmpty() || QueueName.IsEmpty() || ExchangeName.IsEmpty()) { throw new InvalidOperationException($"{nameof(BindingKey)} properties {nameof(BindingKey)}, {nameof(QueueName)}, and {nameof(ExchangeName)} are all required for this operation"); } }
internal static Exchange LoadExchange( ExchangeName exchangeName) { switch (exchangeName) { case ExchangeName.Binance: return(new BinanceExchange()); case ExchangeName.Cryptopia: return(new CryptopiaExchange()); case ExchangeName.EtherDelta: return(new EtherDeltaExchange()); case ExchangeName.Kucoin: return(new KucoinExchange()); case ExchangeName.GDax: return(new GDaxExchange()); case ExchangeName.Idex: return(new IdexExchange()); case ExchangeName.AEX: return(new AEXExchange()); default: Debug.Fail("Missing Exchange"); return(null); } }
public void It_should_have_declared_an_exchange_with_name() { _exchangeDeclare.Should().Contain() .Two(frame => frame.Message.Exchange.Equals(ExchangeName.From("myExchange0"))); _exchangeDeclare.Should().Contain() .Two(frame => frame.Message.Exchange.Equals(ExchangeName.From("myExchange1"))); }
public void It_should_have_published_the_message_on_the_correct_exchange() { _basicPublish.Should().Contain() .Two(frame => frame.Message.Exchange.Equals(ExchangeName.From("myExchange0"))); _basicPublish.Should().Contain() .Two(frame => frame.Message.Exchange.Equals(ExchangeName.From("myExchange1"))); }
public void ReveiceTests() { var configuration = ServiceLocator.Current.GetInstance<IApplicationConfiguration<IMicroServicesCoreConfiguration>>(); configuration.Set(c => c.RabbitMqExchangeName, "PowerUps.Test.MicroServices.PushoverFacade"); var exchangeName = new ExchangeName(configuration.Get(c => c.RabbitMqExchangeName)); var sender = ServiceLocator.Current.GetInstance<IExternalMessageBusSender>(); var consumer = ServiceLocator.Current.GetAllInstances<IJob>() .OfType<ConsumeMessagesJob>() .First(); consumer.Start(); sender.Connect(exchangeName, configuration.ConnectionString(configuration.Get(c => c.RabbitMqConnectionStringName))); const string eventType = "powerups.notification.facade.pushover.send"; sender.Send( new { id = Guid.NewGuid(), version = 1, eventType, apiKey = "", userKey = "", message = "Test", tenant = "pushoverfacade.test", }, exchangeName, new RoutingKey(eventType)); Thread.Sleep(100000); }
public MatchingEventArgs(ExchangeName exchange, CurrencyName instrument2, double bidPrice, double askPrice, double fee) { Instrument2 = instrument2; Exchange = exchange; BidPrice = bidPrice; AskPrice = askPrice; TradingFee = fee; }
public UserAccount GetLastBalances(ExchangeName exchange) { return(SendReceiveMessage <DbBalanceCommand, UserAccount>( () => new DbBalanceCommand { Exchange = exchange }, () => RemoteCommandType.DbBalance )); }
public RestExchange( ExchangeMonitor exchangeMonitor, ExchangeName exchangeName, int maxRequestsPerMinute, string baseUrl) : base(exchangeMonitor, exchangeName, maxRequestsPerMinute) { restClient = new RestClient(baseUrl); }
public override int GetHashCode() { var result = ExchangeName != null?ExchangeName.GetHashCode() : 0; var prime = 31; // NOSONAR magic # result = (prime * result) + (RoutingKey != null ? RoutingKey.GetHashCode() : 0); return(result); }
public DbExchange GetExchangeInfo(ExchangeName exchange) { return(SendReceiveMessage <ExchangeInfoCommand, DbExchange>( () => new ExchangeInfoCommand { Exchange = exchange }, () => RemoteCommandType.DbExchangeInfo )); }
public void GivenExchangeWhenConfigureWithAlternateExchangeTwiceShouldNotThrow() { var exchangeName = ExchangeName.Create("seedwork.core"); var exchange = Exchange.Create("seedwork", ExchangeType.Direct); Func <Exchange> action = () => exchange.WithAlternateExchange(exchangeName) .WithAlternateExchange(exchangeName); action.Should().NotThrow(); }
{//TODO create open order items - maybe separate into placed order and open order public Order(string symbol, ExchangeName exchange, OrderDirection direction, decimal quantity, decimal price, OrderType type, TimeInForce timeInForce) { Symbol = symbol; Exchange = exchange; Direction = direction; Quantity = quantity; Price = price; Type = type; TimeInForce = timeInForce; }
/// <summary> /// Get a coin price in btc per day if we mining it. /// </summary> /// <param name="coinSymbol"></param> /// <param name="exchangeName"></param> /// <returns>btc</returns> public double GetTotalBtcMiningPerday(string coinSymbol, PoolName poolName, ExchangeName exchangeName) { double coinsPerDay = GetNumOfCoinMiningPerDay(coinSymbol, poolName); Debug.WriteLine(string.Format("{0} mining per day {1} {0} at pool {2}", coinSymbol, coinsPerDay, poolName)); string pairSymbol = coinSymbol + "-BTC"; double bidPrice = GetBidPrice(pairSymbol, exchangeName); return(coinsPerDay * bidPrice); }
public void GivenQueueWhenConfigureToSendExpiredMessagesToTwiceShouldNotThrow() { var exchangeName = ExchangeName.Create("seedwork"); var routingKey = RoutingKey.Create("seedwork.cqrs"); var queue = Queue.Create("seedwork.cqrs"); Func <Queue> action = () => queue.SendExpiredMessagesTo(exchangeName, routingKey) .SendExpiredMessagesTo(exchangeName, routingKey); action.Should().NotThrow(); }
public void GivenExchangeWhenConfigureWithAlternateExchangeShouldAddArgument() { var exchangeName = ExchangeName.Create("seedwork.core"); var exchange = Exchange.Create("seedwork", ExchangeType.Direct); exchange = exchange.WithAlternateExchange(exchangeName); exchange.Should().NotBeNull(); exchange.Arguments.ContainsKey("alternate-exchange").Should().BeTrue(); exchange.Arguments["alternate-exchange"].Should().Be(exchangeName.Value); }
public void Start() { var connectionStringName = _configuration.Get(c => c.RabbitMqConnectionStringName); var connectionString = _configuration.ConnectionString(connectionStringName); var exchangeName = new ExchangeName(_configuration.Get(c => c.RabbitMqExchangeName)); var queueName = new QueueName(_configuration.Get(c => c.RabbitMqQueueName)); var routingKeys = _messageParserFactory.GetRoutingKeys(); _receiver.Connect(exchangeName, connectionString); _receiver.Subscribe(queueName, b => Task.Factory.StartNew(() => Handle(b)), routingKeys.ToArray()); }
public RestExchange( ExchangeMonitor exchangeMonitor, ExchangeName exchangeName, int maxRequestsPerMinute, string baseUrl, Method method = Method.GET) : base(exchangeMonitor, exchangeName, maxRequestsPerMinute) { restClient = new RestClient(baseUrl); this.method = method; }
public ExchangePricesEventArgs(OrderBookEventArgs e, CurrencyName ins1, ExchangeName ex = ExchangeName.Bitstamp, CurrencyName ins2 = CurrencyName.USD) : this() { Instrument1 = ins1; Instrument2 = ins2; OrderBook = e.OrderBook; Exchange = ex; OrderId = e.OrderId; Timestamp = e.Timestamp; IsOrderDeleted = e.IsOrderDeleted; MicroTimestamp = e.MicroTimestamp; }
// construct a new exchange object public Exchange(ExchangeName Name) { this.exchangeName = Name.ToString(); }