GMX v2 - Trading (#7)

* Move PrivateKeys.cs

* Update gitignore

* Update gitignore

* updt

* Extract GmxServiceTests.cs

* Refact

* update todo

* Update code

* Fix hashdata

* Replace static token hashed datas

* Set allowance

* Add get orders

* Add get orders tests

* Add ignore

* add close orders

* revert

* Add get gas limit

* Start increasePosition. Todo: Finish GetExecutionFee and estimateGas

* little refact

* Update gitignore

* Fix namespaces and clean repo

* Add tests samples

* Add execution fee

* Add increase position

* Handle backtest on the frontend

* Add tests

* Update increase

* Test increase

* fix increase

* Fix size

* Start get position

* Update get positions

* Fix get position

* Update rpc and trade mappers

* Finish close position

* Fix leverage
This commit is contained in:
Oda
2025-01-30 23:06:22 +07:00
committed by GitHub
parent ecaa89c67b
commit 65bdb8e34f
156 changed files with 11253 additions and 4073 deletions

View File

@@ -1,56 +1,57 @@
using FluentValidation;
using Managing.Application.Shared.Behaviours;
using MediatR;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System.Reflection;
using Managing.Infrastructure.Exchanges;
using Managing.Infrastructure.Storage;
using Managing.Infrastructure.Databases.MongoDb;
using Microsoft.Extensions.Options;
using Managing.Application.Trading;
using Managing.Infrastructure.Messengers.Discord;
using Managing.Infrastructure.Evm;
using Discord.WebSocket;
using Microsoft.AspNetCore.Hosting;
using Discord.Commands;
using Managing.Application.Backtesting;
using Managing.Application.Scenarios;
using Managing.Application.MoneyManagements;
using Managing.Application.Accounts;
using Managing.Application.Abstractions;
using Managing.Application.Shared;
using Managing.Infrastructure.Databases;
using Managing.Infrastructure.Databases.Abstractions;
using Managing.Infrastructure.Databases.InfluxDb.Models;
using Managing.Infrastructure.Databases.InfluxDb;
using Managing.Application.Abstractions.Repositories;
using Managing.Application.Abstractions.Services;
using Managing.Infrastructure.Databases.MongoDb.Abstractions;
using Managing.Infrastructure.Exchanges.Abstractions;
using Managing.Infrastructure.Exchanges.Exchanges;
using Managing.Application.Users;
using Managing.Infrastructure.Evm.Subgraphs;
using Managing.Application.ManageBot.Commands;
using Managing.Application.Trading.Commands;
using Managing.Domain.Trades;
using Managing.Application.Workers.Abstractions;
using Managing.Application.Workers;
using System.Reflection;
using Binance.Net.Clients;
using Binance.Net.Interfaces.Clients;
using Managing.Infrastructure.Evm.Services;
using Managing.Application.Workflows;
using Discord.Commands;
using Discord.WebSocket;
using FluentValidation;
using Managing.Application.Abstractions;
using Managing.Application.Abstractions.Repositories;
using Managing.Application.Abstractions.Services;
using Managing.Application.Accounts;
using Managing.Application.Backtesting;
using Managing.Application.Bots.Base;
using Managing.Application.ManageBot;
using Managing.Application.ManageBot.Commands;
using Managing.Application.MoneyManagements;
using Managing.Application.Scenarios;
using Managing.Application.Shared;
using Managing.Application.Shared.Behaviours;
using Managing.Application.Trading;
using Managing.Application.Trading.Commands;
using Managing.Application.Users;
using Managing.Application.Workers;
using Managing.Application.Workers.Abstractions;
using Managing.Application.Workflows;
using Managing.Domain.Trades;
using Managing.Infrastructure.Databases;
using Managing.Infrastructure.Databases.InfluxDb;
using Managing.Infrastructure.Databases.InfluxDb.Abstractions;
using Managing.Infrastructure.Databases.InfluxDb.Models;
using Managing.Infrastructure.Databases.MongoDb;
using Managing.Infrastructure.Databases.MongoDb.Abstractions;
using Managing.Infrastructure.Databases.MongoDb.Configurations;
using Managing.Infrastructure.Evm;
using Managing.Infrastructure.Evm.Services;
using Managing.Infrastructure.Evm.Subgraphs;
using Managing.Infrastructure.Exchanges;
using Managing.Infrastructure.Exchanges.Abstractions;
using Managing.Infrastructure.Exchanges.Exchanges;
using Managing.Infrastructure.Messengers.Discord;
using Managing.Infrastructure.Storage;
using MediatR;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
namespace Managing.Bootstrap;
public static class ApiBootstrap
{
private static readonly Assembly ApplicationAssembly = typeof(StartBotCommand).GetTypeInfo().Assembly;
public static IServiceCollection RegisterApiDependencies(this IServiceCollection services, IConfiguration configuration)
public static IServiceCollection RegisterApiDependencies(this IServiceCollection services,
IConfiguration configuration)
{
return services
.AddApplication()
@@ -66,7 +67,7 @@ public static class ApiBootstrap
services.AddSingleton<IBacktester, Backtester>();
services.AddSingleton<IScenarioService, ScenarioService>();
services.AddSingleton<IMoneyManagementService, MoneyManagementService>();
services.AddSingleton<IAccountService, AccountService>();
services.AddSingleton<IAccountService, AccountService>();
services.AddSingleton<IStatisticService, StatisticService>();
services.AddSingleton<ISettingsService, SettingsService>();
services.AddSingleton<IUserService, UserService>();
@@ -82,12 +83,12 @@ public static class ApiBootstrap
{
// Database
services.AddSingleton<IManagingDatabaseSettings>(sp =>
sp.GetRequiredService<IOptions<ManagingDatabaseSettings>>().Value);
sp.GetRequiredService<IOptions<ManagingDatabaseSettings>>().Value);
services.AddTransient(typeof(IMongoRepository<>), typeof(MongoRepository<>));
services.AddSingleton<IInfluxDbSettings>(sp =>
sp.GetRequiredService<IOptions<InfluxDbSettings>>().Value);
sp.GetRequiredService<IOptions<InfluxDbSettings>>().Value);
// Evm
services.AddGbcFeed();
@@ -103,7 +104,7 @@ public static class ApiBootstrap
services.AddTransient<IBacktestRepository, BacktestRepository>();
services.AddTransient<ITradingRepository, TradingRepository>();
services.AddTransient<ISettingsRepository, SettingsRepository>();
services.AddTransient<IUserRepository, UserRepository>();
services.AddTransient<IUserRepository, UserRepository>();
services.AddTransient<IStatisticRepository, StatisticRepository>();
services.AddTransient<IWorkflowRepository, WorkflowRepository>();
services.AddTransient<IBotRepository, BotRepository>();
@@ -159,4 +160,4 @@ public static class ApiBootstrap
.AddHostedService<DiscordService>();
});
}
}
}

View File

@@ -3,43 +3,45 @@ using Binance.Net.Interfaces.Clients;
using Kraken.Net.Clients;
using Kraken.Net.Interfaces.Clients;
using Managing.Application.Abstractions;
using Managing.Application.Accounts;
using Managing.Application.Workers;
using Managing.Application.Workers.Abstractions;
using Managing.Infrastructure.Exchanges;
using Managing.Infrastructure.Databases;
using Managing.Infrastructure.Databases.Abstractions;
using Managing.Infrastructure.Databases.InfluxDb.Models;
using Managing.Infrastructure.Databases.MongoDb;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Managing.Infrastructure.Databases.InfluxDb;
using Managing.Application.Abstractions.Repositories;
using Managing.Application.Abstractions.Services;
using Managing.Infrastructure.Databases.MongoDb.Abstractions;
using Managing.Infrastructure.Evm.Subgraphs;
using Managing.Infrastructure.Evm;
using Managing.Infrastructure.Storage;
using Managing.Infrastructure.Exchanges.Abstractions;
using Managing.Infrastructure.Exchanges.Exchanges;
using Managing.Application.Trading;
using Managing.Application.Accounts;
using Managing.Application.Backtesting;
using Managing.Application.Bots.Base;
using Managing.Application.ManageBot;
using Managing.Application.MoneyManagements;
using Managing.Application.Scenarios;
using Managing.Application.Shared;
using Managing.Infrastructure.Messengers.Discord;
using Managing.Application.Trading;
using Managing.Application.Trading.Commands;
using Managing.Application.Workers;
using Managing.Application.Workers.Abstractions;
using Managing.Domain.Trades;
using Managing.Infrastructure.Databases;
using Managing.Infrastructure.Databases.InfluxDb;
using Managing.Infrastructure.Databases.InfluxDb.Abstractions;
using Managing.Infrastructure.Databases.InfluxDb.Models;
using Managing.Infrastructure.Databases.MongoDb;
using Managing.Infrastructure.Databases.MongoDb.Abstractions;
using Managing.Infrastructure.Databases.MongoDb.Configurations;
using Managing.Infrastructure.Evm;
using Managing.Infrastructure.Evm.Services;
using Managing.Application.Bots.Base;
using Managing.Application.ManageBot;
using Managing.Infrastructure.Evm.Subgraphs;
using Managing.Infrastructure.Exchanges;
using Managing.Infrastructure.Exchanges.Abstractions;
using Managing.Infrastructure.Exchanges.Exchanges;
using Managing.Infrastructure.Messengers.Discord;
using Managing.Infrastructure.Storage;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
namespace Managing.Bootstrap;
public static class WorkersBootstrap
{
public static IServiceCollection RegisterWorkersDependencies(this IServiceCollection services, IConfiguration configuration)
public static IServiceCollection RegisterWorkersDependencies(this IServiceCollection services,
IConfiguration configuration)
{
return services
.AddApplication()
@@ -56,7 +58,7 @@ public static class WorkersBootstrap
services.AddSingleton<IWorkerService, WorkerService>();
services.AddSingleton<IAccountService, AccountService>();
services.AddSingleton<IStatisticService, StatisticService>();
services.AddSingleton<ITradingService, TradingService>();
services.AddSingleton<ITradingService, TradingService>();
services.AddSingleton<ISettingsService, SettingsService>();
services.AddSingleton<IBacktester, Backtester>();
services.AddSingleton<IBotService, BotService>();
@@ -71,12 +73,12 @@ public static class WorkersBootstrap
{
// Database
services.AddSingleton<IManagingDatabaseSettings>(sp =>
sp.GetRequiredService<IOptions<ManagingDatabaseSettings>>().Value);
sp.GetRequiredService<IOptions<ManagingDatabaseSettings>>().Value);
services.AddTransient(typeof(IMongoRepository<>), typeof(MongoRepository<>));
services.AddSingleton<IInfluxDbSettings>(sp =>
sp.GetRequiredService<IOptions<InfluxDbSettings>>().Value);
services.AddTransient<IInfluxDbRepository, InfluxDbRepository>();
// Evm
@@ -117,4 +119,4 @@ public static class WorkersBootstrap
return services;
}
}
}