Strategy vault / Mean reversion
CRYPTO TREND REVERSAL STRATEGY BASED ON PIVOT SWING HIGH AND LOW POINTS
This strategy identifies trend reversals in crypto assets based on PIVOT swing high/low points and breakout signals. It belongs to the breakout reversal strategy category. The strategy first calculates the recent…

Overview
This strategy identifies trend reversals in crypto assets based on PIVOT swing high/low points and breakout signals. It belongs to the breakout reversal strategy category. The strategy first calculates the recent highest and lowest price points as PIVOT levels, then detects if price breaks out these key levels, signaling major trend changes.
How The Strategy Works
Calculate PIVOT High/Low Points
Uses ta.pivothigh() and ta.pivotlow() to find highest high and lowest low prices over a custom bar lookback period to plot PIVOT points.
Identify Breakout Signals
If price breaks above PIVOT low point, or breaks below PIVOT high point, the strategy considers it as trend reversal signal.
Set Filter Conditions
Requires price to breakout PIVOT levels by meaningful distance, and closing price crosses 150 bar closing prices to avoid whipsaws.
Entries and Exits
Trigger buy signal on long condition, close long position on exit condition. Similarly for short setup rules.
Advantages
- PIVOT points are sensitive to major trend shifts
- Avoids whipsaws in consolidation trends with filters
- Captures reversals early with swing high/low breakouts
Risks
- Larger cycles can cause strategy to get whipsawed
- PIVOT points and filters need tuning for each asset
- Exchange fees impact results, need near-zero fee structure
Enhancement Opportunities
- Test different PIVOT lookback periods
- Add moving stop loss to control loss per trade
- Combine with other indicators for filter
Conclusion
The strategy is robust overall to capture large reversals, but needs customized parameters per asset and risk controls. With further optimization and guardrails, it can perform well across crypto markets.
Parameters
| Name | Default | What it controls |
|---|---|---|
| v_input_timeframe_1 | Timeframe | |
| v_input_int_1 | 10 | (?LENGTH LEFT / RIGHT)Pivot High |
| v_input_int_2 | 10 | / |
| v_input_1 | red | colorH |
| v_input_int_3 | 10 | Pivot Low |
| v_input_int_4 | 10 | / |
| v_input_2 | blue | colorL |
Source Pine Script
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © nkrastins95
//@version=5
strategy("Swing Hi Lo", overlay=true, margin_long=100, margin_short=100)
//-----------------------------------------------------------------------------------------------------------------------//
tf = input.timeframe(title="Timeframe", defval="")
gr="LENGTH LEFT / RIGHT"
leftLenH = input.int(title="Pivot High", defval=10, minval=1, inline="Pivot High",group=gr)
rightLenH = input.int(title="/", defval=10, minval=1, inline="Pivot High",group=gr)
colorH = input(title="", defval=color.red, inline="Pivot High",group=gr)
leftLenL = input.int(title="Pivot Low", defval=10, minval=1, inline="Pivot Low", group=gr)
rightLenL = input.int(title="/", defval=10, minval=1, inline="Pivot Low",group=gr)
colorL = input(title="", defval=color.blue, inline="Pivot Low",group=gr)
//-----------------------------------------------------------------------------------------------------------------------//
pivotHigh(ll, rl) =>
maxLen = 1000
float ph = ta.pivothigh(ll, rl)
int offset = 0
while offset < maxLen
if not na(ph[offset])
break
offset := offset + 1
ph[offset]
pivotLow(ll, rl) =>
maxLen = 1000
float pl = ta.pivotlow(ll, rl)
int offset = 0
while offset < maxLen
if not na(pl[offset])
break
offset := offset + 1
pl[offset]
//-----------------------------------------------------------------------------------------------------------------------//
ph = request.security(syminfo.tickerid, tf, pivotHigh(leftLenH, rightLenH), barmerge.gaps_off, barmerge.lookahead_on)
pl = request.security(syminfo.tickerid, tf, pivotLow(leftLenL, rightLenL), barmerge.gaps_off, barmerge.lookahead_on)
drawLabel(_offset, _pivot, _style, _color) =>
if not na(_pivot)
label.new(bar_index[_offset], _pivot, str.tostring(_pivot, format.mintick), style=_style, color=_color, textcolor=#131722)
//-----------------------------------------------------------------------------------------------------------------------//
VWAP = ta.vwap(ohlc4)
longcondition = ta.crossunder(close,pl) and close > close[150]
exitcondition = close > ph
shortcondition = ta.crossover(close,ph) and close < close[150]
covercondition = close < pl
strategy.entry("long", strategy.long, when = longcondition)
strategy.close("long", when = exitcondition)
strategy.entry("Short", strategy.short, when = shortcondition)
strategy.close("Short", when = covercondition)Published by ChaoZhang on the FMZ strategy square · last modified 2024-01-12. Collected in the Quant Trading Vault. Unvalidated research: re-test with your own data and costs before trusting it.
Build this with AgenKit
A spec is not a trading system. Paste this into your coding agent and AgenKit runs a specialist team — architecture, test-first build, risk gates, review — with paper trading on by default.
/agenkit build a production-grade trading bot with a backtest engine, risk controls and paper trading by default from strategies/CRYPTO-TREND-REVERSAL-STRATEGY-BASED-ON-PIVOT-SWING-HIGH-AND-LOW-POINTS.md- npx agenkit install engineering-kit in your project
- Paste the command into your agent and approve each phase
- Get tests, backtest, risk controls and a paper-trading switch
Understand it first
Before you run this, read the lesson behind the idea and how to backtest it honestly. Specs like this one are the survivors of an unknown number of trials; deflate their results accordingly.
Related specs
- Anchored Rolling CVDVWAP Signal StrategyPine Script · Mean reversion · 1d
- EMA VWAP Synergy CBC Reversal Trend Following Quantitative Trading StrategyPine Script · Mean reversion · 1h
- Hull Moving Average and Stochastic RSI Combination Trading StrategyPine Script · Mean reversion · 5m
- TMA LegacyPine Script · Mean reversion · 2h
- Welcome to the BEARMARKET 30 MINPine Script · Mean reversion · 30m
- Multi Dimensional Pivot Point Trading System with Dynamic Fibonacci IndicatorsPine Script · Mean reversion · 1d