Добавил режимы торговли
test / deploy_trader_prod (push) Successful in 3m54s Details

dev
vlad zverzhkhovskiy 2025-09-17 16:27:22 +03:00
parent 6643549a93
commit 8b38421be4
1 changed files with 142 additions and 127 deletions

View File

@ -140,6 +140,8 @@ namespace KLHZ.Trader.Core.Exchange.Services
{ {
var message = await _pricesChannel.Reader.ReadAsync(); var message = await _pricesChannel.Reader.ReadAsync();
try
{
#region Ускорение обработки исторических данных при отладке #region Ускорение обработки исторических данных при отладке
if (message.IsHistoricalData) if (message.IsHistoricalData)
{ {
@ -187,13 +189,13 @@ namespace KLHZ.Trader.Core.Exchange.Services
timesCache[message.Figi] = message.Time; timesCache[message.Figi] = message.Time;
} }
} }
catch(Exception ex) catch (Exception ex)
{ {
} }
} }
var mode = (decimal)TradingModes[message.Figi];
await LogPrice(message, "trading_mode", (int)TradingModes[message.Figi]); await LogPrice(message, "trading_mode", mode);
//continue; //continue;
#endregion #endregion
if (message.Figi == "BBG004730N88") if (message.Figi == "BBG004730N88")
@ -245,7 +247,7 @@ namespace KLHZ.Trader.Core.Exchange.Services
} }
else if (TradingModes[message.Figi] == TradingMode.SlowDropping) else if (TradingModes[message.Figi] == TradingMode.SlowDropping)
{ {
await ProcessNewPriceIMOEXF_Dropping(data,state,message,windowMaxSize,3); await ProcessNewPriceIMOEXF_Dropping(data, state, message, windowMaxSize, 3);
} }
else if (TradingModes[message.Figi] == TradingMode.Dropping) else if (TradingModes[message.Figi] == TradingMode.Dropping)
{ {
@ -262,6 +264,12 @@ namespace KLHZ.Trader.Core.Exchange.Services
} }
} }
} }
catch(Exception e)
{
}
}
} }
private async Task ProcessOrders() private async Task ProcessOrders()
@ -711,12 +719,14 @@ namespace KLHZ.Trader.Core.Exchange.Services
await LogDeclision(DeclisionTradeAction.OpenLong, message); await LogDeclision(DeclisionTradeAction.OpenLong, message);
} }
if (!message.IsHistoricalData)
{
foreach (var acc in _tradeDataProvider.Accounts) foreach (var acc in _tradeDataProvider.Accounts)
{ {
if (acc.Value.Assets.TryGetValue(message.Figi, out var asset)) if (acc.Value.Assets.TryGetValue(message.Figi, out var asset))
{ {
var order = acc.Value.Orders.Values.FirstOrDefault(o => o.Figi == message.Figi && o.Direction == DealDirection.Sell); var order = acc.Value.Orders.Values.FirstOrDefault(o => o.Figi == message.Figi && o.Direction == DealDirection.Sell);
if (order == null && asset.Count>0) if (order == null && asset.Count > 0)
{ {
var command = new TradeCommand() var command = new TradeCommand()
{ {
@ -732,6 +742,7 @@ namespace KLHZ.Trader.Core.Exchange.Services
} }
} }
} }
}
private async Task ProcessNewPriceIMOEXF_Dropping( private async Task ProcessNewPriceIMOEXF_Dropping(
(DateTime[] timestamps, decimal[] prices) data, (DateTime[] timestamps, decimal[] prices) data,
@ -845,12 +856,15 @@ namespace KLHZ.Trader.Core.Exchange.Services
await LogDeclision(DeclisionTradeAction.CloseShort, message); await LogDeclision(DeclisionTradeAction.CloseShort, message);
} }
} }
if (!message.IsHistoricalData)
{
foreach (var acc in _tradeDataProvider.Accounts) foreach (var acc in _tradeDataProvider.Accounts)
{ {
if (acc.Value.Assets.TryGetValue(message.Figi, out var asset)) if (acc.Value.Assets.TryGetValue(message.Figi, out var asset))
{ {
var order = acc.Value.Orders.Values.FirstOrDefault(o => o.Figi == message.Figi && o.Direction == DealDirection.Buy); var order = acc.Value.Orders.Values.FirstOrDefault(o => o.Figi == message.Figi && o.Direction == DealDirection.Buy);
if (order == null && asset.Count<0) if (order == null && asset.Count < 0)
{ {
var command = new TradeCommand() var command = new TradeCommand()
{ {
@ -866,6 +880,7 @@ namespace KLHZ.Trader.Core.Exchange.Services
} }
} }
} }
}
private async Task ProcessClearing((DateTime[] timestamps, decimal[] prices) data, ExchangeState state, INewPrice message) private async Task ProcessClearing((DateTime[] timestamps, decimal[] prices) data, ExchangeState state, INewPrice message)
{ {