Fix collateral price + remove close orders
This commit is contained in:
@@ -193,7 +193,7 @@ public class TradingBot : Bot, ITradingBot
|
||||
UpdateStrategiesValues();
|
||||
}
|
||||
|
||||
await UpdateWalletBalances();
|
||||
UpdateWalletBalances();
|
||||
if (OptimizedCandles.Count % 100 == 0) // Log every 10th execution
|
||||
{
|
||||
Logger.LogInformation($"Candle date : {OptimizedCandles.Last().Date:u}");
|
||||
@@ -289,28 +289,34 @@ public class TradingBot : Bot, ITradingBot
|
||||
|
||||
private async Task ManagePositions()
|
||||
{
|
||||
// Update position
|
||||
foreach (var signal in Signals.Where(s => s.Status == SignalStatus.PositionOpen))
|
||||
// Update positions - iterate through positions instead of signals for better synchronization
|
||||
foreach (var position in Positions.Where(p => !p.IsFinished()))
|
||||
{
|
||||
var positionForSignal = Positions.FirstOrDefault(p => p.SignalIdentifier == signal.Identifier);
|
||||
if (positionForSignal == null)
|
||||
var signalForPosition = Signals.FirstOrDefault(s => s.Identifier == position.SignalIdentifier);
|
||||
if (signalForPosition == null)
|
||||
{
|
||||
await LogInformation($"Cannot find position for signal {signal.Identifier}");
|
||||
await LogWarning($"Cannot find signal for position {position.Identifier}");
|
||||
continue;
|
||||
}
|
||||
else
|
||||
|
||||
// Ensure signal status is correctly set to PositionOpen if position is not finished
|
||||
if (signalForPosition.Status != SignalStatus.PositionOpen)
|
||||
{
|
||||
await UpdatePosition(signal, positionForSignal);
|
||||
await LogInformation($"Updating signal {signalForPosition.Identifier} status from {signalForPosition.Status} to PositionOpen");
|
||||
SetSignalStatus(signalForPosition.Identifier, SignalStatus.PositionOpen);
|
||||
}
|
||||
|
||||
await UpdatePosition(signalForPosition, position);
|
||||
}
|
||||
|
||||
// Open position for signal waiting for a position open
|
||||
// Open position for signals waiting for a position open
|
||||
foreach (var signal in Signals.Where(s => s.Status == SignalStatus.WaitingForPosition))
|
||||
{
|
||||
Task.Run(() => OpenPosition(signal)).GetAwaiter().GetResult();
|
||||
}
|
||||
}
|
||||
|
||||
private async Task UpdateWalletBalances()
|
||||
private void UpdateWalletBalances()
|
||||
{
|
||||
var lastCandle = OptimizedCandles.LastOrDefault();
|
||||
if (lastCandle == null) return;
|
||||
|
||||
Reference in New Issue
Block a user