Add precalculated signals list + multi scenario test
This commit is contained in:
@@ -259,6 +259,11 @@ public class TradingBotBase : ITradingBot
|
||||
}
|
||||
|
||||
public async Task UpdateSignals(HashSet<Candle> candles = null)
|
||||
{
|
||||
await UpdateSignals(candles, null);
|
||||
}
|
||||
|
||||
public async Task UpdateSignals(HashSet<Candle> candles, Dictionary<DateTime, LightSignal> preCalculatedSignals = null)
|
||||
{
|
||||
// Skip indicator checking if flipping is disabled and there's an open position
|
||||
// This prevents unnecessary indicator calculations when we can't act on signals anyway
|
||||
@@ -276,13 +281,29 @@ public class TradingBotBase : ITradingBot
|
||||
return;
|
||||
}
|
||||
|
||||
if (Config.IsForBacktest && candles != null)
|
||||
if (Config.IsForBacktest)
|
||||
{
|
||||
var backtestSignal =
|
||||
TradingBox.GetSignal(candles, Config.Scenario, Signals, Config.Scenario.LoopbackPeriod,
|
||||
LightSignal backtestSignal;
|
||||
|
||||
if (preCalculatedSignals != null && LastCandle != null && preCalculatedSignals.TryGetValue(LastCandle.Date, out backtestSignal))
|
||||
{
|
||||
// Use pre-calculated signal - fast path
|
||||
if (backtestSignal == null) return;
|
||||
await AddSignal(backtestSignal);
|
||||
}
|
||||
else if (candles != null)
|
||||
{
|
||||
// Fallback to original calculation if no pre-calculated signals available
|
||||
backtestSignal = TradingBox.GetSignal(candles, Config.Scenario, Signals, Config.Scenario.LoopbackPeriod,
|
||||
PreCalculatedIndicatorValues);
|
||||
if (backtestSignal == null) return;
|
||||
await AddSignal(backtestSignal);
|
||||
if (backtestSignal == null) return;
|
||||
await AddSignal(backtestSignal);
|
||||
}
|
||||
else
|
||||
{
|
||||
// No candles provided - skip signal update
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -375,7 +396,7 @@ public class TradingBotBase : ITradingBot
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!hasOpenPositions && !hasWaitingSignals)
|
||||
return;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user