TradingView drawing workflow

Gann fan trading: price-time scale and testable rules

Gann fan trading compares price with rays projected from an anchor at chosen price-per-time rates. On TradingView, record the anchor, price unit, bar interval and scale before interpreting a line. A 1x1 label describes a ratio under that setup; a line that looks like 45 degrees on your screen is not evidence that price will respect it.

See the decision guide

Set the price and time units explicitly

TradingView describes the Gann fan as diagonal rays that divide price and time proportionally. Its help page uses 1x1 for one price unit per time unit and 2x1 for two price units per time unit. Define what a unit means for your symbol instead of assuming one dollar, one tick and one index point are interchangeable.

  • For this hypothetical study, one time unit is one completed daily chart bar and one price unit is $2. The ascending base ray therefore gains $2 per bar.
  • Use standard candles and a linear price scale. Record symbol, exchange, session, adjustment settings and interval. A daily chart bar is not necessarily one elapsed calendar day.
  • A label convention can differ between tools. Identify the base, half-rate and double-rate rays by their measured coordinates, and save those rates with the labels.
  • This is a fan of time-dependent lines. It does not calculate Square of Nine price levels or establish that a geometric angle predicts returns.

Place and freeze the fan on TradingView

Select Gann Fan from the drawing tools and place its origin at the chosen swing. Use the Coordinates dialog to check both control points by price and bar number. Use Style to show the rays you will test. Calibrate the base ray against a second known coordinate, then check an intermediate bar rather than trusting its screen angle.

  • Example coordinates: origin at bar 100, price $100; base-ray reference at bar 110, price $120. The intended rate is (120 - 100) / (110 - 100) = $2 per bar.
  • Choose the rate from information already available when the study starts. The $120 reference is a geometric calibration point, not a claim that the future bar 110 price is known.
  • One explicit anchor rule is a low strictly below the lows of two bars before and two bars after it. The low at bar 100 is then knowable only after bar 102 closes. Reject tied lows; begin observations at bar 103.
  • Save the coordinates and activation time before observing later prices. If a later low causes you to redraw, create a new version and retain the old result.
  • TradingView provides Lock price to bar ratio in the price-scale context menu or Scales and lines settings. Save the chosen ratio with the screenshot; locking an arbitrary ratio does not validate it.

Recalculate the ray prices without measuring pixels

For the linear-coordinate model here, L(n, r) = 100 + 2 × r × (n - 100), where n is bar index and r is the slope multiplier. The base ray uses r = 1, the half-rate ray uses 0.5, and the double-rate ray uses 2. These are illustrative research assumptions, not fitted market observations.

  • For a descending fan from a high, subtract the rate: an origin of $140 at bar 100 with a $2-per-bar base gives $120 at bar 110.
  • Require distinct control-point bars. Two points on the same bar cannot define a finite price-per-bar slope.
  • Changing to hourly bars while keeping $2 per bar changes the hypothesis. Do not compare that result with the daily study as if the units were unchanged.
RayPrice gain per barBar 105Bar 110
Half rate$1$105$110
Base rate$2$110$120
Double rate$4$120$140

See why the same rate can look like different angles

For a linear chart, the apparent angle to the horizontal is arctan(price-per-bar slope × vertical pixels per price unit / horizontal pixels per bar). The table keeps the $2-per-bar base ray unchanged and changes only the display proportions. These calculated angles illustrate geometry; they are not screenshots or a test of a specific TradingView viewport.

  • All three cases still have a base-ray price of $120 at bar 110. Redrawing until each view looks like 45 degrees would change the rate you are testing.
  • On a logarithmic price scale, equal price increases occupy different vertical distances at different price levels. A straight line in log coordinates implies a constant percentage rate, not this fixed $2 increment.
  • A coordinate check is therefore required after switching scale modes, intervals or sessions. Treat a log-coordinate study as a separate specification; this arithmetic example does not assert how every native drawing behaves under that switch.
Display setupPixels per $1Pixels per barApparent angle
Equal rise and run on screen51045.00 degrees
Double vertical spacing101063.43 degrees
Double horizontal spacing52026.57 degrees

Define touch, break and expiry before watching price

This sample studies the ascending base ray as a possible support reference. Activate after bar 102 closes and inspect bars 103 through 120 inclusive. Use a fixed $0.50 tolerance and the unrounded ray value at each bar. The tolerance is an example choice, not an optimized setting.

  • A touch and a break candidate can occur on the same bar. Record both; range overlap does not imply a bounce.
  • At bar 110 the ray is $120 and the break threshold is $119.50. A close of exactly $119.50 does not qualify under the strict rule.
  • A gap can move from above to below the band without trading inside it. If the new bar high stays below $119.50 at bar 110, it is not a touch even if it qualifies as a break candidate.
  • For a descending resistance study, use closes strictly above the ray plus tolerance. Define its activation, confirmation and retirement separately.
EventExact rule
TouchThe completed bar range overlaps [L(n) - 0.50, L(n) + 0.50]: low ≤ L(n) + 0.50 and high ≥ L(n) - 0.50.
Break candidateA completed close is strictly below L(n) - 0.50. A wick alone does not qualify.
Confirmed breakTwo consecutive completed closes are below their own bar-specific thresholds. Reset the count after any nonqualifying close.
ExpiryEvaluate bar 120, then stop new observations from bar 121. A first break-candidate close at 120 cannot confirm after expiry.
RetirementThe first confirmed break retires the support hypothesis. Later prices are retained as follow-up, not used to erase the break.

Keep failed samples in the record

The following synthetic sequence shows why a touch cannot be reported as a successful trade. Each row uses the same frozen base ray. The bar-112 close also shows that a two-close break observation does not guarantee continuation.

  • The touch at bar 109 did not preserve support through bar 111. Keep that failure instead of moving the origin to improve the picture.
  • The ray rises each bar: the second threshold is $121.50, not the previous $119.50. Comparing both closes with one fixed price would produce a different result.
  • A separate expiry case has no confirmed break by bar 120 and a touch at bar 121. Under this study, that late touch is excluded regardless of what price does next.
  • These observations do not calculate profit. A tradable system still needs entry timing, sizing, stop and exit rules, commissions, spread and slippage, followed by testing on unseen data.
BarRay / lower thresholdHypothetical low, high, closeObservation
109$118 / $117.50$117.70, $119.20, $118.60Touch, no break candidate
110$120 / $119.50$118.80, $120.20, $119.40Touch and first close below threshold
111$122 / $121.50$119.10, $121.30, $121.20No touch; second qualifying close confirms break
112$124 / $123.50$121.00, $125.00, $124.80Follow-up closes above the ray; break continuation fails this immediate check

Draft a chart aid and preserve the original hypothesis

Use Pineify's Pine Script AI Coding Agent to draft a helper from the explicit origin, rate, multipliers, activation bar, tolerance and expiry rule. TradingView Pine scripts cannot read manually drawn Gann fans, so supply the coordinates or a defined anchor-selection rule. Compare generated ray prices with the worked table before creating alerts.

  • Request close-based observations with separate touch, break-candidate and confirmed-break states. Check exact-threshold closes, gaps, expiry and pivot confirmation delay; syntax validation alone cannot prove those behaviors.
  • Trading Journal has Plan Notes and Review Notes for the trade record. Put the original settings and hypothesis in Plan Notes, then record outcomes and deviations in Review Notes.
  • Keep screenshot files separately and paste their references into the notes. Include the capture time, chart scale and selected price-per-bar rate so a later screenshot can be compared with the original.
  • Do not label a retrospectively selected swing as an available live signal. Missing history, changed session settings and adjusted prices can alter the anchor evidence.
Where Pineify fits

Pine Script AI Coding Agent

Draft a fan helper from explicit price-per-bar rates and closed-bar rules, then verify its coordinates and event timing.

Also useful: Trading Journal. Keep the original hypothesis, screenshot references and failed observations in plan and review notes.

Draft a Gann fan chart aid

Frequently asked questions

Educational information, not investment advice. All prices, bars, angles and outcomes here are hypothetical calculations, not live observations or performance results. Gann fan geometry does not guarantee support, execution prices or returns.

Sources and verification

Published by Pineify. Pineify is an independent product and is not affiliated with TradingView. Sources support the technical explanations; examples do not establish trading performance.