StormRider
Overview
StormRider is a trend-following strategy built on the Supertrend indicator, recommended on 4h candles. It rides strong trends in both directions: when the trend changes it closes the open position and reverses into the new direction. It sits out choppy moves that run against the bigger trend, banks short profits early while longs ride the trend, and keeps a stop-loss on every position. Optional trailing and entry filters are off by default.
- Rides strong trends both long and short
- Stops and reverses when the trend changes
- Sits out choppy moves against the bigger trend
- Banks short profits early; longs ride the trend
- Stop-loss on every position
What's new in 1.03
Released 2026-10-12.
Rides strong trends in both directions
StormRider now follows the trend both ways. When the trend changes, the bot closes the open position and opens one in the new direction. In 1.02 a trend change only closed the position, so a bot could stay stuck on the side of its first trade. If the new side cannot be opened straight away (for example, while the exchange is still closing the old position), the bot keeps trying for as long as the trend still points that way.
Sits out choppy counter-trend moves
Short-lived turns against a strong bigger-picture trend tend to reverse quickly and were a large share of losses in testing. 1.03 recognises these. On such a turn the bot still closes the open position but stays flat instead of opening the other side, and waits for the next trend change. You can switch this off, or choose to wait for the new direction to hold (see CHOP_MODE below).
Banks short profits early, lets longs ride
In testing, large up-moves were much bigger than large down-moves, so holding shorts until the trend turned gave back much of their gains. In 1.03, shorts take profit early at a fixed target. Longs still ride until the trend changes. Set SHORT_TP_PCT to 0 to make shorts ride like longs.
Trailing stops stay optional
The ATR trailing stop (USE_TRAILING) and the new option to trail the stop along the trend line (TRAIL_ST_SL) are both off by default. In testing, short-lived wicks stopped trends out early.
Recommended timeframe: 4h
1.03 is designed and tested for 4h candles. In backtests on six Bybit perpetual pairs at 10x leverage and 10% size (in-sample, not live results), the same rules on 1h traded more than four times as often, paid about four times the fees, and lost money on average. The timeframe comparison under Methodology & evidence shows the full setup. Backtested results do not indicate future results and are not financial advice.
New settings in 1.03
| Setting | Default | What it does |
|---|---|---|
REVERSE_ON_FLIP | On | When the trend changes, open the opposite side after closing the current one. |
CHOP_MODE | skip | What to do on a choppy counter-trend turn: skip closes and stays flat until the next trend change, off trades every turn, confirm waits for the new direction to hold, htf only trades with the bigger-picture trend. |
SHORT_TP_PCT | 5 | Short take-profit, % below entry. 0 turns it off. Longs are not affected. |
TRAIL_ST_SL | Off | Move the stop along the trend line each bar (it only tightens). |
SL_MIN_MOVE_PCT | 0.1 | Smallest stop move, as % of price, before the stop order is updated. |
Presets
| Preset | Leverage (default / range) | Position size (default / range) | Shorts | Trailing | Timeframe |
|---|---|---|---|---|---|
| Conservative | 1x / 1–2x | 3% / 1–5% | On | Off | 4h |
| Balanced | 2x / 1–5x | 4% / 2–10% | On | Off | 4h |
| Aggressive | 5x / 2–10x | 8% / 4–15% | On | Off | 4h |
All three presets sit out choppy counter-trend moves and bank short profits early. Aggressive also allows entries closer to support and resistance zones. Position size is the share of your balance used for each position's value. Margin is that value divided by leverage.
Requirements
Required Indicators
| Supported Markets | Spot & Futures |
Configuration Parameters
Entry
Configure Supertrend entry conditions and filters
| Parameter | Type | Default | Description |
|---|---|---|---|
ENABLE_SHORTSEnable Shorts | Boolean | Enabled | Allow short entries on bearish Supertrend flips |
USE_EMA_CONFIRMEMA Confirmation | Boolean | Disabled | Require price above/below EMA 50 to confirm trend direction. Adds conviction but filters some signals. |
USE_ADX_FILTERADX Filter | Boolean | Disabled | Require ADX above threshold to confirm trend strength |
ADX_THRESHOLDADX Threshold | Range (10–50, step 5) | 25 | Minimum ADX value when ADX filter is enabled |
USE_VOL_FILTERVolume Filter | Boolean | Disabled | Require current volume to exceed 20-period average by 1.5x for entry |
Zone Filter
Block entries near opposing S/R zones
| Parameter | Type | Default | Description |
|---|---|---|---|
ZONE_BLOCK_THRESHOLDZone Block Level | Range (1–10, step 1) | 4 | Zone proximity count at which entries against the zone are blocked |
Risk Management
Stop loss configuration — Supertrend-based or ATR fallback
| Parameter | Type | Default | Description |
|---|---|---|---|
USE_ST_SLSupertrend SL | Boolean | Enabled | Use Supertrend value as dynamic stop loss. Natural level — acts as support in uptrends, resistance in downtrends. |
SL_BUFFER_PCTSL Buffer (%) | Range (0.1–3, step 0.1) | 0.5 | Buffer percentage beyond Supertrend value for stop loss placement. Prevents premature stops on wicks. |
ATR_SL_MULTATR SL Multiplier | Range (0.5–5, step 0.1) | 2 | ATR multiplier for stop loss (used when Supertrend SL is disabled) |
Trailing Stop
Lock in profits with trailing stop
| Parameter | Type | Default | Description |
|---|---|---|---|
USE_TRAILINGEnable Trailing | Boolean | Disabled | Activate trailing stop when profit threshold is reached |
TRAIL_ACTIVATIONTrail Activation (%) | Range (0.1–5, step 0.1) | 0.5 | PnL % at which trailing stop activates |
TRAIL_PERCENTTrail Distance (%) | Range (0.1–5, step 0.1) | 1.5 | How far the trail follows behind the peak price |
Market Filter & Short Rules
Choppy-market handling, short take-profit and stop-and-reverse options
| Parameter | Type | Default | Description |
|---|---|---|---|
TRAIL_ST_SLTrail Stop With Supertrend | Boolean | Disabled | Move the stop with the Supertrend line each bar (tighten only); off by default, intrabar wicks through the line stop out trends early |
SL_MIN_MOVE_PCTMin Stop Move (%) | Number | 0.1 | Minimum stop move (% of price) before the stop is updated |
REVERSE_ON_FLIPReverse On Flip | Boolean | Enabled | On a Supertrend flip, open the opposite side after closing |
CHOP_MODEChoppy Market Mode | Select: skip | off | confirm | htf | skip | What to do on a choppy counter-trend turn: skip (default) closes and stays flat until the next trend change, off trades every turn, confirm waits for the new direction to hold, htf only trades with the bigger-picture trend. |
SHORT_TP_PCTShort Take Profit (%) | Number | 5 | Take profit on shorts at this % below entry. Longs are unaffected. 0 = off: shorts ride until the trend changes, like longs. |
SHORT_TP_ATRShort Take Profit (volatility) | Number | 0 | Take profit on shorts at this many times recent volatility (ATR) below entry, instead of the fixed %. 0 = off: use Short Take Profit (%). |
SIDE_ST_BARSTrend Setting History (candles) | Number | 199 | How many closed candles the separate long and short trend settings are computed on (default 199). The Wide Trend preset uses 480. |
New Bot Entry
How a new bot gets into its first trade (1.04). Running bots are not affected.
| Parameter | Type | Default | Description |
|---|---|---|---|
START_JOIN_MODENew Bot Entry | Select: mom | any | off | mom | How a new bot gets into its first trade. mom (default): join the current uptrend straight away when prices are up over the last 7, 14 and 28 days. any: always join the current trend. off: wait for the next trend change, like 1.03. Only before the bot has traded, and only in the trend it was created in. |
START_JOIN_SIDESNew Bot Entry Sides | Select: long | both | long | long (default): only uptrends can be joined this way. both: downtrends too. |
START_JOIN_MOM_MINNew Bot Entry: Momentum Checks | Number | 3 | How many of the 7, 14 and 28-day price changes must point the way of the trend before a new bot joins it (1 to 3, default 3). |
START_JOIN_MAX_AGENew Bot Entry: Young Trend (candles) | Number | 12 | A new bot also joins a trend, long or short, that started at most this many candles ago (default 12 = 2 days on 4h; 0 = off). |
START_JOIN_SCOPENew Bot Entry Window | Select: start_leg | until_trade | start_leg | start_leg (default): only in the trend the bot was created in. until_trade: also in later trends until its first trade (not tested). |
Version Info
Current Version: v1.04
Latest Changes
StormRider 1.04: a new bot no longer waits for the next trend change. It joins the uptrend it starts in when prices are up over the last 7, 14 and 28 days, or any trend that began within the last 2 days; tested on 10 coins never used to design it, the median wait for a first trade fell from 6 days to 2. Running bots trade exactly as before. Adds the optional settings behind the Wide Trend preset (short take-profit scaled to volatility, longer trend history).
Changelog
| Version | Date | Type | Changes |
|---|---|---|---|
| v1.03 | 2026-10-12 | patch | Stops and reverses: a trend change closes the open position and opens the new direction, Sits out choppy moves that run against the bigger trend and waits for the next clear signal, Banks short profits early while longs keep riding the trend, Optional trailing stop (off by default), Recommended timeframe: 4h |
| v1.02 | 2026-02-18 | patch | Patch update - bug fixes or tweaks |
| v1.01 | 2026-02-18 | patch | Patch update - bug fixes or tweaks |
| v1 | 2024-01-17 | Initial release |
Methodology & evidence
Backtested, hypothetical results, not live trading. Every figure below comes from simulations on historical data. They are in-sample: the 1.03 rules and defaults were chosen while looking at this same data, so expect live results to be worse. Past or simulated performance does not indicate future results. Leveraged futures can lose more than the margin on a position. Nothing on this page is financial advice.
How the tests were run
Unless a table says otherwise, every test used the same setup:
- Exchange and market: Bybit USDT perpetual futures, using historical 4h candles.
- Pairs: BTC, ETH, HYPE, ZEC, ADA and SUI. Each pair ran separately on its own $10,000 account in cross margin. "Avg net" is the average return of those six accounts.
- Size: each position's value was 10% of the account balance at 10x leverage, so each position used about 1% of the balance as margin.
- Costs: 0.05% commission plus 0.05% slippage on every fill. Funding payments were not modelled.
- Settings: strategy defaults, with no preset applied, except where a table says otherwise. Any position still open at the end of a window was closed at the last price.
- Version tested: 1.03 rows used the exact code now live, or a pre-release build that produced identical trades on the two-year test.
"Worst max DD" is the deepest peak-to-trough fall of any single pair's account. "Positions that lost more than their margin" counts trades whose loss was larger than the margin they posted. Cross margin allows this; with isolated margin those positions would have been liquidated.
1.03 against 1.02
Experiment ST-2026-10-12-v103-ladder. Two years (2024-10-15 to 2026-10-01), 4h, 10x leverage, 10% position size.
| Version | Avg net | Worst pair | Worst max DD | Positions | Positions that lost more than their margin |
|---|---|---|---|---|---|
| 1.02 | −2.9% | −12.6% (SUI) | 17.9% | 307 | 40 |
| 1.03 | +22.2% | +3.5% (BTC) | 14.1% | 464 | 37 |
Even in 1.03, 37 positions lost more than their margin (the worst lost 2.4 times its margin, about 2.4% of that account's balance at the time). Use lower leverage, such as the presets below, if that is more risk than you want.
By pair, same two years, compared with buying and holding the coin:
| Pair | 1.02 net | 1.03 net | 1.03 max DD | Buy and hold |
|---|---|---|---|---|
| BTC | 0.0% | +3.5% | 3.8% | +26.5% |
| ETH | +3.9% | +16.3% | 3.6% | +2.1% |
| HYPE | −8.1% | +32.0% | 8.6% | +559.1% |
| ZEC | +5.0% | +50.7% | 14.1% | +3,869.3% |
| ADA | −5.6% | +14.3% | 9.3% | −32.3% |
| SUI | −12.6% | +16.2% | 6.7% | −48.3% |
At this size the strategy made far less than holding BTC, HYPE or ZEC through their rallies. It was positive on all six pairs, including the two that fell.
Four 6-month windows
Experiment ST-2026-10-12-windows. Same setup as above, 4h, 10x, 10% size. Windows C and D overlap from 2026-04-08 to 2026-06-15.
| Window | Dates | 1.02 avg net | 1.02 worst max DD | 1.03 avg net | 1.03 worst pair | 1.03 worst max DD |
|---|---|---|---|---|---|---|
| A | 2024-12-15 to 2025-06-15 | −2.9% | 11.5% | +3.3% | −1.6% (ZEC) | 6.4% |
| B | 2025-06-15 to 2025-12-15 | +0.5% | 9.8% | +6.7% | −3.7% (SUI) | 14.1% |
| C | 2025-12-15 to 2026-06-15 | −0.6% | 6.7% | +0.4% | −3.2% (ADA) | 5.6% |
| D | 2026-04-08 to 2026-10-08 | +1.7% | 5.2% | +4.9% | −0.3% (BTC) | 5.1% |
| Mean | −0.3% | +3.8% |
1.03 beat 1.02 in all four windows.
Presets
Experiment ST-2026-10-12-presets. Two years (2024-10-15 to 2026-10-01), 4h, the same six pairs, with each preset's leverage, position size and settings. All three presets made the same 464 trades; only size and leverage differ. These runs used a pre-release build that produced identical trades to 1.03 on the two-year test.
| Preset | Leverage / size | Avg net | Worst pair | Best pair | Worst max DD | Worst single position (% of its margin) | Positions that lost more than their margin |
|---|---|---|---|---|---|---|---|
| Conservative | 1x / 3% | +6.3% | +1.1% (BTC) | +14.0% (ZEC) | 5.3% | −23.8% | 0 |
| Balanced | 2x / 4% | +8.5% | +1.4% (BTC) | +18.9% (ZEC) | 6.8% | −47.7% | 0 |
| Aggressive | 5x / 8% | +17.5% | +2.8% (BTC) | +39.6% (ZEC) | 12.0% | −119.2% | 3 |
| Reference (no preset) | 10x / 10% | +22.2% | +3.5% (BTC) | +50.7% (ZEC) | 14.1% | −238.4% | 37 |
The presets' default symbol lists (BTC, ETH and others) are not the same as the six test pairs. Results on other pairs will differ.
Why 4h and not 1h
Experiment ST-2026-10-12-timeframe. Same pairs, 10x, 10% size. The 1h runs cover a shorter window, starting 2024-12-15 instead of 2024-10-15.
| Version | Timeframe | Window | Avg net | Worst pair | Worst max DD | Positions | Fees paid (six accounts) |
|---|---|---|---|---|---|---|---|
| 1.02 | 1h | 2024-12-15 to 2026-10-01 | −2.4% | −17.0% (HYPE) | 19.3% | 1,164 | $1,131 |
| 1.03 | 1h | 2024-12-15 to 2026-10-01 | −2.8% | −18.3% (HYPE) | 20.4% | 2,190 | $2,090 |
| 1.03 | 4h | 2024-10-15 to 2026-10-01 | +22.2% | +3.5% (BTC) | 14.1% | 464 | $517 |
On 1h, trend changes are much more frequent and much less reliable. 1.03 lost money on five of the six pairs there.
Results last recomputed on 2026-10-12 from the raw backtest output. Backtested and hypothetical: past or simulated performance is not indicative of future results. Not financial advice.