Development of a support/resistance level system for trading

Manual marking of reference zones becomes outdated faster than a trader can update it: signals lag, and decisions are made by eye. We develop automatic support and resistance level marking turnkey — from data audit to handing over procedures to your team. Recalculation takes minutes instead of hours, and a unified marking works both in the terminal and in analytics.

Blockchain Development Services

Frequently Asked Questions

Latest works

  • Development of a web application for FEEDME
    Development of a web application for FEEDME
    1359
  • Development of an online store for the company FURNORO
    Development of an online store for the company FURNORO
    1330
  • B2B Advance company logo design
    B2B Advance company logo design
    776
  • Development of a web application for Enviok
    Development of a web application for Enviok
    1077
  • AIDER company logo development
    AIDER company logo development
    1022
  • CRM development for Chasseurs
    CRM development for Chasseurs
    1113

Support and resistance levels: where markup breaks down

Manual chart markup holds only until the first sharp move. A trader plots support and resistance levels based on history, and a few minutes later volatility breaks through two zones at once, and the lines have to be redrawn from scratch.

By that time, the trading terminal already shows a different picture from the one on which the decision was made.

The second failure point is zone overlap. Across different timeframes, the same section of the chart produces three or four intersecting ranges, and the boundary between “the level holds” and “the level is broken” becomes a matter of agreement rather than calculation. Two analysts looking at the same chart get different entry points and different exit levels.

Separately, the interpretation of a false breakout breaks down. Price moves beyond the level by fractions of a percent, returns, and the terminal records a breakout that was never confirmed.

Those who close the position on the touch lose on the return; those who wait for confirmation miss the real move. The threshold separating a false breakout from a true one is nowhere specified in manual markup.

The result — decisions stop being reproducible. On the same data, markup produces different statistics, and a manual calculation does not match what the trading terminal shows in real time.

We discuss how this is resolved in a system where support and resistance levels are calculated by a rule, not by eye.

What changes after implementing automated markup

Manual support and resistance level markup survives only until the first sharp move: while an analyst redraws zones based on new candles, coordinates them, and publishes them, the market has already restructured.

Automated markup eliminates this race — zones are calculated by uniform rules, recalculated as each new candle appears, and do not depend on who is on shift today.

Markup construction time per instrument drops from tens of minutes to seconds.

Previously, a shift of several analysts covered a limited list of pairs; now the same team handles many times more instruments and intervals — from minute to daily — while the markup remains comparable, because the algorithm does not “get tired” by the end of the day.

Signal accuracy grows through formalization: a level is confirmed by the number of touches, volume, and the body of the closing candle, rather than by the mood of the person doing the markup.

Zones that fail validation are discarded, so the share of false breakouts in signals is reduced by about half, and scenarios stop contradicting each other across adjacent intervals.

Zones are recalculated both on schedule and on event; old levels are archived together with their touch history — you can see how the zone behaved earlier and why it shifted.

A whole class of failures related to manual recalculation disappears: forgotten redraws, different boundaries for different analysts, desynchronization between the report and what the trader sees.

Ready levels are exported to TradingView and internal panels as ordinary markup objects, so there is no need to change the usual trading process.

Methods for constructing reference zones: comparison of approaches

Reference zones are constructed in different ways, and the choice of approach determines not the “beauty” of the chart, but reproducibility: whether the system will produce the same zone when recalculated at bar close and whether it can explain where it came from.

Below are real alternatives that are chosen between at the start, with their limits of applicability.

We compare by four criteria: recalculation cost on each new bar, resilience to timeframe changes, response to history thinning, and the ability for an analyst to edit without rewriting the logic.

Option When it fits Limitations
Manual markup Several instruments, infrequent revision, expert interpretation needed Does not scale, depends on one analyst, diverges from calculation on restart
Rules on historical extremes Liquid instruments with clean history, quick start needed Catches local noise, zones “float” between timeframes, many false triggers
Volume clustering Detailed trade data available, concentration zones rather than thin lines matter Depends on window and grouping step, sparse data produces ragged zones
Feature-based model Non-obvious zones needed, there is data to train on and validate on Requires markup and drift control, the source of a level is hard to explain
Hybrid approach Different instrument classes in one product and explainability required Harder to maintain: priority rules are needed when sources conflict

In practice, the working option is a hybrid: rules on historical extremes provide the framework, volume clustering refines the boundaries, and manual markup remains as an explicit layer of edits with the author’s label.

The type of approach and the reconciliation rules are fixed in the specification, so that the recalculation result is verifiable rather than dependent on mood.

Implementation stages: from data audit to handover

We carry out the work in stages, and each is closed with a verifiable artifact: without this, support and resistance levels drift away from the market over time, and the cause of the divergence is not found.

The order is strict — a markup scheme built on unverified history produces beautiful levels that are not confirmed on real data.

  1. Historical data audit. History depth, gaps and duplicate candles, time zone shifts, weekends and holidays. Output — a report with a decision for each source.
  2. Markup scheme. Rules: how a level is determined, how many touches count as confirmation, what price tolerance is allowed, under what condition a level is removed. We agree in writing — this is the acceptance benchmark.
  3. System implementation. We calculate levels on history, connect the quote source, set the recalculation schedule and state storage so that levels are not redrawn retroactively.
  4. Validation on history. Run on data that did not participate in configuration and compare with independent markup: share of matching levels, false triggers, behavior during sharp moves.
  5. Load testing. Peak quote flow and recalculation of several markets simultaneously: where latency grows, what happens if the channel drops.
  6. Solution acceptance and handover. We demonstrate on agreed scenarios, provide documentation and access, and train the team. After that — support: updates, markup quality control, discrepancy analysis.

Markup schemes, recalculation procedures, and documentation

Support and resistance level markup is not a one-time result but a reproducible process.

Therefore, at acceptance the customer receives not only a working system but also a set of documents by which their team can recalculate levels, change parameters, and resolve disputed situations without our involvement.

  • Markup configuration: presets by timeframe and instrument — aggregation window, minimum level significance, number of confirming touches. Parameters are edited without changing code.
  • Markup schemes in formal and visual form: how a level is built, at what point it is considered broken, how a cluster zone is designated — with examples on historical data.
  • Recalculation procedure: what triggers it (new trading period, volatility change), how frequently it runs, how the result is checked, and how to roll back to the previous markup version.
  • Disputed situation review procedure: who makes the decision, what data is attached to it, where the outcome is recorded, and how it becomes a general rule.
  • Documentation: description of the level model, glossary of terms, markup change log with the author and reason for each edit.
  • Access rules: roles of analyst, trader, and administrator, rights to change parameters and export history, procedure for granting and revoking access.
  • A set of validation scenarios over historical periods — using them, the customer can verify that after changing parameters the markup does not diverge.

Case study: reference zone markup for a trading terminal

The client is a terminal for active traders, where reference zones were drawn manually. An analyst went through the chart, consolidated lows and highs into zones, and published the markup: one instrument took about half an hour, and coverage was limited to about ten pairs.

By the new session, some lines no longer matched the price, and the trader saw levels that the market did not confirm.

What the measurements showed before implementation

We took a two-week slice and calculated metrics on the trade flow: the share of signals that triggered against the move reached one third, and the markup’s reaction to a breakout lagged by several candles.

Users turned off the hints — the module remained in the interface but stopped influencing decisions. Manual edits did not scale: expanding the instrument list meant a proportional increase in analyst time.

What we did and what the result was

The markup was switched to calculation based on history and the quote stream from TradingView: zones are reassembled at the close of each candle, a level is confirmed by several touches with a specified tolerance, and outdated marks are removed by a decay rule.

Manual work remained only for reviewing disputed sections. Coverage grew from ten instruments to several hundred, response to price changes dropped to seconds, and the share of false signals fell by about three times — from one third to single-digit percentages.

Reviewing the results produced a side effect: the hints were returned to the interface, and disputed levels are now marked explicitly instead of looking like a confident signal.

How dynamic levels differ from static levels

A static level is a coordinate fixed once: by a historical extreme, a round number, or the boundary of consolidation. A dynamic level is recalculated on each new bar — the boundary is built from a rolling volatility window, volume profile, or session average price.

The difference is not in accuracy but in the question: the first answers where the market stopped earlier, the second — where pressure is shifting right now.

Rigidly fixed zones are appropriate on a higher timeframe and in planning: entry when the level is reached, placement of protective orders, a weekly scenario.

Their strength is stability — the level does not move, so performance statistics accumulate around it, and history is not redrawn retroactively.

Recalculated zones cover what static levels cannot: volatility expansion, a trend without clear extremes, session ranges. Recalculation occurs at bar close, not on every price change; otherwise the boundaries flicker and produce false triggers.

This is treated with hysteresis: a zone shifts only if the new boundary has moved beyond the previous one by a band width tied to volatility.

In one system, both types work as two layers: static zones form the higher-timeframe framework, dynamic zones form an adaptive corridor within it, and a signal is issued when they coincide.

The number of entries falls by multiple times; only those remain where the historical boundary is confirmed by current pressure. We take quote history and markup from TradingView and exchange feeds, while zone calculation is on our side.

Common technical concerns about markup quality

Support and resistance level markup is tested not on a calm chart but on sections where price behaves unusually. Below are five concerns that most often arise when discussing markup quality, and how each is resolved engineering-wise.

What happens to zones during sharp moves and gaps?

The impulse is smoothed, but zone boundaries are not redrawn retroactively — otherwise the stability of the zones would be illusory.

A section with abnormal volatility is marked separately, and during recalculation its weight is reduced so that one candle does not redefine the entire picture.

How does markup change when the trading interval changes?

Levels are calculated on their own scale and are not mechanically transferred from a lower interval to a higher one.

During aggregation, zone boundaries are preserved rather than blurred to an average value — otherwise the daily chart would retain one wide band instead of working marks.

Can our own developments and expert marks be taken into account?

Yes. Your rules, indicators, and manually placed zones are connected as a separate feature layer and do not break the base markup. This allows comparing the model’s behavior with your methodology on the same data.

How is it verified that the model does not look into future data?

Data is split strictly by time: training uses only the past, evaluation uses a holdout period the model has not seen. Features are formed at the moment of the bar, without borrowing values from subsequent candles.

How does model retraining work?

Retraining runs on a schedule on fresh data with monitoring for markup quality degradation. If metrics on the holdout period decline, the system returns to the previous version — the markup does not “float” after every update.

Let’s discuss the task and come back with an implementation plan

To make the conversation specific rather than general, it is useful to come with a minimum of inputs.

Below is what actually affects the estimate and implementation plan; if some data is missing, we will figure it out during the task discussion and suggest what to replace it with.

  • Instrument and market: where levels are built — a terminal, brokerage gateway, or proprietary trading platform — and for which markets (equities, futures, digital assets).
  • Data preparation: quote history of the required depth, availability of trades inside the candle, gaps, session breaks, and changes in trading hours.
  • Reference markup: 20–50 chart sections where levels are marked manually — we will verify the algorithm against them and calculate accuracy.
  • How levels are determined now: rules, indicators, visual estimation — to preserve the familiar decision-making logic.
  • Output requirements: format of zones and signals, whether notifications are needed, trigger history, and chart rendering.
  • Acceptance criteria: share of correct triggers, latency from data arrival to a ready level, behavior in trend and flat markets.
  • Infrastructure: where the calculation is deployed — your environment, cloud, or mixed setup, and access and security requirements.

After the discussion, we come back with an estimate, scheme, and staged implementation plan: data preparation, level construction, validation on history, and pilot operation.