mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-08-09 22:40:57 +00:00
2.9 KiB
2.9 KiB
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
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
var results = TtmTrend.Batch(barSeries, period: 6);
With Indicator Instance
var (results, indicator) = TtmTrend.Calculate(barSeries, period: 6);
bool isBullish = indicator.Trend > 0;
double strength = indicator.Strength;
Trading Applications
- Trend Following: Trade in the direction of the EMA color
- Trend Confirmation: Use with other TTM indicators (Squeeze, Wave)
- Entry Timing: Enter on color change with confirmation
- Exit Signal: Exit when color changes against position
Category
Dynamics - Measures trend direction and momentum using fast EMA smoothing.