Rename strategy to indicators

This commit is contained in:
2025-06-16 22:09:23 +07:00
parent e4f4d078b2
commit 0f7df04813
45 changed files with 477 additions and 474 deletions

View File

@@ -10,7 +10,7 @@ namespace Managing.Domain.Shared.Helpers;
/// <summary>
/// Configuration for strategy combination logic
/// </summary>
public class StrategyComboConfig
public class IndicatorComboConfig
{
/// <summary>
/// Minimum percentage of trend strategies that must agree for strong trend (default: 66%)
@@ -47,16 +47,16 @@ public class StrategyComboConfig
public static class TradingBox
{
private static readonly StrategyComboConfig _defaultConfig = new();
private static readonly IndicatorComboConfig _defaultConfig = new();
public static Signal GetSignal(HashSet<Candle> newCandles, HashSet<IStrategy> strategies,
public static Signal GetSignal(HashSet<Candle> newCandles, HashSet<IIndicator> strategies,
HashSet<Signal> previousSignal, int? loopbackPeriod = 1)
{
return GetSignal(newCandles, strategies, previousSignal, _defaultConfig, loopbackPeriod);
}
public static Signal GetSignal(HashSet<Candle> newCandles, HashSet<IStrategy> strategies,
HashSet<Signal> previousSignal, StrategyComboConfig config, int? loopbackPeriod = 1)
public static Signal GetSignal(HashSet<Candle> newCandles, HashSet<IIndicator> strategies,
HashSet<Signal> previousSignal, IndicatorComboConfig config, int? loopbackPeriod = 1)
{
var signalOnCandles = new HashSet<Signal>();
var limitedCandles = newCandles.ToList().TakeLast(600).ToList();
@@ -120,14 +120,14 @@ public static class TradingBox
data.Timeframe, config);
}
public static Signal ComputeSignals(HashSet<IStrategy> strategies, HashSet<Signal> signalOnCandles, Ticker ticker,
public static Signal ComputeSignals(HashSet<IIndicator> strategies, HashSet<Signal> signalOnCandles, Ticker ticker,
Timeframe timeframe)
{
return ComputeSignals(strategies, signalOnCandles, ticker, timeframe, _defaultConfig);
}
public static Signal ComputeSignals(HashSet<IStrategy> strategies, HashSet<Signal> signalOnCandles, Ticker ticker,
Timeframe timeframe, StrategyComboConfig config)
public static Signal ComputeSignals(HashSet<IIndicator> strategies, HashSet<Signal> signalOnCandles, Ticker ticker,
Timeframe timeframe, IndicatorComboConfig config)
{
if (strategies.Count == 1)
{
@@ -179,15 +179,15 @@ public static class TradingBox
lastSignal?.Candle,
lastSignal?.Date ?? DateTime.UtcNow,
lastSignal?.Exchange ?? config.DefaultExchange,
StrategyType.Composite,
IndicatorType.Composite,
SignalType.Signal);
}
/// <summary>
/// Validates context strategies based on confidence levels indicating market condition quality
/// </summary>
private static bool ValidateContextStrategies(HashSet<IStrategy> allStrategies, List<Signal> contextSignals,
StrategyComboConfig config)
private static bool ValidateContextStrategies(HashSet<IIndicator> allStrategies, List<Signal> contextSignals,
IndicatorComboConfig config)
{
var contextStrategiesCount = allStrategies.Count(s => s.SignalType == SignalType.Context);
@@ -210,7 +210,7 @@ public static class TradingBox
/// <summary>
/// Evaluates trend direction using majority voting with neutral handling
/// </summary>
private static TradeDirection EvaluateTrendDirection(List<Signal> trendSignals, StrategyComboConfig config)
private static TradeDirection EvaluateTrendDirection(List<Signal> trendSignals, IndicatorComboConfig config)
{
if (!trendSignals.Any())
{
@@ -241,7 +241,7 @@ public static class TradingBox
/// <summary>
/// Evaluates signal direction using weighted majority voting
/// </summary>
private static TradeDirection EvaluateSignalDirection(List<Signal> signalStrategies, StrategyComboConfig config)
private static TradeDirection EvaluateSignalDirection(List<Signal> signalStrategies, IndicatorComboConfig config)
{
if (!signalStrategies.Any())
{
@@ -270,7 +270,7 @@ public static class TradingBox
TradeDirection trendDirection,
List<Signal> signalStrategies,
List<Signal> trendStrategies,
StrategyComboConfig config)
IndicatorComboConfig config)
{
// Priority 1: If we have signal strategies, they take precedence
if (signalDirection != TradeDirection.None)