Student Wyckoff · Elliott Wave

Blog and practice

Channels, Ichimoku and ZigZag: windows, shifts and availability

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.

Bollinger Bands: the selected variance convention

The model uses SMA3 and two standard deviations; σ is population deviation with divisor 3. Formula and worked calculation: m=SMA3(C); σ=√(Σ(C_i−m)²/3); U=m+2σ; L=m−2σ. t7: m=105.666667; σ=1.247219; U=108.161105; L=103.172228.

The first window is t2. Divisor n−1 would give different bands. With σ=0 the bands coincide with the mean; that is neither missing data nor a guaranteed future breakout.

Local research predicate: t7: C>U. At t7 C=107 remains inside; C>U is false. Even a move beyond two σ gives no universal return probability: neither a distribution nor independence of returns has been established.

Bollinger Bands: the selected variance conventionBollinger Bands: the selected variance conventionPrice C99.04102.346667105.653333108.96CValue98.191715102.239942106.288169110.336397SMA3U=m+2σL=m−2σ0246810t
Original calculation on invented completed bars; warm-up gaps are not connected. Price and indicator use separate panels and scales.
tCSMA3σ_pop3U=m+2σL=m−2σ
0100————
1102————
21011010.816497102.63299399.367007
3104102.3333331.247219104.82777299.838895
4103102.6666671.247219105.161105100.172228
5106104.3333331.247219106.827772101.838895
6104104.3333331.247219106.827772101.838895
7107105.6666671.247219108.161105103.172228
8105105.3333331.247219107.827772102.838895
9108106.6666671.247219109.161105104.172228
10104105.6666671.699673109.066013102.26732

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

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

Keltner Channel: EMA and ATR

This is the modern EMA3(C)±1.5ATR3 version, not the original formula based on a different range. Formula and worked calculation: U=EMA3(C)+1.5ATR3; L=EMA3(C)−1.5ATR3. t7: 105.59375±1.5×3.360768175583 → U=110.634902; L=100.552598.

EMA and ATR both use the declared t2 initialization. Both must exist; a missing component is not zero. Multiplier 1.5 is a teaching choice, not a property of every channel.

Local research predicate: t7: C>U. There is no upper-band breakout at t7. Width depends on TR rather than standard deviation, so a Keltner Channel cannot be substituted for Bollinger Bands with the same period count.

Keltner Channel: EMA and ATRKeltner Channel: EMA and ATRPrice C99.04102.346667105.653333108.96CValue95.773326101.720759107.668191113.615624EMA3U=m+1.5ATRL=m−1.5ATR0246810t
Original calculation on invented completed bars; warm-up gaps are not connected. Price and indicator use separate panels and scales.
tCEMA3ATR3U=m+1.5ATRL=m−1.5ATR
0100————
1102————
21011012.333333104.597.5
3104102.52.888889106.83333398.166667
4103102.752.592593106.63888998.861111
5106104.3753.061728108.96759399.782407
6104104.18753.041152108.74922899.625772
7107105.593753.360768110.634902100.552598
8105105.2968753.240512110.157643100.436107
9108106.6484383.493675111.88895101.407925
10104105.3242193.995783111.31789399.330544

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

107<110.634902; U_KC≠U_BB. No. It is the result of the stated calculation on invented data, not proof of a wave structure or profit.

Donchian Channel: current versus prior window

The displayed bands are the highest H and lowest L of three bars; a separate breakout predicate uses only the prior three bars. Formula and worked calculation: D_U,t=max(H_(t−2),H_(t−1),H_t); D_L,t=min(L_(t−2),L_(t−1),L_t); mid=(D_U+D_L)/2; P_t=max(H_(t−3),H_(t−2),H_(t−1)). t9: D_U=109,D_L=104,mid=106.5,P=108,C=108.

The current window exists from t2; the prior window from t3. Equality is not a C>P breakout. Including current H in C>U makes strict exceedance impossible for valid OHLC.

Local research predicate: t9: C>P. At t9 the close of 108 only touches the prior high of 108; the strict filter is false. Changing > to ≥ after seeing the result would change the protocol. Neither touch nor breakout determines internal wave structure.

Donchian Channel: current versus prior windowDonchian Channel: current versus prior windowPrice C99.04102.346667105.653333108.96CValue97.8101.933333106.066667110.2U_tL_tmid_t0246810t
Original calculation on invented completed bars; warm-up gaps are not connected. Price and indicator use separate panels and scales.
tCU_tL_tmid_tU_(prior3)L_(prior3)
0100—————
1102—————
210110399101——
3104105100102.510399
4103105100102.5105100
5106107102104.5105100
6104107102104.5107102
7107108103105.5107102
8105108103105.5108103
9108109104106.5108103
10104109103106109104

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

108>108 = ⊥; 108=108. No. It is the result of the stated calculation on invented data, not proof of a wave structure or profit.

Ichimoku: calculation, plotting and availability

This is a short teaching version 2/3/4 with displacement 2, not the usual 9/26/52/26 settings. Formula and worked calculation: mid_n=(max_n(H)+min_n(L))/2; Tenkan=mid2; Kijun=mid3; A=(Tenkan+Kijun)/2; B=mid4. t10: Tenkan=Kijun=A=B=106. A10,B10 → τ_plot=12; C10=104 → τ_plot=8.

Tenkan exists from t1, Kijun and A from t2, B from t3. Right-shifting A and B is a drawing position, not future price. C10 drawn at t8 is known only at t10; it cannot be used at t8.

Local research predicate: t10: A10=B10; τ_avail(C10)=t10, τ_plot(C10)=t8. At t10 A=B, so the cloud made from those values has zero thickness. Comparing price with the cloud displayed at t10 requires values calculated at t8, not A10/B10. That is a different time index.

Ichimoku: calculation, plotting and availabilityIchimoku: calculation, plotting and availabilityPrice C99.04102.346667105.653333108.96CValue99.04102.346667105.653333108.96A(t)→t+2B(t)→t+2C(t)→t−2Available: t10; Plotted: A/B→t12, C→t8-2024681012t
Original calculation on invented completed bars; warm-up gaps are not connected. Price and indicator use separate panels and scales. Tenkan exists from t1, Kijun and A from t2, B from t3. Right-shifting A and B is a drawing position, not future price. C10 drawn at t8 is known only at t10; it cannot be used at t8.
tCTenkan2Kijun3A_tB_t
0100————
1102101———
2101101.5101101.25—
3104102.5102.5102.5102
4103103.5102.5103102.5
5106104.5104.5104.5103.5
6104105104.5104.75104.5
7107105.5105.5105.5105
8105106105.5105.75105.5
9108106.5106.5106.5106
10104106106106106

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

A10=B10=106; C10=104: τ_avail=10, τ_plot=8; A10/B10: τ_avail=10, τ_plot=12. No. It is the result of the stated calculation on invented data, not proof of a wave structure or profit.

ZigZag: candidate and delayed confirmation

This is an authored close-only 3% reversal algorithm, not the corrective A–B–C zigzag or an exact copy of a platform’s H/L-and-depth ZigZag. Formula and worked calculation: p0: C0=100; 100×1.03=103≤C3=104. p9: C9=108; 108×0.97=104.76≥C10=104; (108−104)/108×100=3.703704%.

Before the first 3% rise, retain a candidate low; then update the candidate high with new closes until a 3% fall, followed symmetrically by tracking a low. The percentage base must be positive. A candidate value exists at t0, but origin t0 is confirmed only at t3. Peak t9 is confirmed at t10; low t10 remains provisional.

Local research predicate: t10: C≤108×0.97. A historical line to peak t9 does not mean the peak was known at t9. The last leg and candidate can redraw. A study must save state at every close instead of treating the final picture as a timely signal.

ZigZag: candidate and delayed confirmationZigZag: candidate and delayed confirmationPrice C99.04102.346667105.653333108.96CValue99.04102.346667105.653333108.96ConfirmedProvisionalAvailable: p0→t3; p9→t10; p10: Provisional0246810t
Original calculation on invented completed bars; warm-up gaps are not connected. Price and indicator use separate panels and scales. Before the first 3% rise, retain a candidate low; then update the candidate high with new closes until a 3% fall, followed symmetrically by tracking a low. The percentage base must be positive. A candidate value exists at t0, but origin t0 is confirmed only at t3. Peak t9 is confirmed at t10; low t10 remains provisional.
tCCandidate CCandidate indexConfirmedProvisional
01001000——
11021000——
21011000——
31041043p0@t0—
41031043p0@t0—
51061065p0@t0—
61041065p0@t0—
71071077p0@t0—
81051077p0@t0—
91081089p0@t0—
1010410410p0@t0; p9@t9p10@t10

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

104≤104.76; τ_avail(p9)=10; τ_avail(p0)=3; p10=?. 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
Bollinger Bands: the selected variance conventiont7: C>U
Keltner Channel: EMA and ATRt7: C>U
Donchian Channel: current versus prior windowt9: C>P
Ichimoku: calculation, plotting and availabilityt10: A10=B10; τ_avail(C10)=t10, τ_plot(C10)=t8
ZigZag: candidate and delayed confirmationt10: C≤108×0.97

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