Update position saving and update
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user