Files
QuanTAlib/lib/dynamics/ttm_trend/TtmTrend.md
T
2026-02-10 21:33:16 -08:00

114 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TTM_TREND: TTM Trend Indicator
> John Carter's TTM Trend - A fast EMA-based trend indicator with color-coded direction.
## Historical Context
John Carter developed the TTM (Trade the Markets) Trend indicator as a clean visual tool for identifying short-term trend direction. Popularized through his book *Mastering the Trade* and the thinkorswim platform, it provides a simple but effective way to see trend changes at a glance using color-coded lines.
## Algorithm
### Core Calculation
```
alpha = 2 / (period + 1)
EMA = alpha × source + (1 - alpha) × prevEMA
```
Or equivalently:
```
EMA = alpha × (source - EMA) + EMA
```
### Trend Detection
```
trend = sign(EMA - prevEMA)
+1 = bullish (EMA rising)
-1 = bearish (EMA falling)
0 = neutral (EMA unchanged)
```
### Strength Measurement
```
strength = |EMA - prevEMA| / prevEMA × 100%
```
## Default Parameters
| Parameter | Value | Description |
|:----------|:------|:------------|
| Period | 6 | EMA lookback period (very fast) |
| Source | HLC/3 | Typical price (High + Low + Close) / 3 |
## Outputs
| Output | Type | Description |
|:-------|:-----|:------------|
| Value | double | Current EMA value |
| Trend | int | Trend direction: +1, -1, or 0 |
| Strength | double | Percent change between EMA values |
| IsHot | bool | True after warming up (2 bars) |
## Color Coding
| Color | Condition | Meaning |
|:------|:----------|:--------|
| 🟢 Green | Trend > 0 | EMA rising (bullish) |
| 🔴 Red | Trend < 0 | EMA falling (bearish) |
| ⚫ Gray | Trend = 0 | EMA unchanged (neutral) |
## Performance
| Metric | Value |
|:-------|:------|
| Time complexity | O(1) per bar |
| Space complexity | O(1) |
| Warmup period | 2 bars |
| Allocations | Zero in hot path |
## Usage Examples
### Basic Usage
```csharp
var ttm = new TtmTrend(period: 6);
// Update with typical price
var result = ttm.Update(new TValue(time, typicalPrice));
// Or update with bar (uses HLC/3 automatically)
var result = ttm.Update(bar);
// Access trend direction
if (ttm.Trend > 0) { /* bullish */ }
else if (ttm.Trend < 0) { /* bearish */ }
```
### Batch Processing
```csharp
var results = TtmTrend.Batch(barSeries, period: 6);
```
### With Indicator Instance
```csharp
var (results, indicator) = TtmTrend.Calculate(barSeries, period: 6);
bool isBullish = indicator.Trend > 0;
double strength = indicator.Strength;
```
## Trading Applications
1. **Trend Following**: Trade in the direction of the EMA color
2. **Trend Confirmation**: Use with other TTM indicators (Squeeze, Wave)
3. **Entry Timing**: Enter on color change with confirmation
4. **Exit Signal**: Exit when color changes against position
## Category
**Dynamics** - Measures trend direction and momentum using fast EMA smoothing.
## See Also
- [TTM_SQUEEZE: TTM Squeeze](../ttm_squeeze/TtmSqueeze.md)
- [TTM_WAVE: TTM Wave](../../oscillators/ttm_wave/TtmWave.md)
- [TTM_LRC: TTM Linear Regression Channel](../../channels/ttm_lrc/TtmLrc.md)
- [SUPER: SuperTrend](../super/Super.md)