рефакторинг + фикс точек выхода
test / deploy_trader_prod (push) Successful in 4m4s
Details
test / deploy_trader_prod (push) Successful in 4m4s
Details
parent
022cee9a19
commit
c1eaae531f
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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<TraderDbContext> _dbContextFactory;
|
||||
|
||||
public LoaderController(InvestApiClient client, IDbContextFactory<TraderDbContext> dbContextFactory)
|
||||
{
|
||||
_dbContextFactory = dbContextFactory;
|
||||
_investApiClient = client;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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"]
|
|
@ -1,20 +0,0 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||
<DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.22.1" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.6.2" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\KLHZ.Trader.Core\KLHZ.Trader.Core.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
|
@ -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<TraderDbContext>(options =>
|
||||
{
|
||||
options.UseNpgsql(builder.Configuration.GetConnectionString("PostgresConnection"));
|
||||
});
|
||||
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
app.UseSwagger();
|
||||
app.UseSwaggerUI();
|
||||
|
||||
app.MapControllers();
|
||||
|
||||
app.Run();
|
|
@ -1,8 +0,0 @@
|
|||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
},
|
||||
"AllowedHosts": "*"
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue