Exemplo n.º 1
0
 private void SaveOrder(ExchangeName ex, OrderSide type, string orderId = "")
 {
     if (WebsocketExchanges(ex))
     {
         _removedOrders[ex][type == OrderSide.BID ? 0 : 1] = orderId;
     }
 }
Exemplo n.º 2
0
 public override int GetHashCode()
 {
     unchecked
     {
         return(((ExchangeName != null ? ExchangeName.GetHashCode() : 0) * 397) ^ (RoutingKey != null ? RoutingKey.GetHashCode() : 0));
     }
 }
Exemplo n.º 3
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);
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
 public Position(string symbol, ExchangeName exchange, decimal quantity, decimal averageEntryPrice)
 {
     Symbol            = symbol;
     Exchange          = exchange;
     Quantity          = quantity;
     AverageEntryPrice = averageEntryPrice;
 }
Exemplo n.º 6
0
        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();
        }
Exemplo n.º 7
0
 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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
 public override int GetHashCode()
 {
     unchecked
     {
         return(((ExchangeName != null ? ExchangeName.GetHashCode() : 0) * 397) ^ MaxConfirmAttempts);
     }
 }
Exemplo n.º 11
0
        public void GivenNameWhenSpaceAroundShouldTrim(string name, string expected)
        {
            var exchangeName = ExchangeName.Create(name);

            exchangeName.Should().NotBeNull();
            exchangeName.Value.Should().Be(expected);
        }
Exemplo n.º 12
0
        public void GivenNamesWhenValuesAreSameShouldBeEquals()
        {
            var exchangeName1 = ExchangeName.Create("seedwork.cqrs");
            var exchangeName2 = ExchangeName.Create("seedwork.cqrs");

            exchangeName1.Should().Be(exchangeName2);
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
        /// <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;
            }
        }
Exemplo n.º 15
0
 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");
     }
 }
Exemplo n.º 16
0
        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);
        }
Exemplo n.º 20
0
 public MatchingEventArgs(ExchangeName exchange, CurrencyName instrument2, double bidPrice, double askPrice, double fee)
 {
     Instrument2 = instrument2;
     Exchange    = exchange;
     BidPrice    = bidPrice;
     AskPrice    = askPrice;
     TradingFee  = fee;
 }
Exemplo n.º 21
0
 public UserAccount GetLastBalances(ExchangeName exchange)
 {
     return(SendReceiveMessage <DbBalanceCommand, UserAccount>(
                () => new DbBalanceCommand {
         Exchange = exchange
     },
                () => RemoteCommandType.DbBalance
                ));
 }
Exemplo n.º 22
0
 public RestExchange(
     ExchangeMonitor exchangeMonitor,
     ExchangeName exchangeName,
     int maxRequestsPerMinute,
     string baseUrl)
     : base(exchangeMonitor, exchangeName, maxRequestsPerMinute)
 {
     restClient = new RestClient(baseUrl);
 }
Exemplo n.º 23
0
        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);
        }
Exemplo n.º 24
0
 public DbExchange GetExchangeInfo(ExchangeName exchange)
 {
     return(SendReceiveMessage <ExchangeInfoCommand, DbExchange>(
                () => new ExchangeInfoCommand {
         Exchange = exchange
     },
                () => RemoteCommandType.DbExchangeInfo
                ));
 }
Exemplo n.º 25
0
        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();
        }
Exemplo n.º 26
0
 {//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;
     }
Exemplo n.º 27
0
        /// <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);
        }
Exemplo n.º 28
0
        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();
        }
Exemplo n.º 29
0
        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());
        }
Exemplo n.º 31
0
 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;
 }
Exemplo n.º 32
0
        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;
        }
Exemplo n.º 33
0
 // construct a new exchange object
 public Exchange(ExchangeName Name)
 {
     this.exchangeName = Name.ToString();
 }