public void ZbSendTest()
        {
            var content = @"{
                              ""id"": 2157474,
                              ""order_type"": ""limit"",
                              ""quantity"": ""0.01"",
                              ""disc_quantity"": ""0.0"",
                              ""iceberg_total_quantity"": ""0.0"",
                              ""side"": ""sell"",
                              ""filled_quantity"": ""0.0"",
                              ""price"": ""500.0"",
                              ""created_at"": 1462123639,
                              ""updated_at"": 1462123639,
                              ""status"": ""live"",
                              ""leverage_level"": 1,
                              ""source_exchange"": ""QUOINE"",
                              ""product_id"": 1,
                              ""product_code"": ""CASH"",
                              ""order_fee"": ""0.0""
                            }";

            SetupRestMock <SendReply>(content);
            var configStore = new JsonConfigStore("config.json", new List <IConfigValidator>());
            var ba          = new Zb.BrokerAdapter(new RestClient(), configStore);
            var order       = new Order {
                Broker = Broker.Zb
            };

            ba.Send(order);
            Assert.AreEqual("2157474", order.BrokerOrderId);
            Assert.AreEqual(OrderStatus.New, order.Status);
            Assert.IsTrue((order.SentTime - DateTime.Now).Seconds < 10);
            Assert.IsTrue((order.LastUpdated - DateTime.Now).Seconds < 10);
        }
Esempio n. 2
0
        private static void SendRefreshCancelAssert(Broker broker)
        {
            var configStore  = new JsonConfigStore(ConfigPath, new List <IConfigValidator>());
            var brokerConfig = configStore.Config.Brokers.First(x => x.Broker == broker);
            var router       = new BrokerAdapterRouter(new List <IBrokerAdapter>
            {
                new Bitflyer.BrokerAdapter(new RestClient(), configStore),
                new Coincheck.BrokerAdapter(new RestClient(), configStore),
                new Quoine.BrokerAdapter(new RestClient(), configStore)
            });
            var quotes    = router.FetchQuotes(broker);
            var bestAsk   = quotes.Min(x => x.Price);
            var targetAsk = bestAsk - 50000;
            var order     = new Order
            {
                Broker         = broker,
                Size           = 0.01m,
                Price          = targetAsk,
                Side           = OrderSide.Buy,
                CashMarginType = brokerConfig.CashMarginType,
                LeverageLevel  = brokerConfig.LeverageLevel
            };

            Debug.WriteLine(order);
            Assert.AreEqual(OrderStatus.PendingNew, order.Status);
            Assert.AreEqual(null, order.BrokerOrderId);

            router.Send(order);

            Debug.WriteLine("Sent the order.");
            Debug.WriteLine(order);
            Assert.AreEqual(OrderStatus.New, order.Status);
            Assert.IsTrue(order.BrokerOrderId != null);
            Assert.IsTrue(!order.BrokerOrderId.IsNullOrEmpty());

            var lastUpdated = order.LastUpdated;

            while (true)
            {
                Debug.WriteLine("Checking if order is refreshed.");
                Thread.Sleep(500);

                router.Refresh(order);

                Debug.WriteLine("Refreshed.");
                Debug.WriteLine(order);
                if (lastUpdated != order.LastUpdated)
                {
                    break;
                }
                Debug.WriteLine("Not refreshed yet.");
            }
            Assert.AreEqual(OrderStatus.New, order.Status);

            router.Cancel(order);

            Debug.WriteLine("Canceled.");
            Debug.WriteLine(order);
            Assert.AreEqual(OrderStatus.Canceled, order.Status);
        }
Esempio n. 3
0
 //[Ignore]
 public void HpxGetBalanceTest2()
 {
     var broker       = Broker.Hpx;
     var configStore  = new JsonConfigStore(ConfigPath, new List <IConfigValidator>());
     var brokerConfig = configStore.Config.Brokers.First(x => x.Broker == broker);
     var ba           = new Hpx.BrokerAdapter(new RestClient(), configStore);
     var leg1Position = ba.GetBalance();
 }
        public void HpxCancelTest()
        {
            var configStore = new JsonConfigStore("config.json", new List <IConfigValidator>());
            var ba          = new BrokerAdapter(new RestClient(), configStore);
            var order       = new Order {
                Broker = Broker.Hpx, BrokerOrderId = "2157479", Size = 0.01m
            };

            ba.Cancel(order);
        }
        public void ZbRefreshTest()
        {
            var configStore = new JsonConfigStore("config.json", new List <IConfigValidator>());
            var ba          = new Zb.BrokerAdapter(new RestClient(), configStore);
            var order       = new Order {
                Broker = Broker.Zb, BrokerOrderId = "2018042215267240", Size = 0.1m
            };

            ba.Refresh(order);
        }
Esempio n. 6
0
        public void ZbFetchQuoteTest()
        {
            var broker       = Broker.Zb;
            var configStore  = new JsonConfigStore(ConfigPath, new List <IConfigValidator>());
            var brokerConfig = configStore.Config.Brokers.First(x => x.Broker == broker);
            var ba           = new Zb.BrokerAdapter(new RestClient(), configStore);
            var leg1Position = ba.FetchQuotes();

            Debug.WriteLine($"{broker} {leg1Position}");
        }
Esempio n. 7
0
        public void JsonConfigStoreConfigTest()
        {
            var store  = new JsonConfigStore("config_test.json", new List <IConfigValidator>());
            var config = store.Config;

            Assert.AreEqual(true, config.DemoMode);
            Assert.AreEqual(100, config.PriceMergeSize);
            Assert.AreEqual(3, config.Brokers.Count);
            Assert.AreEqual(Broker.Zb, config.Brokers[1].Broker);
        }
Esempio n. 8
0
        //[Ignore]
        public void CoincheckGetBtcPositionTest2()
        {
            var broker       = Broker.Coincheck;
            var configStore  = new JsonConfigStore(ConfigPath, new List <IConfigValidator>());
            var brokerConfig = configStore.Config.Brokers.First(x => x.Broker == broker);
            var ba           = new Coincheck.BrokerAdapter(new RestClient(), configStore);
            var btcPosition  = ba.GetBtcPosition();

            Debug.WriteLine($"{broker}: {btcPosition}");
        }
Esempio n. 9
0
        public void JsonConfigStoreConfigTest()
        {
            var store  = new JsonConfigStore("config_test.json");
            var config = store.Config;

            Assert.AreEqual(true, config.DemoMode);
            Assert.AreEqual(100, config.PriceMergeSize);
            Assert.AreEqual(3, config.Brokers.Count);
            Assert.AreEqual(Broker.Bitflyer, config.Brokers[1].Broker);
            Assert.AreEqual(0.30m, config.Brokers[1].MaxLongPosition);
        }
Esempio n. 10
0
        //[Ignore]
        public void QuoineGetBtcPositionTest2()
        {
            var broker       = Broker.Quoine;
            var configStore  = new JsonConfigStore(ConfigPath, new List <IConfigValidator>());
            var brokerConfig = configStore.Config.Brokers.First(x => x.Broker == broker);

            brokerConfig.CashMarginType = CashMarginType.Cash;
            var ba          = new Quoine.BrokerAdapter(new RestClient(), configStore);
            var btcPosition = ba.GetBtcPosition();

            Debug.WriteLine($"{broker} {brokerConfig.CashMarginType}: {btcPosition}");
        }
Esempio n. 11
0
        public void JsonConfigProvider()
        {
            var provider = new JsonConfigStore("./files/config.json");

            var config = provider.Read();

            Assert.AreEqual(4, config.Settings.Count());
            Assert.AreEqual(2, config.Settings.Where(x => x.Scope.Environment == "E2").Count());

            Assert.AreEqual("V4", config.Settings.Where(x => x.Scope.Environment == "E2")
                            .FirstOrDefault(x => x.Key == "K2").Definition);
        }
Esempio n. 12
0
        public void GetOrdersStateTest()
        {
            var     configStore = new JsonConfigStore("config.json", new List <IConfigValidator>());
            var     ba          = new BrokerAdapter(new RestClient(), configStore);
            string  response    = ba.GetOrdersState(1, 1);
            JObject j           = JObject.Parse(response);
            JArray  ja          = JArray.Parse(j["data"].ToString());
            List <OrderStateReply> ordersState = ja.ToObject <List <OrderStateReply> >();
            Order o = new Order();

            o.Size = 0.04m;
            ordersState[0].SetOrder(o);
        }
Esempio n. 13
0
        public ConfigController()
        {
            if (_config == null)
            {
                string path = HostingEnvironment.MapPath(@"~/App_Data/example.json");

                var json = File.ReadAllText(path);

                var provider = new JsonConfigStore(json);

                _config = provider.Read();
            }
        }
Esempio n. 14
0
        //[Ignore]
        public void CoincheckGetBtcPositionTest()
        {
            var broker       = Broker.Coincheck;
            var configStore  = new JsonConfigStore(ConfigPath, new List <IConfigValidator>());
            var brokerConfig = configStore.Config.Brokers.First(x => x.Broker == broker);
            var dic          = new Dictionary <CashMarginType, decimal>();

            foreach (CashMarginType cashMarginEnum in Enum.GetValues(typeof(CashMarginType)))
            {
                brokerConfig.CashMarginType = cashMarginEnum;
                var ba          = new Coincheck.BrokerAdapter(new RestClient(), configStore);
                var btcPosition = ba.GetBtcPosition();
                Debug.WriteLine($"{broker} {cashMarginEnum}: {btcPosition}");
                dic.Add(cashMarginEnum, btcPosition);
            }
            Assert.AreEqual(dic[CashMarginType.MarginClose], dic[CashMarginType.MarginOpen]);
            Assert.AreEqual(dic[CashMarginType.NetOut], dic[CashMarginType.MarginOpen]);
            Assert.AreEqual(dic[CashMarginType.MarginClose], dic[CashMarginType.NetOut]);
        }