Рефакторинг
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.Enums;
|
||||||
using KLHZ.Trader.Core.Contracts.Messaging.Dtos.Interfaces;
|
using KLHZ.Trader.Core.Contracts.Messaging.Dtos.Interfaces;
|
||||||
using KLHZ.Trader.Core.Contracts.Messaging.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.Declisions.Enums;
|
||||||
using KLHZ.Trader.Core.DataLayer.Entities.Prices;
|
|
||||||
using KLHZ.Trader.Core.Exchange.Interfaces;
|
using KLHZ.Trader.Core.Exchange.Interfaces;
|
||||||
using KLHZ.Trader.Core.Exchange.Models.Configs;
|
using KLHZ.Trader.Core.Exchange.Models.Configs;
|
||||||
using KLHZ.Trader.Core.Exchange.Models.Trading;
|
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)
|
if (trades2.TryCalcTimeWindowsDiff(bigWindow, smallWindow, v => v.Count, false, out var tradesDiff)
|
||||||
&& buys.TryCalcTimeWindowsDiff(bigWindow, smallWindow, v => v.Price, true, out var pricesDiff))
|
&& buys.TryCalcTimeWindowsDiff(bigWindow, smallWindow, v => v.Price, true, out var pricesDiff))
|
||||||
{
|
{
|
||||||
await LogPrice(message, "privcesDiff", pricesDiff);
|
await _tradeDataProvider.LogPrice(message, "privcesDiff", pricesDiff);
|
||||||
await LogPrice(message, "tradevolume_diff", tradesDiff);
|
await _tradeDataProvider.LogPrice(message, "tradevolume_diff", tradesDiff);
|
||||||
await _tradeDataProvider.AddDataTo15MinuteWindowCache(message.Figi, "5min_diff", new Contracts.Declisions.Dtos.CachedValue()
|
await _tradeDataProvider.AddDataTo15MinuteWindowCache(message.Figi, "5min_diff", new Contracts.Declisions.Dtos.CachedValue()
|
||||||
{
|
{
|
||||||
Time = message.Time,
|
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)
|
if (diffs.TryCalcTimeWindowsDiff(bigWindow, smallWindow, (c) => c.Value, true, out var resdp)
|
||||||
&& diffs.TryCalcTimeWindowsDiff(bigWindow, smallWindow, (c) => c.Value2, true, out var resv))
|
&& diffs.TryCalcTimeWindowsDiff(bigWindow, smallWindow, (c) => c.Value2, true, out var resv))
|
||||||
{
|
{
|
||||||
await LogPrice(message, "privcesDiffDiff", (decimal)resdp);
|
await _tradeDataProvider.LogPrice(message, "privcesDiffDiff", (decimal)resdp);
|
||||||
await LogPrice(message, "tradevolume_diff_diff", (decimal)resv);
|
await _tradeDataProvider.LogPrice(message, "tradevolume_diff_diff", (decimal)resv);
|
||||||
|
|
||||||
if (diffs.TryCalcPirsonCorrelation(meanWindow, out var pirson))
|
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()
|
await _tradeDataProvider.AddDataTo15MinuteWindowCache(message.Figi, "diffs_pirson", new Contracts.Declisions.Dtos.CachedValue()
|
||||||
{
|
{
|
||||||
Time = message.Time,
|
Time = message.Time,
|
||||||
|
@ -243,7 +241,7 @@ namespace KLHZ.Trader.Core.Exchange.Services
|
||||||
{
|
{
|
||||||
if (olddpirs < 0.5m && res > 0.5m)
|
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;
|
DPirsonValues[message.Figi] = res;
|
||||||
|
@ -306,7 +304,7 @@ namespace KLHZ.Trader.Core.Exchange.Services
|
||||||
if (loggedDeclisions == 0)
|
if (loggedDeclisions == 0)
|
||||||
{
|
{
|
||||||
loggedDeclisions++;
|
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)
|
if (loggedDeclisions == 0)
|
||||||
{
|
{
|
||||||
await LogDeclision(DeclisionTradeAction.OpenLongReal, message);
|
await _tradeDataProvider.LogDeclision(DeclisionTradeAction.OpenLongReal, message);
|
||||||
loggedDeclisions++;
|
loggedDeclisions++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -367,9 +365,9 @@ namespace KLHZ.Trader.Core.Exchange.Services
|
||||||
.ToArray();
|
.ToArray();
|
||||||
await OpenPositions(accounts, message, PositionType.Long, stops.stopLoss, stops.takeProfit, 1);
|
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 _tradeDataProvider.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 _tradeDataProvider.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.ResetStopsLong, message.Price - stops.stopLoss, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(300, 1000)), message);
|
||||||
}
|
}
|
||||||
if (result[TradingEvent.DowntrendStart] >= Constants.UppingCoefficient
|
if (result[TradingEvent.DowntrendStart] >= Constants.UppingCoefficient
|
||||||
&& state == ExchangeState.Open
|
&& 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 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 _tradeDataProvider.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 _tradeDataProvider.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.ResetStopsShort, message.Price + stops.stopLoss, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(300, 1000)), message);
|
||||||
}
|
}
|
||||||
if (result[TradingEvent.UptrendEnd] >= Constants.UppingCoefficient * 10)
|
if (result[TradingEvent.UptrendEnd] >= Constants.UppingCoefficient * 10)
|
||||||
{
|
{
|
||||||
|
@ -400,7 +398,7 @@ namespace KLHZ.Trader.Core.Exchange.Services
|
||||||
.ToArray();
|
.ToArray();
|
||||||
await ClosePositions(assetsForClose, message);
|
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();
|
.ToArray();
|
||||||
await ClosePositions(assetsForClose, message);
|
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)
|
public Task StopAsync(CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
return Task.CompletedTask;
|
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.Contracts.Messaging.Dtos.Interfaces;
|
||||||
using KLHZ.Trader.Core.DataLayer;
|
using KLHZ.Trader.Core.DataLayer;
|
||||||
using KLHZ.Trader.Core.DataLayer.Entities.Declisions;
|
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.DataLayer.Entities.Prices;
|
||||||
using KLHZ.Trader.Core.Exchange.Models.Configs;
|
using KLHZ.Trader.Core.Exchange.Models.Configs;
|
||||||
using KLHZ.Trader.Core.Math.Declisions.Dtos.FFT;
|
using KLHZ.Trader.Core.Math.Declisions.Dtos.FFT;
|
||||||
|
@ -297,6 +298,58 @@ namespace KLHZ.Trader.Core.Exchange.Services
|
||||||
await _forSave.Writer.WriteAsync(declision);
|
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()
|
private async Task WritePricesTask()
|
||||||
{
|
{
|
||||||
var buffer1 = new List<ProcessedPrice>();
|
var buffer1 = new List<ProcessedPrice>();
|
||||||
|
|
Loading…
Reference in New Issue