Postgres (#30)
* Add postgres * Migrate users * Migrate geneticRequest * Try to fix Concurrent call * Fix asyncawait * Fix async and concurrent * Migrate backtests * Add cache for user by address * Fix backtest migration * Fix not open connection * Fix backtest command error * Fix concurrent * Fix all concurrency * Migrate TradingRepo * Fix scenarios * Migrate statistic repo * Save botbackup * Add settings et moneymanagement * Add bot postgres * fix a bit more backups * Fix bot model * Fix loading backup * Remove cache market for read positions * Add workers to postgre * Fix workers api * Reduce get Accounts for workers * Migrate synth to postgre * Fix backtest saved * Remove mongodb * botservice decorrelation * Fix tradingbot scope call * fix tradingbot * fix concurrent * Fix scope for genetics * Fix account over requesting * Fix bundle backtest worker * fix a lot of things * fix tab backtest * Remove optimized moneymanagement * Add light signal to not use User and too much property * Make money management lighter * insert indicators to awaitable * Migrate add strategies to await * Refactor scenario and indicator retrieval to use asynchronous methods throughout the application * add more async await * Add services * Fix and clean * Fix bot a bit * Fix bot and add message for cooldown * Remove fees * Add script to deploy db * Update dfeeploy script * fix script * Add idempotent script and backup * finish script migration * Fix did user and agent name on start bot
This commit is contained in:
@@ -5,12 +5,15 @@ using Managing.Application.Abstractions.Repositories;
|
||||
using Managing.Application.Abstractions.Services;
|
||||
using Managing.Application.Backtesting;
|
||||
using Managing.Application.Bots.Base;
|
||||
using Managing.Application.Hubs;
|
||||
using Managing.Application.ManageBot;
|
||||
using Managing.Core;
|
||||
using Managing.Domain.Backtests;
|
||||
using Managing.Domain.Bots;
|
||||
using Managing.Domain.Candles;
|
||||
using Managing.Domain.MoneyManagements;
|
||||
using Managing.Domain.Scenarios;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
using Moq;
|
||||
using Newtonsoft.Json;
|
||||
using Xunit;
|
||||
@@ -35,6 +38,8 @@ namespace Managing.Application.Tests
|
||||
var scenarioService = new Mock<IScenarioService>().Object;
|
||||
var messengerService = new Mock<IMessengerService>().Object;
|
||||
var kaigenService = new Mock<IKaigenService>().Object;
|
||||
var backupBotService = new Mock<IBackupBotService>().Object;
|
||||
var hubContext = new Mock<IHubContext<BacktestHub>>().Object;
|
||||
var tradingBotLogger = TradingBaseTests.CreateTradingBotLogger();
|
||||
var backtestLogger = TradingBaseTests.CreateBacktesterLogger();
|
||||
var botService = new Mock<IBotService>().Object;
|
||||
@@ -44,9 +49,9 @@ namespace Managing.Application.Tests
|
||||
discordService,
|
||||
_accountService.Object,
|
||||
_tradingService.Object,
|
||||
botService);
|
||||
botService, backupBotService);
|
||||
_backtester = new Backtester(_exchangeService, _botFactory, backtestRepository, backtestLogger,
|
||||
scenarioService, _accountService.Object, messengerService, kaigenService);
|
||||
scenarioService, _accountService.Object, messengerService, kaigenService, hubContext);
|
||||
_elapsedTimes = new List<double>();
|
||||
|
||||
// Initialize cross-platform file paths
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using Managing.Application.Abstractions.Services;
|
||||
using Managing.Domain.Accounts;
|
||||
using Managing.Domain.Strategies;
|
||||
using Managing.Domain.Strategies.Signals;
|
||||
using Managing.Domain.Strategies.Trends;
|
||||
using Xunit;
|
||||
@@ -26,7 +25,7 @@ namespace Managing.Application.Tests
|
||||
// Arrange
|
||||
var rsiStrategy = new RsiDivergenceIndicator("unittest", 5);
|
||||
var candles = _exchangeService.GetCandles(account, ticker, DateTime.Now.AddDays(-50), timeframe).Result;
|
||||
var resultSignal = new List<Signal>();
|
||||
var resultSignal = new List<LightSignal>();
|
||||
|
||||
// Act
|
||||
foreach (var candle in candles)
|
||||
@@ -39,7 +38,7 @@ namespace Managing.Application.Tests
|
||||
resultSignal.AddRange(rsiStrategy.Signals);
|
||||
|
||||
// Assert
|
||||
Assert.IsType<List<Signal>>(resultSignal);
|
||||
Assert.IsType<List<LightSignal>>(resultSignal);
|
||||
Assert.Contains(resultSignal, s => s.Direction == TradeDirection.Long);
|
||||
}
|
||||
|
||||
@@ -60,7 +59,7 @@ namespace Managing.Application.Tests
|
||||
var account = GetAccount(exchange);
|
||||
var rsiStrategy = new RsiDivergenceIndicator("unittest", 5);
|
||||
var candles = _exchangeService.GetCandles(account, ticker, DateTime.Now.AddDays(-50), timeframe).Result;
|
||||
var resultSignal = new List<Signal>();
|
||||
var resultSignal = new List<LightSignal>();
|
||||
|
||||
// Act
|
||||
foreach (var candle in candles)
|
||||
@@ -73,7 +72,7 @@ namespace Managing.Application.Tests
|
||||
resultSignal.AddRange(rsiStrategy.Signals);
|
||||
|
||||
// Assert
|
||||
Assert.IsType<List<Signal>>(resultSignal);
|
||||
Assert.IsType<List<LightSignal>>(resultSignal);
|
||||
Assert.Contains(resultSignal, s => s.Direction == TradeDirection.Short);
|
||||
}
|
||||
|
||||
@@ -87,7 +86,7 @@ namespace Managing.Application.Tests
|
||||
var account = GetAccount(exchange);
|
||||
var rsiStrategy = new MacdCrossIndicator("unittest", 12, 26, 9);
|
||||
var candles = await _exchangeService.GetCandles(account, ticker, DateTime.Now.AddDays(days), timeframe);
|
||||
var resultSignal = new List<Signal>();
|
||||
var resultSignal = new List<LightSignal>();
|
||||
|
||||
// Act
|
||||
foreach (var candle in candles)
|
||||
@@ -100,7 +99,7 @@ namespace Managing.Application.Tests
|
||||
resultSignal.AddRange(rsiStrategy.Signals);
|
||||
|
||||
// Assert
|
||||
Assert.IsType<List<Signal>>(resultSignal);
|
||||
Assert.IsType<List<LightSignal>>(resultSignal);
|
||||
Assert.Contains(resultSignal, s => s.Direction == TradeDirection.Short);
|
||||
Assert.Contains(resultSignal, s => s.Direction == TradeDirection.Long);
|
||||
}
|
||||
@@ -114,7 +113,7 @@ namespace Managing.Application.Tests
|
||||
var account = GetAccount(exchange);
|
||||
var superTrendStrategy = new SuperTrendIndicator("unittest", 10, 3);
|
||||
var candles = _exchangeService.GetCandles(account, ticker, DateTime.Now.AddDays(days), timeframe).Result;
|
||||
var resultSignal = new List<Signal>();
|
||||
var resultSignal = new List<LightSignal>();
|
||||
|
||||
// Act
|
||||
foreach (var candle in candles)
|
||||
@@ -127,7 +126,7 @@ namespace Managing.Application.Tests
|
||||
resultSignal.AddRange(superTrendStrategy.Signals);
|
||||
|
||||
// Assert
|
||||
Assert.IsType<List<Signal>>(resultSignal);
|
||||
Assert.IsType<List<LightSignal>>(resultSignal);
|
||||
Assert.Contains(resultSignal, s => s.Direction == TradeDirection.Short);
|
||||
Assert.Contains(resultSignal, s => s.Direction == TradeDirection.Long);
|
||||
}
|
||||
@@ -142,7 +141,7 @@ namespace Managing.Application.Tests
|
||||
var chandelierExitStrategy = new ChandelierExitIndicator("unittest", 22, 3);
|
||||
var candles = _exchangeService.GetCandles(account, ticker, DateTime.Now.AddDays(days), timeframe, false)
|
||||
.Result;
|
||||
var resultSignal = new List<Signal>();
|
||||
var resultSignal = new List<LightSignal>();
|
||||
|
||||
// Act
|
||||
foreach (var candle in candles)
|
||||
@@ -155,7 +154,7 @@ namespace Managing.Application.Tests
|
||||
resultSignal.AddRange(chandelierExitStrategy.Signals);
|
||||
|
||||
// Assert
|
||||
Assert.IsType<List<Signal>>(resultSignal);
|
||||
Assert.IsType<List<LightSignal>>(resultSignal);
|
||||
Assert.Contains(resultSignal, s => s.Direction == TradeDirection.Short);
|
||||
Assert.Contains(resultSignal, s => s.Direction == TradeDirection.Long);
|
||||
}
|
||||
@@ -169,7 +168,7 @@ namespace Managing.Application.Tests
|
||||
var account = GetAccount(exchange);
|
||||
var emaTrendSrategy = new EmaTrendIndicator("unittest", 200);
|
||||
var candles = _exchangeService.GetCandles(account, ticker, DateTime.Now.AddDays(days), timeframe).Result;
|
||||
var resultSignal = new List<Signal>();
|
||||
var resultSignal = new List<LightSignal>();
|
||||
|
||||
// Act
|
||||
foreach (var candle in candles)
|
||||
@@ -182,7 +181,7 @@ namespace Managing.Application.Tests
|
||||
resultSignal.AddRange(emaTrendSrategy.Signals);
|
||||
|
||||
// Assert
|
||||
Assert.IsType<List<Signal>>(resultSignal);
|
||||
Assert.IsType<List<LightSignal>>(resultSignal);
|
||||
Assert.Contains(resultSignal, s => s.Direction == TradeDirection.Short);
|
||||
Assert.Contains(resultSignal, s => s.Direction == TradeDirection.Long);
|
||||
}
|
||||
@@ -197,7 +196,7 @@ namespace Managing.Application.Tests
|
||||
var account = GetAccount(exchange);
|
||||
var stochRsiStrategy = new StochRsiTrendIndicator("unittest", 14, 14, 3, 1);
|
||||
var candles = _exchangeService.GetCandles(account, ticker, DateTime.Now.AddDays(days), timeframe).Result;
|
||||
var resultSignal = new List<Signal>();
|
||||
var resultSignal = new List<LightSignal>();
|
||||
|
||||
// var json = JsonConvert.SerializeObject(candles);
|
||||
// File.WriteAllText($"{ticker.ToString()}-{timeframe.ToString()}-candles.json", json);
|
||||
@@ -214,7 +213,7 @@ namespace Managing.Application.Tests
|
||||
resultSignal.AddRange(stochRsiStrategy.Signals);
|
||||
|
||||
// Assert
|
||||
Assert.IsType<List<Signal>>(resultSignal);
|
||||
Assert.IsType<List<LightSignal>>(resultSignal);
|
||||
Assert.Contains(resultSignal, s => s.Direction == TradeDirection.Short);
|
||||
Assert.Contains(resultSignal, s => s.Direction == TradeDirection.Long);
|
||||
}
|
||||
|
||||
@@ -51,7 +51,8 @@ public class PositionTests : BaseTests
|
||||
Open = openTrade
|
||||
};
|
||||
var command = new ClosePositionCommand(position);
|
||||
_ = _tradingService.Setup(m => m.GetPositionByIdentifier(It.IsAny<string>())).Returns(position);
|
||||
_ = _tradingService.Setup(m => m.GetPositionByIdentifierAsync(It.IsAny<string>())).ReturnsAsync(position);
|
||||
_ = _tradingService.Setup(m => m.GetPositionByIdentifierAsync(It.IsAny<string>())).ReturnsAsync(position);
|
||||
|
||||
var handler = new ClosePositionCommandHandler(
|
||||
_exchangeService,
|
||||
|
||||
Reference in New Issue
Block a user