Before you start
You need a TradingView account with access to BINANCE:BTCUSDT.P data, one alert slot on your plan, and a way to act on alerts within a reasonable window.
You do not need an account on any particular exchange — where you execute is your decision. You do not need to leave a browser open; alerts run on TradingView's servers. And you do not need to watch the chart, since positions are typically held one to two days.
If you read one section, make it What normal looks like.
More subscriptions are cancelled from misreading a routine drawdown than from anything the strategy actually does.
Setup
- Open the right chart. BINANCE:BTCUSDT.P, 5-minute timeframe. This exact combination is what the published results were measured on.
- Add the strategy. Indicators → Invite-only scripts → Selepro Veltus.
- Check the status panel. Top-right of the chart. The instrument line reads
BTC · M5in grey when you are on the validated chart, and switches to the actual symbol with a!in amber when you are not. - Leave the defaults alone. They are the configuration that was validated.
Reading the status panel
| Row | What it tells you |
|---|---|
| Trend | Direction of the Gaussian filter — the prevailing bias the system trades with |
| KNN Signal | What the pattern classifier currently reads: bullish, bearish or neutral |
| Regime | Efficiency Ratio and its label: range, mixed or trending |
| Position | Long, short, or a dash when flat |
| PF · Win rate | Profit factor and win rate over the loaded chart range |
The Regime row is the one to internalise. In a range the system takes smaller positions and historically performs worst. In a trend it takes larger ones and performs best. Nothing is broken when losses cluster during a range — that is documented behaviour.
A note on PF and win rate. They are calculated over whatever range your chart has loaded, not the full history. Scroll to a different period and the numbers change. They are a live readout, not the published record.
Reading the chart
The trend line runs along price with a soft glow: teal when the filter reads up, pink when it reads down.
Arrows mark entries — up-arrow below the bar for long, down-arrow above for short. Smaller, paler arrows are early entries, taken on the bar where the filter flips with high classifier confidence.
Level lines appear while a position is open: initial stop, final stop and first target. They are drawn only for the live position, so an empty chart means the system is flat.
Optional layers are off by default and live in Display: classifier dots, filter flips, higher-timeframe levels, volatility shading. They add context and clutter in equal measure — try them, keep what helps.
Alerts
Signals arrive on 5-minute bar closes. Without an alert you will miss them. Create one alert, not four.
- Right-click the chart → Add alert, or
Alt+A - Condition:
Selepro Veltus, then Order fills only - Expiration: the longest your plan allows
- Notifications: enable whichever you will actually see — app push, email, or a webhook
- Create
Order fills only captures both entries and exits. Choosing Order fills and alert() function calls instead produces duplicates.
Alerts expire. TradingView alerts have an expiry date, and when it passes the alert simply stops with no warning. Put a calendar reminder a few days before yours expires — a missed signal is not recoverable.
What normal looks like
All of the following is documented behaviour measured across five years, not worst-case speculation.
Losing runs. Across 306 positions in five years, runs of one to three consecutive losers are ordinary — 32 runs of one, 13 of two, 9 of three. Four happened five times, five happened five times, six once, and seven once. Seven is the worst on record. These are counted in positions; each position exits in two tranches, and TradingView counts each tranche as a trade, so a run of five losing positions appears in a report as ten consecutive losing trades. Losses arrive in clusters rather than evenly spread, so a bad streak feels worse than the average suggests.
Flat stretches. The ten best trades of the year carry between 47% and 72% of that year’s gross profit, depending on the year. Most trades do very little, and long quiet periods are the normal state rather than a malfunction.
Drawdowns. 28.1% across the whole five-year period, with regime sizing enabled. Within any single calendar year the worst was 19.9%, in 2022 — the deeper figure comes from 2022 and 2023 compounding on each other. If a 28% drawdown would make you abandon the system, size accordingly before you start.
Losing years. Two of the last five: −13.5% in 2022 and −4.5% in 2023. The equity curve sat below its April 2022 peak for about 35 months before making a new one. The system recovered when direction returned to the market.
When to actually worry. Not during a drawdown inside the documented range. The signals that matter are structural: performance diverging sharply from the historical baseline over months, or the live log showing behaviour inconsistent with the published record.
Both are monitored monthly and published. You will not hear about it last.
Settings
Leave these alone
Gaussian period. Range-limited to 23–27 for a reason: robustness testing showed that pushing it to 30 turns the strategy from profitable to losing on the same data. It is the single most sensitive parameter in the system.
Engine parameters — K neighbours, bar skip, confirmation bars, KNN confidence. These were validated together. Changing one in isolation is not a tweak; it is a different strategy that nobody has tested.
Safe to consider
Regime-based position sizing (on by default) is the one modification that passed full walk-forward validation. It scales exposure with the Efficiency Ratio — smaller in ranges, larger in trends. Switching it off returns the system to flat exposure.
Display options change freely; they affect nothing but what you see. The HTF context toggle removes the higher-timeframe gate and produces more trades — not recommended without your own testing.
Position sizing
What the published figures assume. Regime-sized exposure: position value runs from 25% to 150% of account equity depending on the Efficiency Ratio, with 50% margin posted. 0.05% commission, 2 ticks of slippage, execution on bar close. Because sizing can exceed 100% of equity, the Properties tab is set to 2x leverage — that is the headroom the sizing needs, not a fixed multiplier applied to every trade.
How the strategy's sizing works. With regime sizing on, exposure is multiplied by a weight tied to the Efficiency Ratio — reduced when choppy, increased when directional. Average exposure works out around 0.65x of the base. Measured over the most recent 365 days on BTCUSDT.P: of 59 positions, 17 were taken at 25% of equity, 37 at 75%, and 5 at 125%. None reached the 150% ceiling.
Translating to your account. The strategy calculates position size from the equity figure in the Properties tab, not from your real balance. Running the defaults, the numbers on your chart describe a hypothetical account, not yours.
What we will not tell you: how much of your capital to risk. That depends on your finances, your obligations and your tolerance for loss — none of which we know, and none of which a strategy vendor is in a position to judge.
What we can tell you is what the system did under stated assumptions, and that a drawdown of 28.1% is part of its history. The sizing decision is yours, and it is worth taking to someone qualified if you are unsure.
Common mistakes
- Running it on the wrong chart. Another exchange's BTC, or another timeframe. The status panel warns you; do not ignore the amber.
- Expecting it on other assets. Tested unchanged on ETH across the same five years, it lost or broke even in four of them. That test was later found to be our error — it ran Bitcoin’s stop widths on an instrument that moves about a third more per bar; the correction is here. What remains true is that the published script is calibrated for Bitcoin, and the stop distances are the part that does not travel. Do not run it unchanged on another market.
- Judging it in weeks. A month tells you almost nothing. Assess it over quarters, ideally a full cycle.
- Changing the Gaussian period. See Settings.
- Increasing size after a good run. Returns cluster; so do losses. Sizing up after a strong stretch is how a documented 28% drawdown becomes an undocumented one.
- Missing the alert expiry. The most common and most avoidable failure.
Troubleshooting
| Symptom | Cause and fix |
|---|---|
| No arrows on the chart | The system trades around twice a week. Long gaps are normal — check the Position row shows a dash. |
| Amber on the instrument row | You are not on BINANCE:BTCUSDT.P at 5 minutes. |
| Numbers changed on their own | PF and win rate reflect the loaded chart range. Scrolling changes them. |
| The alert never fired | Check it has not expired, that the condition is Order fills only, and that notifications reach a channel you monitor. |
| A change made things worse | Reset: the settings dialog has a Defaults button at the bottom left. |