Source code for backtrader.indicators.contrib.tri_x_candle_indicator
#!/usr/bin/env python
"""Functional-test indicators migrated to contrib.
Generated from a single functional strategy module to preserve file-local
helper functions and constants without cross-test name collisions.
"""
from .. import (
TRIX,
Indicator,
)
__all__ = [
"TriXCandleIndicator",
]
[docs]
class TriXCandleIndicator(Indicator):
"""Indicator that transforms TRIX values into a candle-style representation."""
lines = ("o", "h", "l", "c", "color")
params = (("period", 14),)
def __init__(self):
"""Initialize TRIX line calculators and minimum data warmup."""
self.addminperiod(int(self.p.period) + 2)
self.trix_open = TRIX(self.data.open, period=int(self.p.period))
self.trix_high = TRIX(self.data.high, period=int(self.p.period))
self.trix_low = TRIX(self.data.low, period=int(self.p.period))
self.trix_close = TRIX(self.data.close, period=int(self.p.period))
[docs]
def next(self):
"""Compute per-bar TRIX O/H/L/C proxy values and color state."""
o = float(self.trix_open[0])
h = float(self.trix_high[0])
low_price = float(self.trix_low[0])
c = float(self.trix_close[0])
mx = max(o, c)
mn = min(o, c)
h = max(mx, h)
low_price = min(mn, low_price)
color = 1
if o < c:
color = 2
elif o > c:
color = 0
self.lines.o[0] = o
self.lines.h[0] = h
self.lines.l[0] = low_price
self.lines.c[0] = c
self.lines.color[0] = color