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); }
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); }
//[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); }
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}"); }
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); }
//[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}"); }
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); }
//[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}"); }
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); }
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); }
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(); } }
//[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]); }