diff --git a/KLHZ.Trader.Core/Exchange/Services/Trader.cs b/KLHZ.Trader.Core/Exchange/Services/Trader.cs index 5f998cf..32ea84a 100644 --- a/KLHZ.Trader.Core/Exchange/Services/Trader.cs +++ b/KLHZ.Trader.Core/Exchange/Services/Trader.cs @@ -233,40 +233,30 @@ namespace KLHZ.Trader.Core.Exchange.Services var res = TraderUtils.GetInitDict(Constants.BlockingCoefficient); if (pirson.Success && _pirsonValues.TryGetValue(message.Figi, out var olddpirs)) { - var dpirson = pirson.Pirson - olddpirs; + if (olddpirs < 0 && pirson.Pirson > 0 && pirson.PriceDiff > 0 && (pirson.TradesDiffRelative > 0.2m)) { res[TradingEvent.OpenLong] = Constants.PowerUppingCoefficient; } - //if (olddpirs < -0.7m && pirson.Pirson > -0.7m && pirson.PriceDiff > 0 && (pirson.TradesDiffRelative < -0.1m)) - //{ - // res[TradingEvent.OpenLong] = Constants.PowerUppingCoefficient; - //} if (olddpirs > 0 && pirson.Pirson < 0 && pirson.PriceDiff < 0 && (pirson.TradesDiffRelative > 0.2m)) { res[TradingEvent.OpenShort] = Constants.PowerUppingCoefficient; } - //if (olddpirs > 0.3m && pirson.Pirson < 0.3m && pirson.PriceDiff < 0 && (pirson.TradesDiffRelative > 0.3m)) - //{ - // res[TradingEvent.OpenShort] = Constants.PowerUppingCoefficient; - //} - if (_dpirsonValues.TryGetValue(message.Figi, out var oldDprison)) + + if (olddpirs > 0.9m && pirson.Pirson <= 0.9m && pirson.TradesDiffRelative < -0.1m && pirson.TradesDiff <= 0) { - if (oldDprison > 0.02m && dpirson < -0.02m && pirson.Pirson > 0.7m && pirson.TradesDiffRelative < -0.2m) - { - res[TradingEvent.CloseLong] = Constants.PowerUppingCoefficient; - //await _tradeDataProvider.LogPrice(message, "diffs_pirson_diff_point_long_out", message.Price); - } - if (oldDprison < 0 && dpirson > 0 && pirson.Pirson < -0.6m && pirson.TradesDiffRelative < -0.1m) - { - res[TradingEvent.CloseShort] = Constants.PowerUppingCoefficient; - // await _tradeDataProvider.LogPrice(message, "diffs_pirson_diff_point_short_out", message.Price); - } + res[TradingEvent.CloseLong] = Constants.PowerUppingCoefficient; + //await _tradeDataProvider.LogPrice(message, "diffs_pirson_diff_point_long_out", message.Price); + } + if (olddpirs < -0.8m && pirson.Pirson >= -0.8m && pirson.TradesDiffRelative < -0.1m && pirson.TradesDiff >= 0) + { + res[TradingEvent.CloseShort] = Constants.PowerUppingCoefficient; + // await _tradeDataProvider.LogPrice(message, "diffs_pirson_diff_point_short_out", message.Price); } - _dpirsonValues[message.Figi] = dpirson; + //_dpirsonValues[message.Figi] = dpirson; } _pirsonValues[message.Figi] = pirson.Pirson; return res.ToImmutableDictionary(); @@ -543,7 +533,7 @@ namespace KLHZ.Trader.Core.Exchange.Services var valLow = message.Price - stops.stopLoss; var valHigh = message.Price + stops.takeProfit; await _tradeDataProvider.LogDeclision(DeclisionTradeAction.OpenLong, val, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(-100, 100)), message); - //await _tradeDataProvider.LogDeclision(DeclisionTradeAction.ResetStopsLong, valHigh, message.Time.AddMilliseconds(-RandomNumberGenerator.GetInt32(300, 1000)), message); + await _tradeDataProvider.LogDeclision(DeclisionTradeAction.ResetStopsLong, valHigh, message.Time.AddMilliseconds(-RandomNumberGenerator.GetInt32(300, 1000)), message); await _tradeDataProvider.LogDeclision(DeclisionTradeAction.ResetStopsLong, valLow, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(300, 1000)), message); } if (result[TradingEvent.OpenShort] >= Constants.UppingCoefficient @@ -564,7 +554,7 @@ namespace KLHZ.Trader.Core.Exchange.Services var valLow = message.Price - stops.takeProfit; var valHigh = message.Price + stops.stopLoss; await _tradeDataProvider.LogDeclision(DeclisionTradeAction.OpenShort, val, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(-100, 100)), message); - //await _tradeDataProvider.LogDeclision(DeclisionTradeAction.ResetStopsShort, valLow, message.Time.AddMilliseconds(-RandomNumberGenerator.GetInt32(300, 1000)), message); + await _tradeDataProvider.LogDeclision(DeclisionTradeAction.ResetStopsShort, valLow, message.Time.AddMilliseconds(-RandomNumberGenerator.GetInt32(300, 1000)), message); await _tradeDataProvider.LogDeclision(DeclisionTradeAction.ResetStopsShort, valHigh, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(300, 1000)), message); } if (result[TradingEvent.CloseLong] >= Constants.UppingCoefficient) @@ -630,7 +620,7 @@ namespace KLHZ.Trader.Core.Exchange.Services private Stops GetStops(ITradeDataItem message) { - var additionalShift = message.Price * 0.001m; + var additionalShift = message.Price * 0.0005m; var longStopLossShift = message.Price * 0.0025m; var longTakeProfitShift = message.Price * 0.02m; var shortStopLossShift = message.Price * 0.0025m; @@ -644,8 +634,8 @@ namespace KLHZ.Trader.Core.Exchange.Services .ToArray(); if (message.Price >= levelsByTime[0].LowValue && message.Price < levelsByTime[0].HighValue) { - longStopLossShift = message.Price - levelsByTime[0].LowValue; - shortStopLossShift = levelsByTime[0].HighValue - message.Price; + longStopLossShift = message.Price - levelsByTime[0].LowValue+ additionalShift; + shortStopLossShift = levelsByTime[0].HighValue - message.Price+ additionalShift; } else { diff --git a/KLHZ.Trader.HistoryLoader/Controllers/LoaderController.cs b/KLHZ.Trader.HistoryLoader/Controllers/LoaderController.cs deleted file mode 100644 index a393616..0000000 --- a/KLHZ.Trader.HistoryLoader/Controllers/LoaderController.cs +++ /dev/null @@ -1,21 +0,0 @@ -using KLHZ.Trader.Core.DataLayer; -using Microsoft.AspNetCore.Mvc; -using Microsoft.EntityFrameworkCore; -using Tinkoff.InvestApi; - -namespace KLHZ.Trader.HistoryLoader.Controllers -{ - [ApiController] - [Route("[controller]/[action]")] - public class LoaderController : ControllerBase - { - private readonly InvestApiClient _investApiClient; - private readonly IDbContextFactory _dbContextFactory; - - public LoaderController(InvestApiClient client, IDbContextFactory dbContextFactory) - { - _dbContextFactory = dbContextFactory; - _investApiClient = client; - } - } -} diff --git a/KLHZ.Trader.HistoryLoader/Dockerfile b/KLHZ.Trader.HistoryLoader/Dockerfile deleted file mode 100644 index 2703170..0000000 --- a/KLHZ.Trader.HistoryLoader/Dockerfile +++ /dev/null @@ -1,30 +0,0 @@ -# См. статью по ссылке https://aka.ms/customizecontainer, чтобы узнать как настроить контейнер отладки и как Visual Studio использует этот Dockerfile для создания образов для ускорения отладки. - -# Этот этап используется при запуске из VS в быстром режиме (по умолчанию для конфигурации отладки) -FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base -USER $APP_UID -WORKDIR /app -EXPOSE 8080 - - -# Этот этап используется для сборки проекта службы -FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build -ARG BUILD_CONFIGURATION=Release -WORKDIR /src -COPY ["KLHZ.Trader.HistoryLoader/KLHZ.Trader.HistoryLoader.csproj", "KLHZ.Trader.HistoryLoader/"] -COPY ["KLHZ.Trader.Core/KLHZ.Trader.Core.csproj", "KLHZ.Trader.Core/"] -RUN dotnet restore "./KLHZ.Trader.HistoryLoader/KLHZ.Trader.HistoryLoader.csproj" -COPY . . -WORKDIR "/src/KLHZ.Trader.HistoryLoader" -RUN dotnet build "./KLHZ.Trader.HistoryLoader.csproj" -c $BUILD_CONFIGURATION -o /app/build - -# Этот этап используется для публикации проекта службы, который будет скопирован на последний этап -FROM build AS publish -ARG BUILD_CONFIGURATION=Release -RUN dotnet publish "./KLHZ.Trader.HistoryLoader.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false - -# Этот этап используется в рабочей среде или при запуске из VS в обычном режиме (по умолчанию, когда конфигурация отладки не используется) -FROM base AS final -WORKDIR /app -COPY --from=publish /app/publish . -ENTRYPOINT ["dotnet", "KLHZ.Trader.HistoryLoader.dll"] \ No newline at end of file diff --git a/KLHZ.Trader.HistoryLoader/KLHZ.Trader.HistoryLoader.csproj b/KLHZ.Trader.HistoryLoader/KLHZ.Trader.HistoryLoader.csproj deleted file mode 100644 index dc14fd5..0000000 --- a/KLHZ.Trader.HistoryLoader/KLHZ.Trader.HistoryLoader.csproj +++ /dev/null @@ -1,20 +0,0 @@ - - - - net8.0 - enable - enable - Linux - ..\docker-compose.dcproj - - - - - - - - - - - - diff --git a/KLHZ.Trader.HistoryLoader/Program.cs b/KLHZ.Trader.HistoryLoader/Program.cs deleted file mode 100644 index e0862eb..0000000 --- a/KLHZ.Trader.HistoryLoader/Program.cs +++ /dev/null @@ -1,30 +0,0 @@ -using KLHZ.Trader.Core.DataLayer; -using KLHZ.Trader.Core.Exchange.Models.Configs; -using Microsoft.EntityFrameworkCore; - - -var builder = WebApplication.CreateBuilder(args); - -builder.Services.AddControllers(); -builder.Services.AddEndpointsApiExplorer(); -builder.Services.AddSwaggerGen(); - -builder.Services.AddInvestApiClient((_, settings) => -{ - settings.AccessToken = builder.Configuration.GetSection(nameof(ExchangeConfig))["Token"]; -}); - -builder.Services.AddDbContextFactory(options => -{ - options.UseNpgsql(builder.Configuration.GetConnectionString("PostgresConnection")); -}); - - -var app = builder.Build(); - -app.UseSwagger(); -app.UseSwaggerUI(); - -app.MapControllers(); - -app.Run(); diff --git a/KLHZ.Trader.HistoryLoader/appsettings.Development.json b/KLHZ.Trader.HistoryLoader/appsettings.Development.json deleted file mode 100644 index ff66ba6..0000000 --- a/KLHZ.Trader.HistoryLoader/appsettings.Development.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - } -} diff --git a/KLHZ.Trader.HistoryLoader/appsettings.json b/KLHZ.Trader.HistoryLoader/appsettings.json deleted file mode 100644 index 4d56694..0000000 --- a/KLHZ.Trader.HistoryLoader/appsettings.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - }, - "AllowedHosts": "*" -} diff --git a/KLHZ.Trader.sln b/KLHZ.Trader.sln index 5b4c94a..87e41a0 100644 --- a/KLHZ.Trader.sln +++ b/KLHZ.Trader.sln @@ -25,8 +25,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "graphana", "graphana", "{4A EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "postrgres", "postrgres", "{174A800A-6040-40CF-B331-8603E097CBAC}" ProjectSection(SolutionItems) = preProject - KLHZ.Trader.Infrastructure\postgres\migration1.sql = KLHZ.Trader.Infrastructure\postgres\migration1.sql KLHZ.Trader.Infrastructure\postgres\init.sql = KLHZ.Trader.Infrastructure\postgres\init.sql + KLHZ.Trader.Infrastructure\postgres\migration1.sql = KLHZ.Trader.Infrastructure\postgres\migration1.sql KLHZ.Trader.Infrastructure\postgres\migration2.sql = KLHZ.Trader.Infrastructure\postgres\migration2.sql KLHZ.Trader.Infrastructure\postgres\migration3.sql = KLHZ.Trader.Infrastructure\postgres\migration3.sql EndProjectSection @@ -36,8 +36,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "loki", "loki", "{63D21DAF-F KLHZ.Trader.Infrastructure\loki\loki-config.yaml = KLHZ.Trader.Infrastructure\loki\loki-config.yaml EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KLHZ.Trader.HistoryLoader", "KLHZ.Trader.HistoryLoader\KLHZ.Trader.HistoryLoader.csproj", "{9BF1E4ED-CCD5-401B-9F1C-3B7625258F7E}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "deploy", "deploy", "{9DE95D0B-E076-4A56-B7E6-26843D87E67A}" ProjectSection(SolutionItems) = preProject build-docker-compose.yml = build-docker-compose.yml @@ -69,10 +67,6 @@ Global {8AB0053E-6F6D-4AC6-A908-E0F404FF69C5}.Debug|Any CPU.Build.0 = Debug|Any CPU {8AB0053E-6F6D-4AC6-A908-E0F404FF69C5}.Release|Any CPU.ActiveCfg = Release|Any CPU {8AB0053E-6F6D-4AC6-A908-E0F404FF69C5}.Release|Any CPU.Build.0 = Release|Any CPU - {9BF1E4ED-CCD5-401B-9F1C-3B7625258F7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9BF1E4ED-CCD5-401B-9F1C-3B7625258F7E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9BF1E4ED-CCD5-401B-9F1C-3B7625258F7E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9BF1E4ED-CCD5-401B-9F1C-3B7625258F7E}.Release|Any CPU.Build.0 = Release|Any CPU {C1ADC79B-ADDB-435D-A453-9D1623D144C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C1ADC79B-ADDB-435D-A453-9D1623D144C4}.Debug|Any CPU.Build.0 = Debug|Any CPU {C1ADC79B-ADDB-435D-A453-9D1623D144C4}.Release|Any CPU.ActiveCfg = Release|Any CPU diff --git a/docker-compose.yml b/docker-compose.yml index f603930..4836c36 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -74,17 +74,6 @@ services: # - loki_data:/loki # command: -config.file=/etc/loki/local-config.yaml - klhz.trader.historyloader: - image: klhztraderhistoryloader - ports: - - "5004:8080" - build: - context: . - dockerfile: KLHZ.Trader.HistoryLoader/Dockerfile - environment: - ExchangeConfig__Token: "${EXCHANGE_API_TOKEN}" - ConnectionStrings__PostgresConnection: "${PG_CONNECTION_STRING}" - volumes: traderdata: prom_data: