public void GetNextDelayTest() { var strategy = new LinearRetryStrategy(1000); var delay01 = strategy.GetNextDelay(); Assert.AreEqual(0, delay01); var delay02 = strategy.GetNextDelay(); Assert.AreEqual(1000, delay02); var delay03 = strategy.GetNextDelay(); Assert.AreEqual(1000, delay03); var delay04 = strategy.GetNextDelay(); Assert.AreEqual(1000, delay04); var delay05 = strategy.GetNextDelay(); Assert.AreEqual(1000, delay05); var delay06 = strategy.GetNextDelay(); Assert.AreEqual(1000, delay06); }
// NOTE: Use Demo instances for tests private static async Task Run() { var retryStrategy = new LinearRetryStrategy(TimeSpan.FromSeconds(10), 50); var generator = HttpClientGenerator.BuildForUrl("http://localhost:5000").WithApiKey("margintrading") .WithRetriesStrategy(retryStrategy).Create(); await CheckMarginParametersAsync(generator); //await CheckAccountsAsync(generator); //await CheckOrdersAsync(generator); //await CheckPricesAsync(generator); Console.WriteLine("Successfuly finished"); }
private static async Task Run() { var retryStrategy = new LinearRetryStrategy(TimeSpan.FromSeconds(10), 50); // var generator = HttpClientGenerator.BuildForUrl("http://localhost:5040") // .WithRetriesStrategy(retryStrategy).Create(); //var generator = HttpClientGenerator.BuildForUrl("http://mt-tradinghistory.mt.svc.cluster.local") // .WithRetriesStrategy(retryStrategy).Create(); // await CheckOrderEventsPaginatedApiAsync(generator); //await CheckDealsApiAsync(generator); // await CheckPositionEventsPaginatedApiAsync(generator); await CheckPositionHistoryRepoAsync(); Console.WriteLine("Successfully finished"); }
// NOTE: Use Demo instances for tests private static async Task Run() { var services = new ServiceCollection(); var builder = new ContainerBuilder(); var retryStrategy = new LinearRetryStrategy(TimeSpan.FromSeconds(10), 50); services.RegisterMtBackendClient(HttpClientGenerator.BuildForUrl("http://localhost:5000") .WithApiKey("margintrading").WithRetriesStrategy(retryStrategy).Create()); services.RegisterMtDataReaderClient(HttpClientGenerator.BuildForUrl("http://localhost:5008") .WithApiKey("margintrading").WithRetriesStrategy(retryStrategy).Create()); builder.Populate(services); var container = builder.Build(); var backendClient = container.Resolve <IMtBackendClient>(); await backendClient.ScheduleSettings.ListExclusions().Dump(); var excl = await backendClient.ScheduleSettings.CreateExclusion(new DayOffExclusionInputContract { AssetPairRegex = "lol", Start = DateTime.Now.AddDays(-1), End = DateTime.Now.Date, IsTradeEnabled = false, }).Dump(); var id = excl.Id; var ex = await backendClient.ScheduleSettings.GetExclusion(id).Dump(); ex.AssetPairRegex = "^btc"; await backendClient.ScheduleSettings.UpdateExclusion(id, ex).Dump(); await backendClient.ScheduleSettings.GetExclusion(id).Dump(); await backendClient.ScheduleSettings.ListCompiledExclusions().Dump(); await backendClient.ScheduleSettings.DeleteExclusion(id).Dump(); await backendClient.ScheduleSettings.GetExclusion(id).Dump(); var s = await backendClient.ScheduleSettings.GetSchedule().Dump(); s.AssetPairsWithoutDayOff.Add("BTCRABBIT"); await backendClient.ScheduleSettings.SetSchedule(s).Dump(); s.AssetPairsWithoutDayOff.Remove("BTCRABBIT"); await backendClient.ScheduleSettings.SetSchedule(s).Dump(); var assetPairSettingsInputContract = new AssetPairContract { Id = "BTCUSD.test", BasePairId = "BTCUSD", LegalEntity = "LYKKETEST", StpMultiplierMarkupBid = 0.9m, StpMultiplierMarkupAsk = 1.1m, MatchingEngineMode = MatchingEngineModeContract.MarketMaker, Name = "BTCUSD.test name", Accuracy = 123, BaseAssetId = "BTC", QuoteAssetId = "USD", }; await backendClient.AssetPairsEdit.Delete("BTCUSD.test").Dump(); var result = await backendClient.AssetPairsEdit.Insert("BTCUSD.test", assetPairSettingsInputContract) .Dump(); CheckAssetPair(result, assetPairSettingsInputContract); assetPairSettingsInputContract.MatchingEngineMode = MatchingEngineModeContract.Stp; var result2 = await backendClient.AssetPairsEdit.Update("BTCUSD.test", assetPairSettingsInputContract) .Dump(); CheckAssetPair(result2, assetPairSettingsInputContract); var dataReaderClient = container.Resolve <IMtDataReaderClient>(); var list = await dataReaderClient.AssetPairsRead.List().Dump(); var ours = list.First(e => e.Id == "BTCUSD.test"); CheckAssetPair(ours, assetPairSettingsInputContract); var get = await dataReaderClient.AssetPairsRead.Get("BTCUSD.test").Dump(); CheckAssetPair(get, assetPairSettingsInputContract); var nonexistentGet = await dataReaderClient.AssetPairsRead.Get("nonexistent").Dump(); nonexistentGet.RequiredEqualsTo(null, nameof(nonexistentGet)); var getByMode = await dataReaderClient.AssetPairsRead.List("LYKKETEST", MatchingEngineModeContract.Stp) .Dump(); var ours2 = getByMode.First(e => e.Id == "BTCUSD.test"); CheckAssetPair(ours2, assetPairSettingsInputContract); var getByOtherMode = await dataReaderClient.AssetPairsRead .List("LYKKETEST", MatchingEngineModeContract.MarketMaker).Dump(); getByOtherMode.Count(e => e.Id == "BTCUSD.test").RequiredEqualsTo(0, "getByOtherMode.Count"); var result3 = await backendClient.AssetPairsEdit.Delete("BTCUSD.test").Dump(); CheckAssetPair(result3, assetPairSettingsInputContract); var nonexistentDelete = await backendClient.AssetPairsEdit.Delete("nonexistent").Dump(); nonexistentDelete.RequiredEqualsTo(null, nameof(nonexistentDelete)); #region TradeMonitoring var assetSumary = await dataReaderClient.TradeMonitoringRead.AssetSummaryList().Dump(); var openPositions = await dataReaderClient.TradeMonitoringRead.OpenPositions().Dump(); var openPosition = openPositions.FirstOrDefault(); if (openPosition != null) { string clientId = openPosition.ClientId; var openPositionsByClient = await dataReaderClient.TradeMonitoringRead.OpenPositionsByClient(clientId).Dump(); } var openPositionsByDate = await dataReaderClient.TradeMonitoringRead .OpenPositionsByDate(DateTime.UtcNow.AddDays(-30), DateTime.UtcNow).Dump(); var openPositionsByVolume = await dataReaderClient.TradeMonitoringRead.OpenPositionsByVolume(100).Dump(); var pendingOrders = await dataReaderClient.TradeMonitoringRead.PendingOrders().Dump(); var pendingOrder = pendingOrders.FirstOrDefault(); if (pendingOrder != null) { string clientId = pendingOrder.ClientId; var pendingOrdersByClient = await dataReaderClient.TradeMonitoringRead.PendingOrdersByClient(clientId).Dump(); } var pendingOrdersByDate = await dataReaderClient.TradeMonitoringRead .PendingOrdersByDate(DateTime.UtcNow.AddDays(-30), DateTime.UtcNow).Dump(); var pendingOrdersByVolume = await dataReaderClient.TradeMonitoringRead.PendingOrdersByVolume(100).Dump(); var orderBooksByInstrument = await dataReaderClient.TradeMonitoringRead.OrderBooksByInstrument("BTCUSD"); #endregion var accountAssetPairs = await dataReaderClient.AccountAssetPairsRead .List() .Dump(); var firstAccountAssetPair = accountAssetPairs.First(); var secondAccountAssetPair = await dataReaderClient.AccountAssetPairsRead .Get(firstAccountAssetPair.TradingConditionId, firstAccountAssetPair.BaseAssetId, firstAccountAssetPair.Instrument) .Dump(); firstAccountAssetPair.Should().BeEquivalentTo(secondAccountAssetPair); var accountAssetPairsGetByTradingCondition = await dataReaderClient.AccountAssetPairsRead .Get(firstAccountAssetPair.TradingConditionId, firstAccountAssetPair.BaseAssetId) .Dump(); foreach (var accountAssetPair in accountAssetPairsGetByTradingCondition) { var item = accountAssetPairs .Single(x => x.TradingConditionId == accountAssetPair.TradingConditionId && x.BaseAssetId == accountAssetPair.BaseAssetId && x.Instrument == accountAssetPair.Instrument); item.Should().BeEquivalentTo(accountAssetPair); } firstAccountAssetPair.OvernightSwapLong = 0.1m; var updatedAccountAssetPair = await backendClient.TradingConditionsEdit .InsertOrUpdateAccountAsset(firstAccountAssetPair) .Dump(); updatedAccountAssetPair.Result.Should().BeEquivalentTo(firstAccountAssetPair); var tc = await backendClient.TradingConditionsEdit.InsertOrUpdate( new Contracts.TradingConditions.TradingConditionContract { Id = "LYKKETEST", LegalEntity = "LYKKEVA", IsDefault = false, Name = "Test Trading Condition", }).Dump(); tc.Result.Id.RequiredEqualsTo("LYKKETEST", "tc.Result.Id"); var ag = await backendClient.TradingConditionsEdit.InsertOrUpdateAccountGroup( new Contracts.TradingConditions.AccountGroupContract { BaseAssetId = "BTC", TradingConditionId = tc.Result.Id, DepositTransferLimit = 0.1m, ProfitWithdrawalLimit = 0.2m, MarginCall = 0.3m, StopOut = 0.4m }) .Dump(); ag.Result.StopOut.RequiredEqualsTo(0.4m, "ag.Result.StopOut"); var aa = await backendClient.TradingConditionsEdit.InsertOrUpdateAccountAsset(new AccountAssetPairContract { Instrument = "TSTLKK", BaseAssetId = "BTC", TradingConditionId = tc.Result.Id }) .Dump(); aa.Result.Instrument.RequiredEqualsTo("TSTLKK", "aa.Result.Instrument"); var ai = await backendClient.TradingConditionsEdit.AssignInstruments( new Contracts.TradingConditions.AssignInstrumentsContract { BaseAssetId = "BTC", TradingConditionId = tc.Result.Id, Instruments = new string[] { "TSTLKK" } }) .Dump(); ai.IsOk.RequiredEqualsTo(true, "ai.IsOk"); var tclist = await dataReaderClient.TradingConditionsRead.List().Dump(); await dataReaderClient.TradingConditionsRead.Get(tclist.First().Id).Dump(); var manualCharge = await backendClient.AccountsBalance.ChargeManually( new Contracts.AccountBalance.AccountChargeManuallyRequest { ClientId = "232b3b04-7479-44e7-a6b3-ac131d8e6ccd", AccountId = "d_f4c745f19c834145bcf2d6b5f1a871f3", Amount = 1, Reason = "API TEST" }) .Dump(); var accountGroups = await dataReaderClient.AccountGroups.List().Dump(); var accountGroup1 = accountGroups.FirstOrDefault(); if (accountGroup1 != null) { var accountGroup = (await dataReaderClient.AccountGroups.GetByBaseAsset(accountGroup1.TradingConditionId, accountGroup1.BaseAssetId)).Dump(); accountGroup.Should().BeEquivalentTo(accountGroup1); } var assetPairs = await dataReaderClient.Dictionaries.AssetPairs().Dump(); var matchingEngines = await dataReaderClient.Dictionaries.MatchingEngines().Dump(); var orderTypes = await dataReaderClient.Dictionaries.OrderTypes().Dump(); var routes = await dataReaderClient.Routes.List().Dump(); var route1 = routes.FirstOrDefault(); if (route1 != null) { var route = await dataReaderClient.Routes.GetById(route1.Id).Dump(); route.Should().BeEquivalentTo(route1); } var isEnabled = await dataReaderClient.Settings.IsMarginTradingEnabled("232b3b04-7479-44e7-a6b3-ac131d8e6ccd"); Console.WriteLine("Successfuly finished"); }