Skip to content
All strategies

Strategies

Red/Black Three Soldiers Stop-and-Reverse on 15m with 10% Take-Profit, 8% Stop and Ladder Profit Lock: go long on three rising small-upper-wick bull candles, short on three falling small-lower-wick bear candles (port of the FMZ 'naked K' rule, moved from Binance BTC to ETHUSDT.OKX 15-MINUTE, long/short, single leg)

Outcome: Abandoned

EthOkxRedBlackThreeSoldiersReversal15m

Outcome Summary

The Research Lead moved a forum three-soldiers/three-crows stop-and-reverse strategy, which claimed a 77% win rate on BTC, to ETHUSDT.OKX 15m bars, with numeric wick limits and a stepped profit lock. The pattern fired about as often as predicted (~185 positions a year). Even so, the full-history backtest lost 99.5% over 1,493 trades with a Sharpe of -0.87, and the average loss was larger than the average win. Backtest Review abandoned it after one iteration because the per-trade edge was negative even before fees, in both directions and in every year. Optimization, analyst and risk stages were never reached.

Hypothesis

Derived by the Research Lead from "策略:红黑三兵K线形态(裸K)策略回测详解" by 小白菜汤 (fmz) https://www.fmz.com/bbs-topic/9507: From the source: the three-soldiers/three-crows definitions, stop-and-reverse on the opposite pattern, 15m bars, 10% TP, 8% SL and the ladder-TP idea. Chosen by the Research Lead: ETHUSDT.OKX instead of BTCUSDT.BINANCE, numeric wick limits (25%/15% of range), the ladder rule (2.5% steps), 1x equity sizing. Port of the FMZ Quant forum strategy by 小白菜汤 ('策略:红黑三兵K线形态(裸K)策略回测详解', 2022-07-12,……Show moreShow less

Derived by the Research Lead from "策略:红黑三兵K线形态(裸K)策略回测详解" by 小白菜汤 (fmz) https://www.fmz.com/bbs-topic/9507: From the source: the three-soldiers/three-crows definitions, stop-and-reverse on the opposite pattern, 15m bars, 10% TP, 8% SL and the ladder-TP idea. Chosen by the Research Lead: ETHUSDT.OKX instead of BTCUSDT.BINANCE, numeric wick limits (25%/15% of range), the ladder rule (2.5% steps), 1x equity sizing. Port of the FMZ Quant forum strategy by 小白菜汤 ('策略:红黑三兵K线形态(裸K)策略回测详解', 2022-07-12, https://www.fmz.com/bbs-topic/9507, sections 1, 2 and 4). The source's rule is: a 'red three soldiers' pattern (three consecutive bullish candles, each close above the previous close, each close at or near its high, the third without a long upper wick) closes any short and opens a long; a 'black three crows' pattern (the mirror image with lower wicks) closes any long and opens a short; plus a ladder take-profit, a 10% take-profit and an 8% stop-loss. The author tested it on Binance BTC-USDT 15m bars from 2020-01 to 2022-06 and reports a 77% win rate and 12x return. Those figures are unverified; our backtest with real fees decides. The two attached figures from the post show the pattern on BTC intraday charts (green = up candles on the FMZ chart, prices ~19,400-23,900, July 2022): fig 1 circles three or four rising green candles with tiny upper wicks ending in a large breakout bar after a flat consolidation; fig 2 marks three rising green candles after a pullback low at 22,571, annotated 'three consecutive bull candles, each close above the prior close, the third without a long upper wick', followed by continuation higher. The author notes the pattern works best after a long consolidation. Section 5 (a 4H-trend / 30m-pullback / 5m-breakout discretionary method) gives no exact rules and is NOT part of this test. What I adapted: (1) Instrument and venue: ETHUSDT.OKX USDT perpetual swap (15-MINUTE bars, history 2019-12-25 to now, which covers the author's own 2020-2022 window plus four years out of sample) instead of BTCUSDT.BINANCE. BTC and Binance USD-M are the factory's most over-mined series (Binance is 49% of all experiments), OKX is 3.6%, and the author himself invites testing on other coins. The mechanism is not BTC-specific. (2) The source gives no number for 'close at or near the high'. I chose a baseline of upper wick <= 25% of the bar's high-low range for each of the three bars, and <= 15% for the third bar (the source asks most strongly for the third). Both are tunable. (3) The source names a 'ladder take-profit' (阶梯止盈) without rules. I implement the standard stepped profit lock: each time open profit first reaches a new multiple k of ladder_step_pct (2.5%), the protective stop moves to entry + (k-1) x ladder_step_pct in the trade's favour (so at +5% the stop is at +2.5%, at +7.5% it is at +5%). The fixed 10% take-profit and 8% stop stay as stated. (4) Sizing: the source states none. I use 100% of equity notional at 1x (signal-exit route (b) of the risk policy: a reversal/stop/target exit with a position no larger than equity). The 8% stop loses at most ~8% of equity plus gap slippage, inside the conservative profile's 15% per-trade cap. ETH at 1x is ~75-80% annualized vol, inside the 120% per-position limit. Execution: decisions are taken at the close of the third 15m bar. On a 24/7 venue the 'next bar open' fill is a market order at the signal bar's close (the registry's use_equivalent). Stop, take-profit and ladder stops are intrabar protective stops matched by the platform (supported on every venue), not exchange-resting orders; the source did not ask for exchange hosting. Firing rate (counted on ETHUSDT.OKX 15m 2019-12 to 2026-10 to set the baseline, not to judge edge): at the baseline wick limits the bull pattern fires ~234 times a year and the bear ~182, giving ~180 position flips a year (~1,200 over the history). That is enough for walk-forward windows. The prior Nison three-white-soldiers tests in the corpus (BTC 1D, ADA 4H) died because their strict definition (open inside prior body, long-only, with a regime filter) fired only twice in six years. This port uses the author's looser rule, both directions and 15m bars, so it does not repeat that failure. Fee arithmetic: with ~180 flips/year, the average holding time is about 2 days (shorter when the 8%/10% exits fire). ETH's mean absolute 2-day move is ~4%. OKX round trip is ~0.10% taker. A per-trade edge of 0.25% (min_avg_trade_return_pct) needs only a ~53% directional hit rate on those moves, or a modest win/loss asymmetry from the 10%-target / ladder-lock exits. This is a thin, honest margin: it is 2.5x the round-trip cost, not a large cushion.

negative_expectancy: The tested version loses money on a reliable sample of 1,245 closed positions. Average trade return is -0.29% against the OKX fee floor of +0.15%, profit factor is 0.76, total return is -99.2% and every year from 2019 to 2025 is negative. The loss holds before fees (about -0.19% gross per trade) and in both the long and short arms. Optimization cannot lift an edge that is negative before costs, and the only tunables are the two wick limits. QA's advisory concern about a thin margin is borne out, and the result is worse than thin: it is negative. The fixed 10% take-profit, 8% stop and ladder rule do not produce a favourable payoff ratio (average loss $603 vs average win $557). This rejects the Research Lead's operationalization: ETHUSDT.OKX 15m, 25%/15% wick limits and a 2.5% ladder. It does not reject the source author's BTC claim as such, although the author's own 2020-2022 window also loses here. No conclusion is drawn about the withheld holdout.

Implementation

Stop-and-reverse port of the FMZ red/black three-soldiers naked-K rule on ETHUSDT.OKX 15m. Bull pattern = three consecutive bullish bars, each close above the previous close, each upper wick <= upper_wick_max (25%) of its range and the third <= third_wick_max (15%); bear pattern = mirror with lower wicks. Bull pattern closes any short and opens a long, bear closes any long and opens a short (the reversal entry is submitted from on_position_closed once the close fills, never as a simultaneous close+open pair). Each position gets an intrabar reduce-only 8% stop, a reduce-only 10% take-profit limit, and a ladder profit lock: when the bar high (long) / low (short) first reaches k x 2.5% favourable (k>=2), the stop is moved to entry +/- (k-1) x 2.5% (crossed-policy market if price already passed it). Size = 100% of equity x leverage(1x) / price, margin-capped by _submit_entry. Decisions at the third bar's close fill at that close (use_equivalent for next-bar-open on a 24/7 venue).

Implements the hypothesis as written: source pattern definitions with the Research Lead's numeric wick limits (each bar <= upper_wick_max, third bar <= min(third_wick_max, upper_wick_max)), stop-and-reverse, fixed 8% SL / 10% TP as intrabar platform stops (intrabar_stop supported), ladder lock in 2.5% steps anchored to the entry fill price, 1x equity sizing (risk route (b): signal/stop exits with position <= equity). Next-bar-open fill uses the registry equivalent (market order at the signal bar's close). Signal is continuous: inside (-1,1) it is the mean signed body/range of the last three bars; when a pattern holds it is +/-(1 + 3-bar % move), and should_enter/should_exit threshold at +/-1. All per-position state (entry price, direction, ladder level, stop level, pending reverse side) and the last four bars' OHLC are scalar attributes for restart persistence. _param_bounds not declared because no parameter is clamped. Tunables per the optimization plan: upper_wick_max, third_wick_max; leverage, stop_loss_pct, take_profit_pct, ladder_step_pct, position_fraction fixed.

Verification Results

Acceptable as is. A fully intrabar ladder would need tick data or a pre-placed next-level trigger. No change is required.

The ladder lock is evaluated after each bar closes, using that bar's high (long) or low (short). The new stop is then placed with crossed_policy='market'. Suppose a bar's high reaches +5% but it closes below +2.5%. The lock stop is already crossed when placed, so the position exits at that bar's close instead of at +2.5% intrabar. This uses no future data and is conservative (it is never better than the true intrabar lock), but it understates the ladder's protection on reversal bars. The 8% stop and 10% TP do rest intrabar from the entry fill.

None needed.

min_bars_required() is overridden to 10. This is deliberate, because the pattern needs only 4 bars, and it matches the contract's warmup_bars=10. Note that calculate_signal is not called on the first 9 primary bars, so the rolling 4-bar window fills only from bar 10 onward. This is harmless.

The reversal entry is submitted from on_position_closed, using _last_bar_obj and c3 as the decision bar. In the backtest the exit fills during the same event, so the reversal fills at the same close. In paper, the close fill arrives later and the reversal is sized from the decision bar's close. This is fine. Restart persistence of reverse_side is advisory only.

This runs about 180 flips a year at 100% of equity on 15m bars. The margin is thin: the hypothesis's own fee arithmetic gives an edge of only about 2.5x the ~0.10% taker round trip. The author's 77% win rate and 12x return (BTC, 2020-2022) are unverified. Exits that close at the 15m close after a ladder trigger was crossed intrabar give up some of the locked profit. On the full backtest, check average trade return net of fees and how outcomes split between pattern-reversal, stop, TP and ladder exits.

Backtest Review

Sharpe
-0.87
Total return
-99.51%
Max drawdown
99.60%
Trades
1493
Win rate
45.5%
Profit factor
0.76

The pattern fires about as often as the hypothesis predicted: 1,245 closed positions over the development period (~185 a year against the ~180 predicted), with 651 longs and 594 shorts. The stop-and-reverse code works and the sample is reliable.

Input audit is clean: no missing or duplicate bars, and funding is credited.

Average trade return is -0.29% of notional, against the OKX fee floor of +0.15%. Adding back the ~0.10% taker round trip still leaves the gross per-trade edge at about -0.19%, so the edge is negative before fees, not just consumed by them.

Profit factor is 0.76, expectancy is -$79.7 per trade, and the result is -99.2% with a 99.5% drawdown. Sharpe is -0.96, and the Sharpe confidence interval (-1.77 to -0.06) sits entirely below zero.

Both arms lose: the long win rate is 46.2% and the short win rate is 43.9%, while the average loss ($603) is larger than the average win ($557). The 10% take-profit and ladder lock do not create the win/loss asymmetry the hypothesis relied on.

Every calendar year from 2019 to 2025 is negative, including the author's own 2020-2022 window (2020 -73%, 2021 -78%, 2022 -8%). This contradicts the source's claimed 77% win rate and 12x return on that period, although on ETH rather than BTC.

Outcome Summary

A candlestick rule whose edge is negative before fees, here on both sides and in every year, cannot be saved by tuning wick limits or by fixed take-profit, stop and ladder exits. The win/loss asymmetry such exits are meant to create should be checked early, before anyone relies on it.

Backtest Review voted abandon for negative expectancy. On the development sample of 1,245 positions the average trade was -0.29%, about -0.19% gross before fees, against a +0.15% OKX fee floor. Both the long and short sides lost, and every year from 2019 to 2025 was negative, including the author's own 2020-2022 window. Optimization and later stages were never run.

A port of the FMZ 'red/black three soldiers' naked-K rule to ETHUSDT.OKX 15m: go long after three rising bull candles with small upper wicks and short after three falling bear candles with small lower wicks (stop-and-reverse), using a 10% take-profit, an 8% stop and a 2.5% ladder profit lock at 1x equity.

The full-history backtest (2019-12 to 2026-10) lost 99.5% over 1,493 closed positions. Sharpe was -0.87 (CI -1.64 to -0.05), average trade return -0.26% of notional, profit factor 0.76, win rate 45.5% and max drawdown 99.6%. The signal-research diagnostic found no information (IC -0.011, t=-0.39).

Analysis

策略:红黑三兵K线形态(裸K)策略回测详解

Backtest and paper results are hypothetical. Trading involves risk of loss.