StratCraft
Guía de Indicadores Backtrader

Backtrader ATR Position Sizing Strategy

Indicador de volatilidad que mide el rango promedio entre los precios altos y bajos durante un período. A diferencia de los indicadores direccionales, el ATR mide la magnitud de la volatilidad del mercado sin indicar la dirección.

bt.indicators.ATRRisk Management Strategies

Indicador de volatilidad que mide el rango promedio entre los precios altos y bajos durante un período. A diferencia de los indicadores direccionales, el ATR mide la magnitud de la volatilidad del mercado sin indicar la dirección.

El ATR es esencial para el dimensionamiento de las posiciones y la gestión de riesgos. En lugar de distancias de stop-loss fijas, los stops basados en el ATR se adaptan a la volatilidad actual: stops más amplios en mercados volátiles, stops más ajustados en mercados tranquilos. Esto evita salidas prematuras durante la volatilidad normal mientras protege contra reversiones genuinas.

Más información sobre Risk Management Strategies →
Pythonbacktrader
import backtrader as bt

class ATRPositionSizing(bt.Strategy):
    params = (('atr_period', 14), ('risk_multiple', 2.0), ('risk_pct', 0.02))

    def __init__(self):
        self.atr = bt.indicators.ATR(self.data, period=self.p.atr_period)

    def next(self):
        if not self.position:
            # Entry signal (simplified)
            if self.data.close[0] > self.data.close[-1]:
                # Position size based on ATR
                stop_distance = self.p.risk_multiple * self.atr[0]
                risk_per_share = stop_distance
                position_size = (self.broker.getvalue() * self.p.risk_pct) / risk_per_share
                self.buy(size=position_size)
                self.stop_price = self.data.close[0] - stop_distance
        else:
            # ATR-based trailing stop
            if self.data.close[0] < self.stop_price:
                self.close()
ParámetroPredeterminadoDescripción
period14Período retrospectivo del ATR