Files
QuanTAlib/lib/dynamics/ttm_trend/TtmTrend.md
T

114 lines
2.9 KiB
Markdown
Raw Normal View History

2026-02-10 21:33:16 -08:00
# 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)