Student Wyckoff · Elliott Wave

Blog and practice

Oscillators and waves: from formula to testable condition

Teaching tables and diagrams with explicit inputs, formulas, seeds, local conditions and limits when checking Elliott wave hypotheses.

Student Wyckoff editorial team

Published: (UTC+3)

Русский · English · Deutsch · Español · Français · Italiano · 繁體中文 · 日本語 · 한국어

This lab connects indicators to a wave hypothesis through explicit calculations. Every example price, volume and parameter is invented. A positive indicator condition describes a local state; it does not establish an entire Elliott count or measure a probability of profit.

Invented inputs and calculation rules

The table contains completed bars. t is an ordinal index; O/H/L/C mean open/high/low/close and V is invented volume from one source, not an entire-market total. Dataset A has a preceding bar t=−1 with C=99, H=100, L=98. Windows include the current bar unless explicitly stated otherwise.

SMA_n is the mean of the latest n values. EMA_n uses α=2/(n+1) and RMA_n uses α=1/n; both recursions y_t=αx_t+(1−α)y_(t−1) start with the mean of the first n available values. Intermediate values are not rounded; tables display up to six decimals. “—” means insufficient history or an undefined value, not zero. Missing inputs are not replaced with zero. Short teaching periods are not recommended settings; the seeds and zero policies are declared here, without a claim of parity with every platform.

DatasettOHLCV
A099.51019910010
A1101.510310110212
A2100.51021001018
A3103.510510310415
A4102.51041021039
A5105.510710510620
A6103.510510310411
A7106.510810610718
A8104.510610410514
A9107.510910710822
A10103.510510310416

Can an early undefined indicator value be replaced by zero and counted as a negative signal?

No. A missing full window and a calculated zero are different states; freeze the warm-up policy in advance.

RSI: smoothed close changes

G and L denote smoothed positive and negative changes in C; L is a positive magnitude. Formula and worked calculation: ΔC_t=C_t−C_(t−1); G=RMA3(max(ΔC,0)); L=RMA3(max(−ΔC,0)); RSI=100G/(G+L). t7: 100×1.7736625514403292/(1.7736625514403292+0.5871056241426612)=75.130738.

The first change uses C_(−1)=99; G and L are seeded from changes t0–2. If G=L=0 RSI is undefined; L=0<G gives 100 and G=0<L gives 0.

Local research predicate: t7: RSI3>70. RSI>70 holds at t7, but it does not mean “wave five has ended.” Price reaches a higher H=109 at t9; a high RSI does not prohibit continuation.

RSI: smoothed close changesRSI: smoothed close changesPrice C99.04102.346667105.653333108.96CValue33.98307754.00472974.0263894.048032RSI30246810t
Original calculation on invented completed bars; warm-up gaps are not connected. Price and indicator use separate panels and scales.
tCG_RMA3L_RMA3RSI3
0100———
1102———
210110.33333375
31041.6666670.22222288.235294
41031.1111110.48148169.767442
51061.7407410.32098884.431138
61041.1604940.88065856.854839
71071.7736630.58710675.130738
81051.1824421.0580752.77551
91081.7882940.7053871.71322
101041.1921961.80358739.795815

Reproduce the highlighted calculation and evaluate the local predicate. Does the result establish the entire wave count?

75.130738>70. No. It is the result of the stated calculation on invented data, not proof of a wave structure or profit.

Stochastic: the close within its range

HH3 and LL3 are the highest H and lowest L across three bars; this is version 3/1/2 with no extra K smoothing. Formula and worked calculation: K=100(C−LL3)/(HH3−LL3); D=SMA2(K). t7: K=100(107−103)/(108−103)=80; D=(40+80)/2=60.

K first exists at t2 and D at t3. If HH3=LL3, K and the affected D are undefined; this model does not carry the previous value forward.

Local research predicate: t7: K≥80 ∧ K>D. K≥80 places the close near the top of this selected range. It does not prove reversal: the range and its high can move upward. Changing K smoothing also changes its comparison with D.

Stochastic: the close within its rangeStochastic: the close within its rangePrice C99.04102.346667105.653333108.96CValue9.06666735.24444461.42222287.6KD_SMA20246810t
Original calculation on invented completed bars; warm-up gaps are not connected. Price and indicator use separate panels and scales.
tCHH3LL3KD_SMA2
0100————
1102————
21011039950—
31041051008065
41031051006070
51061071028070
61041071024060
71071081038060
81051081034060
91081091048060
1010410910316.66666748.333333

Reproduce the highlighted calculation and evaluate the local predicate. Does the result establish the entire wave count?

80≥80; 80>60. No. It is the result of the stated calculation on invented data, not proof of a wave structure or profit.

Williams %R: the same position on another scale

This uses the same three-bar window and H/L/C as the unsmoothed K above. Formula and worked calculation: %R=−100(HH3−C)/(HH3−LL3). t7: −100(108−107)/(108−103)=−20; %R=K−100.

The first value is at t2; a zero range is undefined. The identity %R=K−100 requires identical windows and inputs and an unsmoothed K.

Local research predicate: t7: %R≥−20. At t7, K=80 and %R=−20 occur together. They are one mathematical observation on two scales, not two independent wave confirmations. Reaching the boundary does not determine the next price extreme.

Williams %R: the same position on another scaleWilliams %R: the same position on another scalePrice C99.04102.346667105.653333108.96CValue-90.933333-64.755556-38.577778-12.4%R30246810t
Original calculation on invented completed bars; warm-up gaps are not connected. Price and indicator use separate panels and scales.
tCHH3LL3%R3
0100———
1102———
210110399-50
3104105100-20
4103105100-40
5106107102-20
6104107102-60
7107108103-20
8105108103-60
9108109104-20
10104109103-83.333333

Reproduce the highlighted calculation and evaluate the local predicate. Does the result establish the entire wave count?

−20≥−20; K−100=80−100=−20. No. It is the result of the stated calculation on invented data, not proof of a wave structure or profit.

CCI: deviation from its own mean

TP is typical price; MD3 is the mean absolute deviation of three TP values from that same window’s mean. Formula and worked calculation: TP=(H+L+C)/3; m=SMA3(TP); MD3=Σ|TP_i−m|/3; CCI3=(TP−m)/(0.015MD3). t7: m=317/3; MD3=10/9; CCI3=(107−317/3)/(0.015×10/9)=80.

Calculation starts at t2. CCI is undefined when MD3=0. Here TP=C only because H and L were deliberately made symmetric; that substitution is invalid for arbitrary bars.

Local research predicate: t7: CCI3>100. At t7 the teaching filter CCI>100 is false even though C rose to 107. Positive CCI and a crossing above 100 are different conditions. Neither determines the number of internal waves.

CCI: deviation from its own meanCCI: deviation from its own meanPrice C99.04102.346667105.653333108.96CValue-92-21.14285749.714286120.571429CCI30246810t
Original calculation on invented completed bars; warm-up gaps are not connected. Price and indicator use separate panels and scales.
tCTPSMA3(TP)MD3CCI3
0100100———
1102102———
21011011010.6666670
3104104102.3333331.111111100
4103103102.6666671.11111120
5106106104.3333331.111111100
6104104104.3333331.111111-20
7107107105.6666671.11111180
8105105105.3333331.111111-20
9108108106.6666671.11111180
10104104105.6666671.555556-71.428571

Reproduce the highlighted calculation and evaluate the local predicate. Does the result establish the entire wave count?

80<100. No. It is the result of the stated calculation on invented data, not proof of a wave structure or profit.

ROC: relative change over three bars

This is percentage ROC relative to C_(t−3), without additional smoothing. Formula and worked calculation: ROC3%=100(C_t−C_(t−3))/C_(t−3). t7: 100(107−103)/103=3.883495%.

The first value is at t3; a zero base price is undefined. A negative base changes the sign interpretation; all prices in this example are positive.

Local research predicate: t7: ROC3%>0. ROC>0 at t7 compares 107 with 103, not with a wave high. With a positive base its sign matches Momentum3: these are dependent transforms of one change, not independent confirmations.

ROC: relative change over three barsROC: relative change over three barsPrice C99.04102.346667105.653333108.96CValue-3.734246-0.5291632.675925.881003ROC3%0246810t
Original calculation on invented completed bars; warm-up gaps are not connected. Price and indicator use separate panels and scales.
tCC_(t−3)ROC3%
0100——
1102——
2101——
31041004
41031020.980392
51061014.950495
61041040
71071033.883495
8105106-0.943396
91081043.846154
10104107-2.803738

Reproduce the highlighted calculation and evaluate the local predicate. Does the result establish the entire wave count?

100×4/103=3.883495%>0. No. It is the result of the stated calculation on invented data, not proof of a wave structure or profit.

Momentum: a difference, not a percentage

Here Momentum is the three-bar close difference in price units. Some implementations use a ratio; that is a different version. Formula and worked calculation: Momentum3=C_t−C_(t−3). t7: 107−103=4.

The first value is at t3. There is no division: a zero base price alone is not undefined, but a missing required close is.

Local research predicate: t7: Momentum3>0. The value 4 is not 4%: the percentage change is about 3.883495%. A positive difference does not identify an impulse versus part of a correction; price structure still needs checking.

Momentum: a difference, not a percentageMomentum: a difference, not a percentagePrice C99.04102.346667105.653333108.96CValue-3.96-0.6533332.6533335.96Momentum30246810t
Original calculation on invented completed bars; warm-up gaps are not connected. Price and indicator use separate panels and scales.
tCC_(t−3)Momentum3
0100——
1102——
2101——
31041004
41031021
51061015
61041040
71071034
8105106-1
91081044
10104107-3

Reproduce the highlighted calculation and evaluate the local predicate. Does the result establish the entire wave count?

107−103=4>0; ROC3%=3.883495%. No. It is the result of the stated calculation on invented data, not proof of a wave structure or profit.

RSI divergence: price, value and availability

Compare H at t5 and t7 with RSI3 at those same bars. Do not select indicator extremes from different timestamps. Formula and worked calculation: H5=107 < H7=108; RSI3_5=84.431138 > RSI3_7=75.130738; τ_avail=8.

The price-pivot rule requires one completed bar on each side, with pivot H strictly above both neighbors. Thus t5 is confirmed at t6, t7 at t8, and the pair is available only at t8. RSI3 uses the formula and seeds declared above.

Local research predicate: t8: H7>H5 ∧ RSI3_7<RSI3_5 ∧ τ_avail(p7)≤8. Price makes a higher high while RSI3 is lower: that is the declared bearish divergence. Yet later H9=109 and C9=108 move higher again. The observation promises no lasting reversal, proves no wave-five completion and permits no backdated entry at t7.

RSI divergence: price, value and availabilityRSI divergence: price, value and availabilityPrice H100.04103.346667106.653333109.96HValue33.98307754.00472974.0263894.048032RSI3Available: t80246810t
Original calculation on invented completed bars; warm-up gaps are not connected. Price and indicator use separate panels and scales. The price-pivot rule requires one completed bar on each side, with pivot H strictly above both neighbors. Thus t5 is confirmed at t6, t7 at t8, and the pair is available only at t8. RSI3 uses the formula and seeds declared above.
tCHRSI3
0100101—
1102103—
210110275
310410588.235294
410310469.767442
510610784.431138
610410556.854839
710710875.130738
810510652.77551
910810971.71322
1010410539.795815

Reproduce the highlighted calculation and evaluate the local predicate. Does the result establish the entire wave count?

108>107; 84.431138>75.130738; τ_avail=8≠7; H9=109. No. It is the result of the stated calculation on invented data, not proof of a wave structure or profit.

A testable condition and a wave strategy

For a study, freeze the source, timeframe, parameters, formula, availability time and alternative wave count first. Each section gives a local predicate with a threshold chosen for arithmetic practice. Record both positive and negative outcomes at bar close without selecting settings after seeing the result. Check a structural wave-rule violation from price separately.

RSI, averages, MACD and other price transforms share overlapping inputs. Several agreeing lines are not independent votes and do not supply probabilities that can be multiplied. A strategy test needs a separate sample and a predeclared outcome; simulated trades also need execution and cost assumptions. This lab supplies no trading performance, accuracy rate or product features.

ValueLocal research predicate
RSI: smoothed close changest7: RSI3>70
Stochastic: the close within its ranget7: K≥80 ∧ K>D
Williams %R: the same position on another scalet7: %R≥−20
CCI: deviation from its own meant7: CCI3>100
ROC: relative change over three barst7: ROC3%>0
Momentum: a difference, not a percentaget7: Momentum3>0
RSI divergence: price, value and availabilityt8: H7>H5 ∧ RSI3_7<RSI3_5 ∧ τ_avail(p7)≤8

Three price transforms agree. Does that provide three independent confirmations and establish the count?

No. Shared inputs create dependence; local filters are checked separately from price rules, and usefulness needs another sample.

Sources and limits