Update position saving and update

This commit is contained in:
2025-10-04 17:38:01 +07:00
parent b473ad6ad8
commit a97b5804a0
3 changed files with 45 additions and 7 deletions

View File

@@ -406,6 +406,32 @@ public class TradingBotBase : ITradingBot
internalPosition.Open.SetStatus(TradeStatus.Filled);
positionForSignal.Open.SetStatus(TradeStatus.Filled);
// Update Open trade ExchangeOrderId if broker position has one
if (brokerPosition.Open?.ExchangeOrderId != null && internalPosition.Open != null)
{
internalPosition.Open.SetExchangeOrderId(brokerPosition.Open.ExchangeOrderId);
positionForSignal.Open.SetExchangeOrderId(brokerPosition.Open.ExchangeOrderId);
}
// Update Stop Loss and Take Profit trades with correct ExchangeOrderId from broker
if (brokerPosition.StopLoss != null && internalPosition.StopLoss != null)
{
internalPosition.StopLoss.SetExchangeOrderId(brokerPosition.StopLoss.ExchangeOrderId);
positionForSignal.StopLoss.SetExchangeOrderId(brokerPosition.StopLoss.ExchangeOrderId);
}
if (brokerPosition.TakeProfit1 != null && internalPosition.TakeProfit1 != null)
{
internalPosition.TakeProfit1.SetExchangeOrderId(brokerPosition.TakeProfit1.ExchangeOrderId);
positionForSignal.TakeProfit1.SetExchangeOrderId(brokerPosition.TakeProfit1.ExchangeOrderId);
}
if (brokerPosition.TakeProfit2 != null && internalPosition.TakeProfit2 != null)
{
internalPosition.TakeProfit2.SetExchangeOrderId(brokerPosition.TakeProfit2.ExchangeOrderId);
positionForSignal.TakeProfit2.SetExchangeOrderId(brokerPosition.TakeProfit2.ExchangeOrderId);
}
await UpdatePositionDatabase(internalPosition);
if (previousPositionStatus != PositionStatus.Filled &&
@@ -503,12 +529,22 @@ public class TradingBotBase : ITradingBot
if (internalPosition.Open != null)
{
internalPosition.Open.SetStatus(TradeStatus.Filled);
// Update Open trade ExchangeOrderId if broker position has one
if (brokerPosition.Open?.ExchangeOrderId != null)
{
internalPosition.Open.SetExchangeOrderId(brokerPosition.Open.ExchangeOrderId);
}
}
// Also update the position in the bot's positions dictionary
if (positionForSignal.Open != null)
{
positionForSignal.Open.SetStatus(TradeStatus.Filled);
// Update Open trade ExchangeOrderId if broker position has one
if (brokerPosition.Open?.ExchangeOrderId != null)
{
positionForSignal.Open.SetExchangeOrderId(brokerPosition.Open.ExchangeOrderId);
}
}
await SetPositionStatus(signal.Identifier, PositionStatus.Filled);