fix(simulation,technicals): fix EMA 200 warmup distortion, intrabar execution path, and zero slippage

This commit is contained in:
2026-09-01 17:38:34 +02:00
parent cb8a169043
commit d161efb370
5 changed files with 25 additions and 19 deletions
@@ -246,14 +246,14 @@ public class TechnicalScoringEngine : ITechnicalScoringEngine
decimal score = 50m;
if (dir == SignalDirection.Buy)
{
if (ind.TryGetValue("EMA_20", out var e20) && ind.TryGetValue("EMA_50", out var e50) && e20 > e50) score += 15m;
if (ind.TryGetValue("EMA_20", out var e20) && ind.TryGetValue("EMA_50", out var e50) && e20 > 0m && e50 > 0m && e20 > e50) score += 15m;
if (ind.TryGetValue("RSI_14", out var rsi) && rsi is >= 45m and <= 65m) score += 15m;
if (ind.TryGetValue("ADX_14", out var adx) && adx >= 25m) score += 10m;
if (ind.TryGetValue("VWAP", out var vwap) && ind.TryGetValue("EMA_20", out var e20b) && e20b > vwap) score += 10m;
if (ind.TryGetValue("VWAP", out var vwap) && vwap > 0m && ind.TryGetValue("EMA_20", out var e20b) && e20b > vwap) score += 10m;
}
else if (dir == SignalDirection.Sell)
{
if (ind.TryGetValue("EMA_20", out var e20) && ind.TryGetValue("EMA_50", out var e50) && e20 < e50) score += 15m;
if (ind.TryGetValue("EMA_20", out var e20) && ind.TryGetValue("EMA_50", out var e50) && e20 > 0m && e50 > 0m && e20 < e50) score += 15m;
if (ind.TryGetValue("RSI_14", out var rsi) && rsi is >= 35m and <= 55m) score += 15m;
if (ind.TryGetValue("ADX_14", out var adx) && adx >= 25m) score += 10m;
}