Trading bot grain (#33)
* Trading bot Grain * Fix a bit more of the trading bot * Advance on the tradingbot grain * Fix build * Fix db script * Fix user login * Fix a bit backtest * Fix cooldown and backtest * start fixing bot start * Fix startup * Setup local db * Fix build and update candles and scenario * Add bot registry * Add reminder * Updateing the grains * fix bootstraping * Save stats on tick * Save bot data every tick * Fix serialization * fix save bot stats * Fix get candles * use dict instead of list for position * Switch hashset to dict * Fix a bit * Fix bot launch and bot view * add migrations * Remove the tolist * Add agent grain * Save agent summary * clean * Add save bot * Update get bots * Add get bots * Fix stop/restart * fix Update config * Update scanner table on new backtest saved * Fix backtestRowDetails.tsx * Fix agentIndex * Update agentIndex * Fix more things * Update user cache * Fix * Fix account load/start/restart/run
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
using Managing.Domain.Statistics;
|
||||
using static Managing.Common.Enums;
|
||||
|
||||
namespace Managing.Application.Abstractions.Repositories;
|
||||
|
||||
public interface IAgentSummaryRepository
|
||||
{
|
||||
Task<AgentSummary?> GetByUserIdAsync(int userId);
|
||||
Task<AgentSummary?> GetByAgentNameAsync(string agentName);
|
||||
Task<IEnumerable<AgentSummary>> GetAllAsync();
|
||||
Task InsertAsync(AgentSummary agentSummary);
|
||||
Task UpdateAsync(AgentSummary agentSummary);
|
||||
Task SaveOrUpdateAsync(AgentSummary agentSummary);
|
||||
|
||||
/// <summary>
|
||||
/// Gets paginated agent summaries with sorting and filtering
|
||||
/// </summary>
|
||||
/// <param name="page">Page number (1-based)</param>
|
||||
/// <param name="pageSize">Number of items per page</param>
|
||||
/// <param name="sortBy">Field to sort by</param>
|
||||
/// <param name="sortOrder">Sort order (asc or desc)</param>
|
||||
/// <param name="agentNames">Optional list of agent names to filter by</param>
|
||||
/// <returns>Tuple containing the paginated results and total count</returns>
|
||||
Task<(IEnumerable<AgentSummary> Results, int TotalCount)> GetPaginatedAsync(
|
||||
int page,
|
||||
int pageSize,
|
||||
SortableFields sortBy,
|
||||
string sortOrder,
|
||||
IEnumerable<string>? agentNames = null);
|
||||
}
|
||||
@@ -1,12 +1,40 @@
|
||||
using Managing.Domain.Bots;
|
||||
using static Managing.Common.Enums;
|
||||
|
||||
namespace Managing.Application.Abstractions.Repositories;
|
||||
|
||||
public interface IBotRepository
|
||||
{
|
||||
Task InsertBotAsync(BotBackup bot);
|
||||
Task<IEnumerable<BotBackup>> GetBotsAsync();
|
||||
Task UpdateBackupBot(BotBackup bot);
|
||||
Task DeleteBotBackup(string botName);
|
||||
Task<BotBackup?> GetBotByIdentifierAsync(string identifier);
|
||||
Task InsertBotAsync(Bot bot);
|
||||
Task<IEnumerable<Bot>> GetBotsAsync();
|
||||
Task UpdateBot(Bot bot);
|
||||
Task DeleteBot(Guid identifier);
|
||||
Task<Bot> GetBotByIdentifierAsync(Guid identifier);
|
||||
Task<IEnumerable<Bot>> GetBotsByIdsAsync(IEnumerable<Guid> identifiers);
|
||||
Task<IEnumerable<Bot>> GetBotsByUserIdAsync(int id);
|
||||
Task<IEnumerable<Bot>> GetBotsByStatusAsync(BotStatus status);
|
||||
Task<Bot> GetBotByNameAsync(string name);
|
||||
|
||||
/// <summary>
|
||||
/// Gets paginated bots with filtering and sorting
|
||||
/// </summary>
|
||||
/// <param name="pageNumber">Page number (1-based)</param>
|
||||
/// <param name="pageSize">Number of items per page</param>
|
||||
/// <param name="status">Filter by status (optional)</param>
|
||||
/// <param name="userId">Filter by user ID (optional)</param>
|
||||
/// <param name="name">Filter by name (partial match, case-insensitive)</param>
|
||||
/// <param name="ticker">Filter by ticker (partial match, case-insensitive)</param>
|
||||
/// <param name="agentName">Filter by agent name (partial match, case-insensitive)</param>
|
||||
/// <param name="sortBy">Sort field</param>
|
||||
/// <param name="sortDirection">Sort direction ("Asc" or "Desc")</param>
|
||||
/// <returns>Tuple containing the bots for the current page and total count</returns>
|
||||
Task<(IEnumerable<Bot> Bots, int TotalCount)> GetBotsPaginatedAsync(
|
||||
int pageNumber,
|
||||
int pageSize,
|
||||
BotStatus? status = null,
|
||||
string? name = null,
|
||||
string? ticker = null,
|
||||
string? agentName = null,
|
||||
string sortBy = "CreateDate",
|
||||
string sortDirection = "Desc");
|
||||
}
|
||||
@@ -5,18 +5,20 @@ namespace Managing.Application.Abstractions.Repositories;
|
||||
|
||||
public interface ICandleRepository
|
||||
{
|
||||
Task<IList<Candle>> GetCandles(
|
||||
Enums.TradingExchanges exchange,
|
||||
Enums.Ticker ticker,
|
||||
Enums.Timeframe timeframe,
|
||||
DateTime start);
|
||||
|
||||
Task<IList<Candle>> GetCandles(
|
||||
Task<HashSet<Candle>> GetCandles(
|
||||
Enums.TradingExchanges exchange,
|
||||
Enums.Ticker ticker,
|
||||
Enums.Timeframe timeframe,
|
||||
DateTime start,
|
||||
DateTime end);
|
||||
int? limit = null);
|
||||
|
||||
Task<HashSet<Candle>> GetCandles(
|
||||
Enums.TradingExchanges exchange,
|
||||
Enums.Ticker ticker,
|
||||
Enums.Timeframe timeframe,
|
||||
DateTime start,
|
||||
DateTime end,
|
||||
int? limit = null);
|
||||
|
||||
Task<IList<Enums.Ticker>> GetTickersAsync(
|
||||
Enums.TradingExchanges exchange,
|
||||
|
||||
@@ -13,18 +13,20 @@ public interface ITradingRepository
|
||||
Task<Signal> GetSignalByIdentifierAsync(string identifier, User user = null);
|
||||
Task InsertPositionAsync(Position position);
|
||||
Task UpdatePositionAsync(Position position);
|
||||
Task<Indicator> GetStrategyByNameAsync(string strategy);
|
||||
Task<IndicatorBase> GetStrategyByNameAsync(string strategy);
|
||||
Task InsertScenarioAsync(Scenario scenario);
|
||||
Task InsertStrategyAsync(Indicator indicator);
|
||||
Task InsertIndicatorAsync(IndicatorBase indicator);
|
||||
Task<IEnumerable<Scenario>> GetScenariosAsync();
|
||||
Task<IEnumerable<Indicator>> GetStrategiesAsync();
|
||||
Task<IEnumerable<Indicator>> GetIndicatorsAsync();
|
||||
Task<IEnumerable<IndicatorBase>> GetStrategiesAsync();
|
||||
Task<IEnumerable<IndicatorBase>> GetIndicatorsAsync();
|
||||
Task DeleteScenarioAsync(string name);
|
||||
Task DeleteIndicatorAsync(string name);
|
||||
Task<Position> GetPositionByIdentifierAsync(string identifier);
|
||||
Task<Position> GetPositionByIdentifierAsync(Guid identifier);
|
||||
Task<IEnumerable<Position>> GetPositionsAsync(PositionInitiator positionInitiator);
|
||||
Task<IEnumerable<Position>> GetPositionsByStatusAsync(PositionStatus positionStatus);
|
||||
|
||||
Task UpdateScenarioAsync(Scenario scenario);
|
||||
Task UpdateStrategyAsync(Indicator indicator);
|
||||
Task UpdateStrategyAsync(IndicatorBase indicatorBase);
|
||||
Task<IndicatorBase> GetStrategyByNameUserAsync(string name, User user);
|
||||
Task<Scenario> GetScenarioByNameUserAsync(string scenarioName, User user);
|
||||
}
|
||||
Reference in New Issue
Block a user