Confluence Checklist: 7 Factors Traders Combine Before Entry
What a confluence in trading is, and a seven-factor pre-entry checklist you can apply by hand or code into a chart table, with a worked example.
Confluence Checklist: 7 Factors Traders Combine Before Entry
TLDR
A confluence in trading is a point on the chart where several independent reasons to take a trade line up at the same price and time. A confluence checklist turns that idea into a fixed list of yes-or-no questions you answer before every entry, so that "it looked good" becomes "it met five of seven conditions". This article gives you a seven-factor checklist (higher-timeframe trend, structure level, momentum reset, volatility state, participation, session timing, and reward-to-risk feasibility), explains how to check each one objectively, shows a worked example, and includes a Pine Script v6 utility that displays the checklist on the chart.
What a confluence in trading is, and what it is not
The word comes from geography: a confluence is where rivers meet. In trading it means that evidence from different, independent sources points to the same decision. A moving average, a prior swing low, and a session open all sitting at one price is a confluence. Three oscillators that are all built from the same closing prices and all read "oversold" is not, because they are three views of one fact.
That independence test is the whole discipline. Our pillar article on confluence in trading goes deep on why it matters, how to weight and score factors, and how to code a scoring indicator. This article is the practical companion: a checklist you can print, pin next to your screen, and run in under a minute before you click.
A checklist is not a strategy. It does not tell you where to enter or how to exit. It is a gate between your idea and your order, designed to stop the trades you would regret in review. Most traders who adopt one find that it removes more bad trades than it finds good ones, which is the point.
The seven factors
1. Higher-timeframe trend
Question: Is the trade in the direction of the trend on the timeframe one or two steps above the one I am trading?
Objective check: pick a single definition and keep it. Common choices: the last completed higher-timeframe bar closed above (for longs) or below (for shorts) a 50-period moving average on that timeframe; or the higher timeframe is making higher highs and higher lows over the last N swings. Use the last completed bar, never the forming one, or the answer will change before the bar closes.
Common mistake: checking the higher timeframe only after finding a setup you already like, and then reading it generously.
2. Structure level
Question: Is price at a level that mattered before, rather than in the middle of nowhere?
Objective check: the entry is within a defined distance (for example half of one ATR) of a prior swing high or low, a prior day's high, low or close, a session open, or a level you marked before the session began. The key word is before: levels drawn after price has reacted are hindsight.
Common mistake: counting a moving average as a structure level and also counting the trend defined by that moving average. That is one fact scored twice.
3. Momentum reset
Question: Has momentum pulled back from an extreme, so that I am not buying the top of a thrust?
Objective check: an oscillator such as a 14-period RSI is in a middle band (for example between 40 and 60) after having been higher (for a long) within the last N bars. Or the pullback has retraced a defined fraction of the prior leg.
Common mistake: treating "oversold" as a buy reason in a downtrend. In a strong trend, oscillators stay pinned. The reset factor is only meaningful after factor 1 has been answered.
4. Volatility state
Question: Is the market moving enough for my target to be reachable, but not so much that my stop is noise?
Objective check: current ATR relative to its own average, such as ATR(14) between 0.8 and 1.5 times its 50-bar mean. Below the band, targets based on recent ranges will not be reached; above it, stops sized on normal conditions will be hit by routine fluctuations.
Common mistake: ignoring this factor entirely, then wondering why the same setup works in one month and fails the next.
5. Participation
Question: Is there evidence that other participants are active at this level, rather than me alone?
Objective check: volume on the signal bar above its 20-bar average, or a visible increase in volume as price reached the level. On instruments without reliable volume (some forex feeds), substitute range expansion on the signal bar.
Common mistake: using volume from a single broker's feed on a decentralized market and treating it as the market's volume.
6. Session timing
Question: Am I trading during the hours in which this setup has historically been worth taking?
Objective check: the current bar falls inside a session window you defined in advance, such as the first two hours of the cash session for index futures, or the London and New York overlap for major forex pairs. The window should come from your own testing, not from a rule of thumb.
Common mistake: taking a setup that was validated in the active session during the quiet hours because "it looks the same".
7. Reward-to-risk feasibility
Question: With the stop where the structure says it must go, is there a realistic target at least R times further away?
Objective check: write down the entry, the stop (beyond the structure level plus a buffer) and the first logical target (the next structure level). Compute (target - entry) / (entry - stop). If it is below your minimum, typically 1.5 or 2.0, the trade fails the checklist regardless of how good the other six look.
Common mistake: moving the stop closer to make the ratio work. The stop belongs where the idea is wrong, not where the arithmetic is convenient.
The seven factors compared
| Factor | What it measures | Objective check (example) | Independent of | Fails most often when |
|---|---|---|---|---|
| 1. Higher-timeframe trend | Direction of the larger flow | Last completed HTF bar vs HTF 50 EMA | Everything on the trading timeframe | Trader reads HTF after choosing a side |
| 2. Structure level | Location relative to past decisions | Within 0.5 ATR of a pre-marked level | Indicators; depends only on past highs and lows | Level drawn after the reaction |
| 3. Momentum reset | Position inside the current leg | RSI(14) in the 40 to 60 band after an extreme | Location and trend, if used after factor 1 | "Oversold" used against the trend |
| 4. Volatility state | Whether stops and targets are sized to current conditions | ATR(14) between 0.8x and 1.5x its 50-bar mean | Direction entirely | Not checked at all |
| 5. Participation | Whether others are active here | Volume above its 20-bar average | Price-derived factors | Unreliable volume feed |
| 6. Session timing | Whether this is the tested window | Bar inside a predefined session | All chart factors | Setup taken in quiet hours |
| 7. Reward-to-risk feasibility | Whether the trade can pay | (Target - entry) / (entry - stop) at or above the minimum | Signal quality; it is about geometry | Stop moved to make the ratio fit |
Notice the "independent of" column. Factors 1 and 3 share price as a source, which is why 3 should only be read in the context of 1. Factors 4, 6 and 7 are independent of direction altogether, which makes them the most valuable filters: they remove trades without caring which way you wanted to go.
How to score it
The simplest rule is a count. Each factor is worth one point; you set a minimum, usually five of seven, and factor 7 is a hard requirement rather than a point. A setup scoring six with a reward-to-risk of 1.2 is a pass on six factors and a fail on the checklist.
Resist weighting at the start. The pillar article explains how to test which factors earn a higher weight by removing each one in turn from a backtest and measuring the damage. Until you have done that, equal weights are honest and unequal weights are guesses.
Also resist adding factors. Seven is already more than most traders can check consistently under time pressure; the checklist in the Pine utility below exists partly because people stop running a long checklist by hand after a week.
Worked example: one setup through the checklist
Consider a hypothetical long on a 15-minute chart of an index future during the first hour of the cash session. Numbers are illustrative and chosen to make the arithmetic clear.
- Factor 1: the last completed 4-hour bar closed above its 50 EMA. Yes.
- Factor 2: price has pulled back to 5,002, and yesterday's high, marked before the open, is 5,000. ATR(14) on the 15-minute chart is 6 points, so half an ATR is 3 points; 5,002 is within 3 points of 5,000. Yes.
- Factor 3: RSI(14) has fallen from 71 to 52 during the pullback. Yes.
- Factor 4: ATR(14) is 6 points and its 50-bar mean is 5 points, so the ratio is 1.2, inside the 0.8 to 1.5 band. Yes.
- Factor 5: volume on the current bar is below its 20-bar average. No.
- Factor 6: the bar is inside the first two hours of the cash session. Yes.
- Factor 7: entry 5,003 on a break of the pullback bar's high; stop 4,996, which is below yesterday's high with a 4-point buffer; first target is the overnight high at 5,018. Risk = 5,003 - 4,996 = 7 points. Reward = 5,018 - 5,003 = 15 points. Ratio = 15 / 7 = 2.14. Yes, against a minimum of 2.0.
Score: six of seven, with the hard requirement met. The trade passes the gate. Whether it wins is unknown; the checklist's job was to confirm that this is the kind of trade you decided in advance to take. If factor 7 had come out at 1.6 because the overnight high was at 5,014, the correct action would have been to pass, not to move the stop to 4,998 to manufacture a 2.0.
Position size then follows from the risk: on a 50,000 account risking 0.5 percent, the risk budget is 250. With a 7-point stop and a micro contract worth 5 per point, risk per contract is 35, so 250 / 35 = 7.14, rounded down to 7 contracts. Our free position size calculator on the tools page does this arithmetic for any instrument.
Pine Script v6: a checklist table on the chart
The script below evaluates factors 1 through 6 automatically on the current bar and takes your planned entry, stop and target as inputs for factor 7. It then shows a two-column table with yes or no per factor and the count. It is a review aid, not a signal generator: it plots nothing that could be mistaken for a buy arrow, and all higher-timeframe values use the last completed bar so the table does not change its answers retroactively.
//@version=6 indicator("Confluence checklist (7 factors)", overlay=true)htf = input.timeframe("240", "Higher timeframe") emaLen = input.int(50, "HTF EMA length", minval=2) lookback = input.int(20, "Structure lookback (bars)", minval=5) sess = input.session("0930-1130", "Session window") minRR = input.float(2.0, "Minimum reward:risk", step=0.5) entryP = input.float(0.0, "Planned entry") stopP = input.float(0.0, "Planned stop") targetP = input.float(0.0, "Planned target")
// 1 HTF trend: last completed HTF bar vs its EMA (no lookahead) htfClose = request.security(syminfo.tickerid, htf, close[1]) htfEma = request.security(syminfo.tickerid, htf, ta.ema(close, emaLen)[1]) longBias = htfClose > htfEma f1 = longBias // 2 Structure: near the prior swing extreme in the bias direction atr = ta.atr(14) f2 = longBias ? low <= ta.lowest(low, lookback)[1] + 0.5 * atr : high >= ta.highest(high, lookback)[1] - 0.5 * atr // 3 Momentum reset r = ta.rsi(close, 14) f3 = r > 40 and r < 60 // 4 Volatility state atrRatio = atr / ta.sma(atr, 50) f4 = atrRatio >= 0.8 and atrRatio <= 1.5 // 5 Participation f5 = volume > ta.sma(volume, 20) // 6 Session timing f6 = not na(time(timeframe.period, sess)) // 7 Reward-to-risk from planned levels risk = math.abs(entryP - stopP) rr = risk > 0 ? math.abs(targetP - entryP) / risk : 0.0 f7 = rr >= minRR
score = (f1 ? 1 : 0) + (f2 ? 1 : 0) + (f3 ? 1 : 0) + (f4 ? 1 : 0) + (f5 ? 1 : 0) + (f6 ? 1 : 0) + (f7 ? 1 : 0)
var table tbl = table.new(position.top_right, 2, 8, border_width=1) row(int i, string name, bool ok) => table.cell(tbl, 0, i, name, text_color=color.white, bgcolor=color.new(color.gray, 20)) table.cell(tbl, 1, i, ok ? "yes" : "no", text_color=color.white, bgcolor=ok ? color.new(color.green, 20) : color.new(color.red, 20))
if barstate.islast row(0, longBias ? "1 HTF trend (long bias)" : "1 HTF trend (short bias)", f1 or not longBias) row(1, "2 Structure level", f2) row(2, "3 Momentum reset", f3) row(3, "4 Volatility state", f4) row(4, "5 Participation", f5) row(5, "6 Session timing", f6) row(6, "7 R:R " + str.tostring(rr, "#.##"), f7) table.cell(tbl, 0, 7, "Score", text_color=color.white, bgcolor=color.new(color.blue, 20)) table.cell(tbl, 1, 7, str.tostring(score) + " / 7", text_color=color.white, bgcolor=color.new(color.blue, 20))
Three implementation notes. The request.security calls read close[1] and the EMA offset by one bar on the higher timeframe, so the trend answer is based on a bar that has already closed; this is the same confirmed-bar discipline described in our non-repainting indicators guide. The first row is always displayed as passing because it defines the bias direction that factors 2 and 7 are read against; if you want a long-only checklist, replace longBias with a fixed true and the row becomes a real test. And factor 7 depends entirely on what you type in; the table cannot invent a stop for you, which is deliberate.
Using the checklist in review, not just before entry
The second use of a checklist is after the session. For every trade taken, record the score and which factors failed. After a month you will have a table that answers questions intuition cannot: do your losers cluster on trades that failed factor 6? Do trades that passed all seven actually do better than those that passed five? If not, one of your factors is not measuring what you think, and the pillar article's removal test is the next step.
This review habit is also where a checklist becomes a strategy. Once the factors are stable and the score threshold is justified by your own data, the whole thing can be coded as a strategy script and backtested with costs, which is where a discretionary checklist stops being a belief and becomes a tested rule set.
FAQ
What is a confluence in trading, in plain words?
Several independent reasons agreeing on the same trade at the same place and time. The emphasis is on independent: three indicators built from the same price series are one reason, not three.
How many confluence factors should I require?
Start with a count of five from the seven above, with the reward-to-risk factor as a hard requirement. Adjust only after reviewing a month or more of your own scored trades.
Is a confluence checklist the same as a confluence indicator?
A checklist is a procedure you run; an indicator automates part of it. The table script above is a checklist displayed on the chart. A full confluence indicator, like the one in the pillar article, also scores and can feed a strategy.
Can I use this checklist on forex, crypto and stocks?
The structure is the same. The objective checks need adjusting: forex volume is broker-specific, crypto trades continuously so the session factor needs a definition that fits your market, and stocks have an opening auction that makes the first minutes behave differently.
Why does my checklist pass on trades that still lose?
Because a checklist filters for the kind of trade you decided to take; it does not predict the outcome of any one trade. If passing trades lose more often than failing ones over a meaningful sample, a factor is wrong. If they lose sometimes, that is trading.
Where Viprasol fits
Viprasol builds confluence tools as custom indicators for TradingView and MetaTrader: your factors, your definitions, your session windows, with confirmed-bar logic and an optional strategy version for backtesting. If you want the checklist above turned into a scored indicator with alerts, or a scoring model tested against your own trade history, our MT5 indicator development and Pine Script development services are the starting point. Pricing is on the pricing page and you can describe your factors through the contact form.
Risk disclaimer: trading involves substantial risk of loss. This article is educational and is not investment advice; a checklist improves consistency but does not guarantee any outcome.
External Resources
About the Author
Viprasol Tech Team
Custom Software Development Specialists
The Viprasol Tech team specialises in algorithmic trading software, AI agent systems, and SaaS development. With 1000+ projects delivered across MT4/MT5 EAs, fintech platforms, and production AI systems, the team brings deep technical experience to every engagement.
Ready to Automate Your Trading?
Discuss a custom Expert Advisor with defined strategy rules, risk controls and a testing plan.
Free consultation • No commitment • Response within 24 hours
Need a custom EA or trading bot built?
We build MT4/MT5 Expert Advisors around your strategy, broker and risk requirements. Each project has an agreed scope, testing plan and individual quote.