Добавил режимы торговли
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();
try
{
#region Ускорение обработки исторических данных при отладке
if (message.IsHistoricalData)
{
@ -187,13 +189,13 @@ namespace KLHZ.Trader.Core.Exchange.Services
timesCache[message.Figi] = message.Time;
}
}
catch(Exception ex)
catch (Exception ex)
{
}
}
await LogPrice(message, "trading_mode", (int)TradingModes[message.Figi]);
var mode = (decimal)TradingModes[message.Figi];
await LogPrice(message, "trading_mode", mode);
//continue;
#endregion
if (message.Figi == "BBG004730N88")
@ -245,7 +247,7 @@ namespace KLHZ.Trader.Core.Exchange.Services
}
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)
{
@ -262,6 +264,12 @@ namespace KLHZ.Trader.Core.Exchange.Services
}
}
}
catch(Exception e)
{
}
}
}
private async Task ProcessOrders()
@ -711,12 +719,14 @@ namespace KLHZ.Trader.Core.Exchange.Services
await LogDeclision(DeclisionTradeAction.OpenLong, message);
}
if (!message.IsHistoricalData)
{
foreach (var acc in _tradeDataProvider.Accounts)
{
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);
if (order == null && asset.Count>0)
if (order == null && asset.Count > 0)
{
var command = new TradeCommand()
{
@ -732,6 +742,7 @@ namespace KLHZ.Trader.Core.Exchange.Services
}
}
}
}
private async Task ProcessNewPriceIMOEXF_Dropping(
(DateTime[] timestamps, decimal[] prices) data,
@ -845,12 +856,15 @@ namespace KLHZ.Trader.Core.Exchange.Services
await LogDeclision(DeclisionTradeAction.CloseShort, message);
}
}
if (!message.IsHistoricalData)
{
foreach (var acc in _tradeDataProvider.Accounts)
{
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);
if (order == null && asset.Count<0)
if (order == null && asset.Count < 0)
{
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)
{