Quand le canal de 15 barres fait plus de 60 points de large, la stratégie place un buy stop un quart au-dessus du bas du canal, à condition que l'histogramme MACD soit en hausse. L'objectif est le point médian du canal et le stop est le bas du canal. Elle prend au maximum un trade par jour et n'a pas encore été backtestée.
| positionSize Contrats de base par trade | 3 |
| channelPeriod Longueur du canal de Donchian | 15 |
| minChannelWidth Le canal doit faire au moins ce nombre de points de large | 60 |
| quadrantDivisor La ligne d'entrée se situe un quart au-dessus du bas du canal | 4 |
| targetDivisor L'objectif se situe à 1/targetDivisor du canal (2 = point médian) | 2 |
| lossMultiplier Multiplicateur de la taille d'ordre après un trade perdant | 2.5 |
| winDivisor Diviseur de la taille d'ordre après un trade gagnant | 1.5 |
| macdFast Longueur rapide du MACD | 12 |
| macdSlow Longueur lente du MACD | 26 |
| macdSignalPeriod Longueur du signal MACD | 9 |
Le code
// ============================================================ // 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 lignes de plus : les règles d'entrée et de sortie.
Configuration
Questions
Le code utilise ProOrder avec une entrée par buy stop, mais il n'est pas testé ni vérifié à la compilation. Faites-en d'abord un backtest et envisagez de retirer le dimensionnement en martingale.
Rien pour l'instant. Le filtre de largeur de 60 points est calibré pour un grand indice comme le DAX.
Il n'y a pas encore de chiffre de drawdown. Comme la taille démarre à 3 contrats et augmente après les pertes, le capital nécessaire peut croître rapidement.
Après tout trade clôturé, le système attend le jour suivant, ce qui limite la fréquence à laquelle la martingale augmente dans une même séance.
Voir aussi
La communauté ProRealAlgos obtient les règles complètes, le code complet et le portefeuille automatisé.