När 15-barskanalen är mer än 60 punkter bred lägger strategin en buy stop en fjärdedel upp från kanalens botten, förutsatt att MACD-histogrammet stiger. Målet är kanalens mittpunkt och stoppen är kanalens botten. Den tar högst en affär per dag och har inte backtestats ännu.
| positionSize Baskontrakt per affär | 3 |
| channelPeriod Donchian-kanallängd | 15 |
| minChannelWidth Kanalen måste vara minst så här många punkter bred | 60 |
| quadrantDivisor Entrylinjen ligger en fjärdedel upp från kanalens botten | 4 |
| targetDivisor Målet ligger på 1/targetDivisor av kanalen (2 = mittpunkten) | 2 |
| lossMultiplier Multiplikator för orderstorlek efter en förlustaffär | 2.5 |
| winDivisor Divisor för orderstorlek efter en vinstaffär | 1.5 |
| macdFast MACD snabb längd | 12 |
| macdSlow MACD långsam längd | 26 |
| macdSignalPeriod MACD signallängd | 9 |
Koden
// ============================================================ // 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 rader till: entry- och exitreglerna.
Uppsättning
Frågor
Koden använder ProOrder med en buy stop-entry, men den är otestad och inte kompileringskontrollerad. Backtesta den först och överväg att ta bort positionsstorleken i martingalstil.
Inget än. Breddfiltret på 60 punkter är dimensionerat för ett stort index som DAX.
Det finns ingen drawdown-siffra ännu. Eftersom storleken börjar på 3 kontrakt och ökar efter förluster kan det kapital som krävs växa snabbt.
Efter varje stängd affär väntar systemet till nästa dag, vilket begränsar hur ofta martingalen trappas upp under en enda session.
Relaterat
ProRealAlgos-communityn får de fullständiga reglerna, den kompletta koden och den automatiserade portföljen.