StormRider

Spot & FuturesOfficialv1.04

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

SettingDefaultWhat it does
REVERSE_ON_FLIPOnWhen the trend changes, open the opposite side after closing the current one.
CHOP_MODEskipWhat 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_PCT5Short take-profit, % below entry. 0 turns it off. Longs are not affected.
TRAIL_ST_SLOffMove the stop along the trend line each bar (it only tightens).
SL_MIN_MOVE_PCT0.1Smallest stop move, as % of price, before the stop order is updated.

Presets

PresetLeverage (default / range)Position size (default / range)ShortsTrailingTimeframe
Conservative1x / 1–2x3% / 1–5%OnOff4h
Balanced2x / 1–5x4% / 2–10%OnOff4h
Aggressive5x / 2–10x8% / 4–15%OnOff4h

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

SupertrendATRADX
Supported MarketsSpot & Futures

Configuration Parameters

Entry

Configure Supertrend entry conditions and filters

ParameterTypeDefaultDescription
ENABLE_SHORTSEnable ShortsBooleanEnabledAllow short entries on bearish Supertrend flips
USE_EMA_CONFIRMEMA ConfirmationBooleanDisabledRequire price above/below EMA 50 to confirm trend direction. Adds conviction but filters some signals.
USE_ADX_FILTERADX FilterBooleanDisabledRequire ADX above threshold to confirm trend strength
ADX_THRESHOLDADX ThresholdRange (10–50, step 5)25Minimum ADX value when ADX filter is enabled
USE_VOL_FILTERVolume FilterBooleanDisabledRequire current volume to exceed 20-period average by 1.5x for entry

Zone Filter

Block entries near opposing S/R zones

ParameterTypeDefaultDescription
ZONE_BLOCK_THRESHOLDZone Block LevelRange (1–10, step 1)4Zone proximity count at which entries against the zone are blocked

Risk Management

Stop loss configuration — Supertrend-based or ATR fallback

ParameterTypeDefaultDescription
USE_ST_SLSupertrend SLBooleanEnabledUse 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.5Buffer percentage beyond Supertrend value for stop loss placement. Prevents premature stops on wicks.
ATR_SL_MULTATR SL MultiplierRange (0.5–5, step 0.1)2ATR multiplier for stop loss (used when Supertrend SL is disabled)

Trailing Stop

Lock in profits with trailing stop

ParameterTypeDefaultDescription
USE_TRAILINGEnable TrailingBooleanDisabledActivate trailing stop when profit threshold is reached
TRAIL_ACTIVATIONTrail Activation (%)Range (0.1–5, step 0.1)0.5PnL % at which trailing stop activates
TRAIL_PERCENTTrail Distance (%)Range (0.1–5, step 0.1)1.5How far the trail follows behind the peak price

Market Filter & Short Rules

Choppy-market handling, short take-profit and stop-and-reverse options

ParameterTypeDefaultDescription
TRAIL_ST_SLTrail Stop With SupertrendBooleanDisabledMove 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 (%)Number0.1Minimum stop move (% of price) before the stop is updated
REVERSE_ON_FLIPReverse On FlipBooleanEnabledOn a Supertrend flip, open the opposite side after closing
CHOP_MODEChoppy Market ModeSelect: skip | off | confirm | htfskipWhat 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 (%)Number5Take 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)Number0Take 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)Number199How 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.

ParameterTypeDefaultDescription
START_JOIN_MODENew Bot EntrySelect: mom | any | offmomHow 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 SidesSelect: long | bothlonglong (default): only uptrends can be joined this way. both: downtrends too.
START_JOIN_MOM_MINNew Bot Entry: Momentum ChecksNumber3How 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)Number12A 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 WindowSelect: start_leg | until_tradestart_legstart_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

VersionDateTypeChanges
v1.032026-10-12patchStops 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.022026-02-18patchPatch update - bug fixes or tweaks
v1.012026-02-18patchPatch update - bug fixes or tweaks
v12024-01-17Initial 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.

VersionAvg netWorst pairWorst max DDPositionsPositions that lost more than their margin
1.02−2.9%−12.6% (SUI)17.9%30740
1.03+22.2%+3.5% (BTC)14.1%46437

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:

Pair1.02 net1.03 net1.03 max DDBuy and hold
BTC0.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.

WindowDates1.02 avg net1.02 worst max DD1.03 avg net1.03 worst pair1.03 worst max DD
A2024-12-15 to 2025-06-15−2.9%11.5%+3.3%−1.6% (ZEC)6.4%
B2025-06-15 to 2025-12-15+0.5%9.8%+6.7%−3.7% (SUI)14.1%
C2025-12-15 to 2026-06-15−0.6%6.7%+0.4%−3.2% (ADA)5.6%
D2026-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.

PresetLeverage / sizeAvg netWorst pairBest pairWorst max DDWorst single position (% of its margin)Positions that lost more than their margin
Conservative1x / 3%+6.3%+1.1% (BTC)+14.0% (ZEC)5.3%−23.8%0
Balanced2x / 4%+8.5%+1.4% (BTC)+18.9% (ZEC)6.8%−47.7%0
Aggressive5x / 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.

VersionTimeframeWindowAvg netWorst pairWorst max DDPositionsFees paid (six accounts)
1.021h2024-12-15 to 2026-10-01−2.4%−17.0% (HYPE)19.3%1,164$1,131
1.031h2024-12-15 to 2026-10-01−2.8%−18.3% (HYPE)20.4%2,190$2,090
1.034h2024-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.