Рефакторинг
parent
64c702ebf1
commit
9554b988e3
|
@ -4,9 +4,7 @@ using KLHZ.Trader.Core.Contracts.Messaging.Dtos;
|
|||
using KLHZ.Trader.Core.Contracts.Messaging.Dtos.Enums;
|
||||
using KLHZ.Trader.Core.Contracts.Messaging.Dtos.Interfaces;
|
||||
using KLHZ.Trader.Core.Contracts.Messaging.Interfaces;
|
||||
using KLHZ.Trader.Core.DataLayer.Entities.Declisions;
|
||||
using KLHZ.Trader.Core.DataLayer.Entities.Declisions.Enums;
|
||||
using KLHZ.Trader.Core.DataLayer.Entities.Prices;
|
||||
using KLHZ.Trader.Core.Exchange.Interfaces;
|
||||
using KLHZ.Trader.Core.Exchange.Models.Configs;
|
||||
using KLHZ.Trader.Core.Exchange.Models.Trading;
|
||||
|
@ -212,8 +210,8 @@ namespace KLHZ.Trader.Core.Exchange.Services
|
|||
if (trades2.TryCalcTimeWindowsDiff(bigWindow, smallWindow, v => v.Count, false, out var tradesDiff)
|
||||
&& buys.TryCalcTimeWindowsDiff(bigWindow, smallWindow, v => v.Price, true, out var pricesDiff))
|
||||
{
|
||||
await LogPrice(message, "privcesDiff", pricesDiff);
|
||||
await LogPrice(message, "tradevolume_diff", tradesDiff);
|
||||
await _tradeDataProvider.LogPrice(message, "privcesDiff", pricesDiff);
|
||||
await _tradeDataProvider.LogPrice(message, "tradevolume_diff", tradesDiff);
|
||||
await _tradeDataProvider.AddDataTo15MinuteWindowCache(message.Figi, "5min_diff", new Contracts.Declisions.Dtos.CachedValue()
|
||||
{
|
||||
Time = message.Time,
|
||||
|
@ -225,12 +223,12 @@ namespace KLHZ.Trader.Core.Exchange.Services
|
|||
if (diffs.TryCalcTimeWindowsDiff(bigWindow, smallWindow, (c) => c.Value, true, out var resdp)
|
||||
&& diffs.TryCalcTimeWindowsDiff(bigWindow, smallWindow, (c) => c.Value2, true, out var resv))
|
||||
{
|
||||
await LogPrice(message, "privcesDiffDiff", (decimal)resdp);
|
||||
await LogPrice(message, "tradevolume_diff_diff", (decimal)resv);
|
||||
await _tradeDataProvider.LogPrice(message, "privcesDiffDiff", (decimal)resdp);
|
||||
await _tradeDataProvider.LogPrice(message, "tradevolume_diff_diff", (decimal)resv);
|
||||
|
||||
if (diffs.TryCalcPirsonCorrelation(meanWindow, out var pirson))
|
||||
{
|
||||
await LogPrice(message, "diffs_pirson", (decimal)pirson);
|
||||
await _tradeDataProvider.LogPrice(message, "diffs_pirson", (decimal)pirson);
|
||||
await _tradeDataProvider.AddDataTo15MinuteWindowCache(message.Figi, "diffs_pirson", new Contracts.Declisions.Dtos.CachedValue()
|
||||
{
|
||||
Time = message.Time,
|
||||
|
@ -243,7 +241,7 @@ namespace KLHZ.Trader.Core.Exchange.Services
|
|||
{
|
||||
if (olddpirs < 0.5m && res > 0.5m)
|
||||
{
|
||||
await LogPrice(message, "diffs_pirson_diff_point0.5", message.Price);
|
||||
await _tradeDataProvider.LogPrice(message, "diffs_pirson_diff_point0.5", message.Price);
|
||||
}
|
||||
}
|
||||
DPirsonValues[message.Figi] = res;
|
||||
|
@ -306,7 +304,7 @@ namespace KLHZ.Trader.Core.Exchange.Services
|
|||
if (loggedDeclisions == 0)
|
||||
{
|
||||
loggedDeclisions++;
|
||||
await LogDeclision(asset.Count < 0 ? DeclisionTradeAction.CloseShortReal : DeclisionTradeAction.CloseLongReal, message, profit);
|
||||
await _tradeDataProvider.LogDeclision(asset.Count < 0 ? DeclisionTradeAction.CloseShortReal : DeclisionTradeAction.CloseLongReal, message, profit);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -344,7 +342,7 @@ namespace KLHZ.Trader.Core.Exchange.Services
|
|||
|
||||
if (loggedDeclisions == 0)
|
||||
{
|
||||
await LogDeclision(DeclisionTradeAction.OpenLongReal, message);
|
||||
await _tradeDataProvider.LogDeclision(DeclisionTradeAction.OpenLongReal, message);
|
||||
loggedDeclisions++;
|
||||
}
|
||||
}
|
||||
|
@ -367,9 +365,9 @@ namespace KLHZ.Trader.Core.Exchange.Services
|
|||
.ToArray();
|
||||
await OpenPositions(accounts, message, PositionType.Long, stops.stopLoss, stops.takeProfit, 1);
|
||||
}
|
||||
await LogDeclision(DeclisionTradeAction.OpenLong, message.Price, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(-100, 100)), message);
|
||||
await LogDeclision(DeclisionTradeAction.ResetStopsLong, message.Price + stops.takeProfit, message.Time.AddMilliseconds(-RandomNumberGenerator.GetInt32(300, 1000)), message);
|
||||
await LogDeclision(DeclisionTradeAction.ResetStopsLong, message.Price - stops.stopLoss, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(300, 1000)), message);
|
||||
await _tradeDataProvider.LogDeclision(DeclisionTradeAction.OpenLong, message.Price, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(-100, 100)), message);
|
||||
await _tradeDataProvider.LogDeclision(DeclisionTradeAction.ResetStopsLong, message.Price + stops.takeProfit, message.Time.AddMilliseconds(-RandomNumberGenerator.GetInt32(300, 1000)), message);
|
||||
await _tradeDataProvider.LogDeclision(DeclisionTradeAction.ResetStopsLong, message.Price - stops.stopLoss, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(300, 1000)), message);
|
||||
}
|
||||
if (result[TradingEvent.DowntrendStart] >= Constants.UppingCoefficient
|
||||
&& state == ExchangeState.Open
|
||||
|
@ -386,9 +384,9 @@ namespace KLHZ.Trader.Core.Exchange.Services
|
|||
await OpenPositions(accounts, message, PositionType.Short, stops.stopLoss, stops.takeProfit, 1);
|
||||
}
|
||||
|
||||
await LogDeclision(DeclisionTradeAction.OpenShort, message.Price, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(-100, 100)), message);
|
||||
await LogDeclision(DeclisionTradeAction.ResetStopsShort, message.Price - stops.takeProfit, message.Time.AddMilliseconds(-RandomNumberGenerator.GetInt32(300, 1000)), message);
|
||||
await LogDeclision(DeclisionTradeAction.ResetStopsShort, message.Price + stops.stopLoss, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(300, 1000)), message);
|
||||
await _tradeDataProvider.LogDeclision(DeclisionTradeAction.OpenShort, message.Price, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(-100, 100)), message);
|
||||
await _tradeDataProvider.LogDeclision(DeclisionTradeAction.ResetStopsShort, message.Price - stops.takeProfit, message.Time.AddMilliseconds(-RandomNumberGenerator.GetInt32(300, 1000)), message);
|
||||
await _tradeDataProvider.LogDeclision(DeclisionTradeAction.ResetStopsShort, message.Price + stops.stopLoss, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(300, 1000)), message);
|
||||
}
|
||||
if (result[TradingEvent.UptrendEnd] >= Constants.UppingCoefficient * 10)
|
||||
{
|
||||
|
@ -400,7 +398,7 @@ namespace KLHZ.Trader.Core.Exchange.Services
|
|||
.ToArray();
|
||||
await ClosePositions(assetsForClose, message);
|
||||
}
|
||||
await LogDeclision(DeclisionTradeAction.CloseLong, message.Price, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(-100, 100)), message);
|
||||
await _tradeDataProvider.LogDeclision(DeclisionTradeAction.CloseLong, message.Price, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(-100, 100)), message);
|
||||
|
||||
}
|
||||
|
||||
|
@ -414,63 +412,11 @@ namespace KLHZ.Trader.Core.Exchange.Services
|
|||
.ToArray();
|
||||
await ClosePositions(assetsForClose, message);
|
||||
}
|
||||
await LogDeclision(DeclisionTradeAction.CloseShort, message.Price, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(-100, 100)), message);
|
||||
await _tradeDataProvider.LogDeclision(DeclisionTradeAction.CloseShort, message.Price, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(-100, 100)), message);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private async Task LogPrice(INewPrice message, string processor, decimal value)
|
||||
{
|
||||
await _tradeDataProvider.LogPrice(new ProcessedPrice()
|
||||
{
|
||||
Figi = message.Figi,
|
||||
Ticker = message.Ticker,
|
||||
Processor = processor,
|
||||
Time = message.Time,
|
||||
Price = value,
|
||||
}, false);
|
||||
}
|
||||
|
||||
private async Task LogPrice(string figi, string ticker, DateTime time, decimal value, string processor)
|
||||
{
|
||||
await _tradeDataProvider.LogPrice(new ProcessedPrice()
|
||||
{
|
||||
Figi = figi,
|
||||
Ticker = ticker,
|
||||
Processor = processor,
|
||||
Time = time,
|
||||
Price = value,
|
||||
}, false);
|
||||
}
|
||||
|
||||
private async Task LogDeclision(DeclisionTradeAction action, INewPrice message, decimal? profit = null)
|
||||
{
|
||||
await _tradeDataProvider.LogDeclision(new Declision()
|
||||
{
|
||||
AccountId = string.Empty,
|
||||
Figi = message.Figi,
|
||||
Ticker = message.Ticker,
|
||||
Value = profit,
|
||||
Price = message.Price,
|
||||
Time = message.IsHistoricalData ? message.Time : DateTime.UtcNow,
|
||||
Action = action,
|
||||
}, false);
|
||||
}
|
||||
|
||||
private async Task LogDeclision(DeclisionTradeAction action, decimal price, DateTime time, INewPrice message)
|
||||
{
|
||||
await _tradeDataProvider.LogDeclision(new Declision()
|
||||
{
|
||||
AccountId = string.Empty,
|
||||
Figi = message.Figi,
|
||||
Ticker = message.Ticker,
|
||||
Value = price,
|
||||
Price = price,
|
||||
Time = time,
|
||||
Action = action,
|
||||
}, false);
|
||||
}
|
||||
|
||||
public Task StopAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
return Task.CompletedTask;
|
||||
|
|
|
@ -5,6 +5,7 @@ using KLHZ.Trader.Core.Contracts.Messaging.Dtos;
|
|||
using KLHZ.Trader.Core.Contracts.Messaging.Dtos.Interfaces;
|
||||
using KLHZ.Trader.Core.DataLayer;
|
||||
using KLHZ.Trader.Core.DataLayer.Entities.Declisions;
|
||||
using KLHZ.Trader.Core.DataLayer.Entities.Declisions.Enums;
|
||||
using KLHZ.Trader.Core.DataLayer.Entities.Prices;
|
||||
using KLHZ.Trader.Core.Exchange.Models.Configs;
|
||||
using KLHZ.Trader.Core.Math.Declisions.Dtos.FFT;
|
||||
|
@ -297,6 +298,58 @@ namespace KLHZ.Trader.Core.Exchange.Services
|
|||
await _forSave.Writer.WriteAsync(declision);
|
||||
}
|
||||
}
|
||||
|
||||
internal async Task LogPrice(INewPrice message, string processor, decimal value)
|
||||
{
|
||||
await LogPrice(new ProcessedPrice()
|
||||
{
|
||||
Figi = message.Figi,
|
||||
Ticker = message.Ticker,
|
||||
Processor = processor,
|
||||
Time = message.Time,
|
||||
Price = value,
|
||||
}, false);
|
||||
}
|
||||
|
||||
internal async Task LogPrice(string figi, string ticker, DateTime time, decimal value, string processor)
|
||||
{
|
||||
await LogPrice(new ProcessedPrice()
|
||||
{
|
||||
Figi = figi,
|
||||
Ticker = ticker,
|
||||
Processor = processor,
|
||||
Time = time,
|
||||
Price = value,
|
||||
}, false);
|
||||
}
|
||||
|
||||
internal async Task LogDeclision(DeclisionTradeAction action, INewPrice message, decimal? profit = null)
|
||||
{
|
||||
await LogDeclision(new Declision()
|
||||
{
|
||||
AccountId = string.Empty,
|
||||
Figi = message.Figi,
|
||||
Ticker = message.Ticker,
|
||||
Value = profit,
|
||||
Price = message.Price,
|
||||
Time = message.IsHistoricalData ? message.Time : DateTime.UtcNow,
|
||||
Action = action,
|
||||
}, false);
|
||||
}
|
||||
|
||||
internal async Task LogDeclision(DeclisionTradeAction action, decimal price, DateTime time, INewPrice message)
|
||||
{
|
||||
await LogDeclision(new Declision()
|
||||
{
|
||||
AccountId = string.Empty,
|
||||
Figi = message.Figi,
|
||||
Ticker = message.Ticker,
|
||||
Value = price,
|
||||
Price = price,
|
||||
Time = time,
|
||||
Action = action,
|
||||
}, false);
|
||||
}
|
||||
private async Task WritePricesTask()
|
||||
{
|
||||
var buffer1 = new List<ProcessedPrice>();
|
||||
|
|
Loading…
Reference in New Issue