# Strategy Combination System

## Overview

The improved `TradingBox` strategy combination system provides sophisticated logic for combining multiple trading strategies with different purposes and behaviors. The system is designed around three distinct strategy types, each serving a specific role in the trading decision process.

## Strategy Types

### 1. Signal Strategies (`SignalType.Signal`)
- **Purpose**: Generate rare, precise entry signals when specific conditions are met
- **Behavior**: Sparse signal generation - only fire when opportunity is detected
- **Examples**: RSI Divergence, MACD Cross, Chandelier Exit
- **Weight**: High priority in final decision

### 2. Trend Strategies (`SignalType.Trend`) 
- **Purpose**: Identify overall market direction on every candlestick
- **Behavior**: Continuous output (Long/Short/Neutral for each candle)
- **Examples**: EMA Trend, SuperTrend, Moving Average Cross
- **Weight**: Supporting role, validates signal direction

### 3. Context Strategies (`SignalType.Context`)
- **Purpose**: Provide market context to prevent trades in unfavorable conditions
- **Behavior**: Act as filters/guards (allow/block trades)
- **Examples**: Volatility filters, Volume filters, Time-based restrictions
- **Weight**: Veto power - can block otherwise valid signals

## Combination Logic

### Basic Flow
1. **Context Validation**: All context strategies must allow the trade (configurable)
2. **Signal Analysis**: Evaluate entry signals using majority voting
3. **Trend Analysis**: Determine overall market direction
4. **Final Decision**: Combine signal and trend with confidence scoring

### Decision Matrix

| Signal Direction | Trend Direction | Result | Confidence |
|-----------------|----------------|---------|------------|
| Long/Short | Same | Execute | High |
| Long/Short | Neutral/None | Execute | Medium |
| Long/Short | Opposite | Execute* | Low |
| None | Long/Short | Execute | Medium/Low |
| None | None | No Trade | N/A |

*_Depends on `AllowSignalTrendOverride` configuration_

## Configuration Options

The system uses `StrategyComboConfig` to customize behavior:

```csharp
var config = new StrategyComboConfig
{
    // Trend agreement thresholds
    TrendStrongAgreementThreshold = 0.66m,    // 66% for strong trend
    
    // Signal agreement thresholds  
    SignalAgreementThreshold = 0.5m,          // 50% majority for signals
    
    // Override behavior
    AllowSignalTrendOverride = true,          // Allow signals to override trends
    
    // Quality filters
    MinimumConfidence = Confidence.Low,       // Minimum confidence to trade
    MinimumContextConfidence = Confidence.Medium, // Minimum context quality required
    
    // Defaults
    DefaultExchange = TradingExchanges.Binance
};
```

### Context Strategy Behavior

Context strategies now work with **confidence levels** rather than allow/block decisions:

- **High Confidence**: Ideal market conditions (e.g., low volatility)
- **Medium Confidence**: Normal market conditions 
- **Low Confidence**: Elevated risk conditions (trade with caution)
- **No Confidence**: Poor conditions (blocks trading)

All context strategies must meet the `MinimumContextConfidence` threshold for trades to proceed.

## Usage Examples

### Basic Usage (Default Configuration)
```csharp
var signal = TradingBox.GetSignal(candles, strategies, previousSignals);
```

### Advanced Usage (Custom Configuration)
```csharp
var config = new StrategyComboConfig
{
    TrendStrongAgreementThreshold = 0.75m,   // Require 75% trend agreement
    MinimumConfidence = Confidence.Medium,   // Only trade medium+ confidence
    MinimumContextConfidence = Confidence.High, // Only trade in ideal conditions
    AllowSignalTrendOverride = false         // Don't allow trend conflicts
};

var signal = TradingBox.GetSignal(candles, strategies, previousSignals, config);
```

### Typical Strategy Combinations

#### Conservative Setup
- 1 Signal Strategy (RSI Divergence)
- 2 Trend Strategies (EMA Trend, SuperTrend)  
- 1 Context Strategy (Volatility Filter)

#### Aggressive Setup
- 2 Signal Strategies (MACD Cross, Chandelier Exit)
- 1 Trend Strategy (EMA Trend)
- No Context Strategies

#### Scalping Setup
- 3 Signal Strategies (Quick signals)
- 1 Trend Strategy (Short-term trend)
- 2 Context Strategies (Volume + Time filters)

## Key Improvements

### 1. **Flexible Requirements**
- No longer requires ALL strategies to produce signals
- Different logic for different strategy types
- Configurable thresholds and behavior

### 2. **Intelligent Voting**
- Majority voting for signals and trends
- Weighted decisions based on strategy type
- Handles neutral/conflicting signals gracefully

### 3. **Confidence Scoring**
- Dynamic confidence based on agreement levels
- Considers signal-trend alignment
- Configurable minimum confidence thresholds

### 4. **Context Awareness**
- Context strategies provide market condition quality through confidence levels
- Configurable minimum context confidence thresholds
- Simplified logic: all context strategies must meet minimum confidence
- No more complex unanimous vs. majority requirements

### 5. **Trend Reversal Support**
- Signal strategies can override trend direction
- Useful for catching trend reversals
- Configurable override behavior

## Best Practices

### Strategy Selection
1. **Use 1-2 Signal strategies** for entry precision
2. **Use 1-3 Trend strategies** for direction confirmation  
3. **Use 0-2 Context strategies** for risk management

### Configuration Tuning
1. **Start with defaults** and adjust based on backtesting
2. **Higher thresholds** = fewer but higher quality signals
3. **Lower thresholds** = more signals but potentially more noise

### Testing Recommendations
1. **Backtest different configurations** on historical data
2. **Monitor confidence distributions** in live trading
3. **Adjust thresholds** based on performance metrics

## Migration from Old System

The new system is backward compatible:
- Existing calls to `GetSignal()` work unchanged
- Old unanimous agreement logic is still available via configuration
- New overloads provide additional control when needed

## Performance Considerations

- Strategy evaluation is optimized for efficiency
- Signal caching prevents duplicate calculations
- Configurable quality filters reduce unnecessary trades
- Separate validation logic for different strategy types 