Cuando el canal de 15 barras tiene más de 60 puntos de anchura, la estrategia coloca un buy stop un cuarto por encima de la base del canal, siempre que el histograma MACD esté subiendo. El objetivo es el punto medio del canal y el stop es la base del canal. Toma como máximo una operación al día y todavía no se le ha hecho backtest.
| positionSize Contratos base por operación | 3 |
| channelPeriod Longitud del canal Donchian | 15 |
| minChannelWidth El canal debe tener al menos esta anchura en puntos | 60 |
| quadrantDivisor La línea de entrada se sitúa un cuarto por encima de la base del canal | 4 |
| targetDivisor El objetivo se sitúa en 1/targetDivisor del canal (2 = punto medio) | 2 |
| lossMultiplier Multiplicador del tamaño de la orden después de una operación perdedora | 2.5 |
| winDivisor Divisor del tamaño de la orden después de una operación ganadora | 1.5 |
| macdFast Longitud rápida del MACD | 12 |
| macdSlow Longitud lenta del MACD | 26 |
| macdSignalPeriod Longitud de la señal del MACD | 9 |
El código
// ============================================================ // Quadrant Channel // ProRealAlgos Strategy Library | prorealalgos.com // Type: Breakout // Direction: Long only // Timeframe tested: Not yet tested // ============================================================ // --- Settings --- DEFPARAM CumulateOrders = false DEFPARAM PreloadBars = 50000 // --- Parameters --- positionSize = 3 // base contracts per trade channelPeriod = 15 // Donchian channel length minChannelWidth = 60 // channel must be at least this many points wide quadrantDivisor = 4 // entry line sits one quarter up from the channel bottom targetDivisor = 2 // target sits at 1/targetDivisor of the channel (2 = midpoint) lossMultiplier = 2.5 // order size multiplier after a losing trade winDivisor = 1.5 // order size divisor after a winning trade macdFast = 12 // MACD fast length macdSlow = 26 // MACD slow length macdSignalPeriod = 9 // MACD signal length // --- Indicators --- // Size cap as in the original: two losses in a row on top of the base size. maxOrderSize = lossMultiplier * lossMultiplier * positionSize + positionSize ONCE orderSize = positionSize ONCE bestProfit = 0 ONCE entryBlocked = 0 newDay = 0 IF Date <> Date[1] THEN newDay = 1 ENDIF // Daily reset: back to base size only when equity is at a new high. IF newDay THEN IF StrategyProfit > bestProfit THEN orderSize = positionSize bestProfit = StrategyProfit ENDIF entryBlocked = 0 ENDIF
42 líneas más: las reglas de entrada y salida.
Configuración
Preguntas
El código usa ProOrder con una entrada por buy stop, pero no está probado ni verificado en compilación. Hazle un backtest primero y considera eliminar el dimensionamiento martingala.
Nada todavía. El filtro de anchura de 60 puntos está dimensionado para un índice grande como el DAX.
Todavía no hay cifra de drawdown. Como el tamaño empieza en 3 contratos y aumenta después de las pérdidas, el capital necesario puede crecer rápidamente.
Después de cualquier operación cerrada el sistema espera al día siguiente, lo que limita la frecuencia con la que la martingala sube de escalón en una misma sesión.
Relacionado
La comunidad de ProRealAlgos obtiene las reglas completas, el código completo y la cartera automatizada.