Bli medlem idag
Indikatorer/probuilder · probacktest · proorder · proscreener

ROC

ROC i ProBuilder returnerar Rate of Change, den procentuella skillnaden mellan det aktuella priset och priset N barer tillbaka. Syntax, formel, exempel.

Syntax

probuilder
ROC[N](price)

Parametrar

NamnTypStandardBeskrivning
NheltalingenTillbakablickande avstånd i barer. Vanliga värden är 12 och 25. Korta värden följer snabba momentum-svängningar, långa värden följer den bredare cykeln.
pricepriskällacloseSerien som mäts, vanligtvis close, även open, high, low, eller en egen variabel.

Formel

kod
ROC = ((price - price[N]) * 100) / price[N]

Det aktuella värdet minus värdet N barer sedan, dividerat med det tidigare värdet, gånger 100. Ett värde på 5 betyder att priset ligger 5 procent över där det stod N barer tidigare.

Så fungerar det

ROC är en av de enklaste momentum-oscillatorerna. Varje bar besvarar den en enda fråga: med hur många procent har priset rört sig under de senaste N barer. Eftersom förändringen uttrycks i procent snarare än i punkter är värdena jämförbara mellan instrument med olika prisnivåer, vilket är den huvudsakliga praktiska skillnaden mot Momentum, dess punktbaserade motsvarighet.

Linjen oscillerar runt noll utan någon fast övre eller nedre gräns. Varaktigt positiva värden kännetecknar uppgångstrender, varaktigt negativa värden kännetecknar nedgångstrender, och själva nollkorsningen är en grundläggande signal om trendskifte. Eftersom ROC jämför exakt två punkter kan en stor bar som faller ur bakkanten av fönstret flytta indikatorn lika mycket som en stor bar som anländer i framkanten, en effekt värd att minnas när ett värde hoppar utan någon tydlig prisrörelse på den aktuella baren.

Divergensanalys är den andra standardanvändningen. När priset sätter en högre high men ROC sätter en lägre high bromsar uppgången in, och det spegelvända fallet gäller vid lows.

Exempel

Exempel 1, Mäta acceleration mellan på varandra följande förändringar (Indikator)

probuilder
// One-bar rate of change on this bar and on the previous bar
i1 = ROC[1](close)
i2 = ROC[1](close[1])
// Ratio above 1 means the latest change is larger than the previous one
majorchange = i1 / i2
RETURN majorchange

Jämför den senaste procentuella förändringen över en bar med den föregående. Kvoten mäter accelerationen i prisförändringar. Observera att i2 lika med noll, en oförändrad föregående bar, ger en division med noll, så produktionskod bör skydda nämnaren.

Exempel 2, Trendentry filtrerad på momentum (ProOrder)

probuilder
DEFPARAM CumulateOrders = false

mom   = ROC[12](close)
trend = Average[100](close)

// Long when the 12-bar momentum turns positive above the trend average
IF NOT LongOnMarket AND close > trend AND mom CROSSES OVER 0 THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

// Exit when momentum decays back through zero
IF LongOnMarket AND mom CROSSES UNDER 0 THEN
  SELL AT MARKET
ENDIF

Nollkorsningen för en ROC över 12 barer tidsätter entries och exits, medan medelvärdet över 100 barer begränsar handeln till uppgångstrendens sida.

Exempel 3, Screening efter starka rörelser över 20 barer (ProScreener)

probuilder
perf = ROC[20](close)
SCREENER[perf > 10](perf AS "ROC 20 %")

Returnerar instrument som har stigit mer än 10 procent under de senaste 20 barerna, med ROC-värdet visat som en sorterbar kolumn, en minimal rangordningsscreen för momentum.

Tolkning

AvläsningBetydelse
ROC > 0Priset ligger över sin nivå N barer tillbaka, momentum uppåt.
ROC < 0Priset ligger under sin nivå N barer tillbaka, momentum nedåt.
Extremt högt värdePotentiellt överköpt, priset uttöjt i förhållande till sin närmaste historik.
Extremt lågt värdePotentiellt översålt.
Bullish divergensPriset sätter lägre lows medan ROC sätter högre lows, momentum nedåt avtar.
Bearish divergensPriset sätter högre highs medan ROC sätter lägre highs, momentum uppåt avtar.

Vad som räknas som extremt beror på instrumentet och N, eftersom indikatorn är obegränsad. Volatila instrument når rutinmässigt ROC-nivåer som vore exceptionella på annat håll, så tröskelvärden behöver kalibreras per marknad.

Vanliga fel och fallgropar

  • Division med noll i härledda kvoter. Uttryck som ROC[1](close) / ROC[1](close[1]) misslyckas så snart den tidigare förändringen är exakt noll. Skydda nämnare med ett test mot 0 innan du dividerar.
  • Obegränsad skala. Till skillnad från RSI har ROC inget intervall från 0 till 100. Tröskelvärden för överköpt och översålt kopierade från RSI-logik, som 30 och 70, är meningslösa här.
  • Bortfallseffekt. Värdet ändras när en gammal extrembar lämnar fönstret på N barer även om det aktuella priset knappt rör sig. Plötsliga ROC-hopp speglar inte alltid nytt köpande eller säljande.
  • Whipsaw vid nollkorsning med litet N. ROC[1] eller ROC[2] byter tecken hela tiden i lugna marknader. Nollkorsningssystem behöver antingen en längre N eller ett ytterligare trendfilter.
  • RocnRoll, signalgenerator byggd på förändringstakt och exponentiella medelvärden.
  • Momentum, motsvarigheten baserad på punkter, pris minus pris N barer tillbaka.
  • RSI, begränsad momentum-oscillator med fasta trösklar.
  • Variation, procentuell förändring mellan föregående close och aktuell close.
  • VolumeROC, samma beräkning av förändringstakt tillämpad på volym.
  • MACD, momentum från spread mellan två exponentiella medelvärden.
  • CCI, avvikelsebaserad oscillator, ytterligare ett momentum-alternativ.
  • Stochastic, closes position inom den senaste tidens high-low-range.