Wanneer het kanaal van 15 bars meer dan 60 punten breed is, plaatst de strategie een buy stop een kwart boven de onderkant van het kanaal, op voorwaarde dat het MACD-histogram stijgt. Het target is het middelpunt van het kanaal en de stop is de onderkant van het kanaal. Hij neemt maximaal één trade per dag en is nog niet gebacktest.
| positionSize Basisaantal contracten per trade | 3 |
| channelPeriod Lengte Donchian-kanaal | 15 |
| minChannelWidth Het kanaal moet minstens dit aantal punten breed zijn | 60 |
| quadrantDivisor De instaplijn ligt een kwart boven de onderkant van het kanaal | 4 |
| targetDivisor Het target ligt op 1/targetDivisor van het kanaal (2 = middelpunt) | 2 |
| lossMultiplier Vermenigvuldiger voor de ordergrootte na een verliezende trade | 2.5 |
| winDivisor Deler voor de ordergrootte na een winnende trade | 1.5 |
| macdFast MACD snelle lengte | 12 |
| macdSlow MACD langzame lengte | 26 |
| macdSignalPeriod MACD signaallengte | 9 |
De 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
Nog 42 regels: de instap- en uitstapregels.
Opzet
Vragen
De code gebruikt ProOrder met een buy stop als instap, maar is ongetest en niet op compileerfouten gecontroleerd. Backtest hem eerst en overweeg de martingale position sizing te verwijderen.
Nog niets. Het breedtefilter van 60 punten is afgestemd op een grote index zoals de DAX.
Er is nog geen drawdown-cijfer. Omdat de grootte op 3 contracten begint en na verliezen stijgt, kan het benodigde kapitaal snel oplopen.
Na elke gesloten trade wacht het systeem tot de volgende dag, wat beperkt hoe vaak de martingale binnen één sessie opschaalt.
Gerelateerd
De ProRealAlgos community krijgt de volledige regels, de complete code en de geautomatiseerde portefeuille.