обновление механизма закрытия позиции
test / deploy_trader_prod (push) Successful in 51s Details

dev
vlad zverzhkhovskiy 2025-09-22 12:32:53 +03:00
parent 214eb591bc
commit 47e94a5620
3 changed files with 21 additions and 3 deletions

View File

@ -157,7 +157,7 @@ namespace KLHZ.Trader.Core.Exchange.Services
}; };
await _tradeDataProvider.AddData(message, TimeSpan.FromHours(7)); await _tradeDataProvider.AddData(message, TimeSpan.FromHours(7));
//await _eventBus.Broadcast(message); await _eventBus.Broadcast(message);
var exchangeState = ExchangeScheduler.GetCurrentState(); var exchangeState = ExchangeScheduler.GetCurrentState();
if (exchangeState == Models.Trading.ExchangeState.ClearingTime if (exchangeState == Models.Trading.ExchangeState.ClearingTime

View File

@ -252,7 +252,25 @@ namespace KLHZ.Trader.Core.Exchange.Services
ConfirmMarginTrade = true, ConfirmMarginTrade = true,
}; };
var stopsReq = new GetStopOrdersRequest() { AccountId = asset.AccountId};
var res = await _investApiClient.Orders.PostOrderAsync(req); var res = await _investApiClient.Orders.PostOrderAsync(req);
var stopOrders = await _investApiClient.StopOrders.GetStopOrdersAsync(stopsReq);
if (stopOrders.StopOrders != null)
{
foreach (var stopOrder in stopOrders.StopOrders)
{
try
{
await _investApiClient.StopOrders.CancelStopOrderAsync(new CancelStopOrderRequest() { AccountId = asset.AccountId, StopOrderId = stopOrder.StopOrderId });
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при закрытии стопов для позиции.");
}
}
}
await LoadPortfolioNolock(); await LoadPortfolioNolock();
} }
} }

View File

@ -94,14 +94,14 @@ namespace KLHZ.Trader.Core.TG.Services
{ {
var acc = _portfolioWrapper.Accounts.Values.FirstOrDefault(a => !a.Assets.ContainsKey("FUTIMOEXF000")); var acc = _portfolioWrapper.Accounts.Values.FirstOrDefault(a => !a.Assets.ContainsKey("FUTIMOEXF000"));
if (acc != null) if (acc != null)
await acc.OpenPosition("FUTIMOEXF000", Exchange.Models.AssetsAccounting.PositionType.Long, 10, 10, 1); await acc.OpenPosition("FUTIMOEXF000", Exchange.Models.AssetsAccounting.PositionType.Long, 4, 6, 1);
break; break;
} }
case "шорт IMOEXF": case "шорт IMOEXF":
{ {
var acc = _portfolioWrapper.Accounts.Values.FirstOrDefault(a => !a.Assets.ContainsKey("FUTIMOEXF000")); var acc = _portfolioWrapper.Accounts.Values.FirstOrDefault(a => !a.Assets.ContainsKey("FUTIMOEXF000"));
if (acc != null) if (acc != null)
await acc.OpenPosition("FUTIMOEXF000", Exchange.Models.AssetsAccounting.PositionType.Short, 10, 10, 1); await acc.OpenPosition("FUTIMOEXF000", Exchange.Models.AssetsAccounting.PositionType.Short, 4, 6, 1);
break; break;
} }
case "ребут": case "ребут":