Strategy vault / Mean reversion
Multi Level Support Resistance Weekly Mean Reversion Trading Strategy
This strategy is a mean reversion trading system based on weekly pivot points. It determines entry and exit points by calculating weekly support (S1-S4) and resistance (R1-R4) levels. The strategy employs a stepped…

Overview
This strategy is a mean reversion trading system based on weekly pivot points. It determines entry and exit points by calculating weekly support (S1-S4) and resistance (R1-R4) levels. The strategy employs a stepped position building approach, executing multiple buys at different support levels and taking profits at corresponding resistance levels. This method effectively utilizes market volatility characteristics and performs well in range-bound markets.
Strategy Principles
The core mechanism calculates the pivot point for the current week using the previous week's high, low, and closing prices, then determines multiple support and resistance levels based on preset point distances. Buys are executed when price touches support levels, with profit targets set at corresponding resistance levels. The specific formula is: Pivot Point = (Previous Week's High + Previous Week's Low + Previous Week's Close) / 3 The strategy allows up to 4 concurrent positions, each corresponding to different support and resistance levels. All positions are recalculated at the beginning of each week. This design ensures trading continuity while adapting to market changes.
Strategy Advantages
- Clear trading logic that is easy to understand and execute
- Stepped position building approach reduces single trade risk
- Weekly level support/resistance reduces daily noise impact
- Parameters can be flexibly adjusted for different markets
- Risk control through percentage-based position sizing
- No time-based forced exits, allowing sufficient profit potential
Strategy Risks
- Absence of stop-loss may lead to significant drawdowns in trending markets
- Multiple positions may tie up substantial capital
- False signals may occur in highly volatile markets
- Improper support level settings may result in suboptimal entry positions To mitigate risks, consider adding trend filters to only enter during uptrends and implementing dynamic ATR-based stop-losses.
Optimization Directions
- Add volume confirmation mechanism to improve entry signal reliability
- Incorporate technical indicators like RSI for overbought/oversold filtering
- Develop multiple timeframe confirmation to reduce false signals
- Optimize position management system with dynamic position sizing based on volatility
- Include correlation analysis to avoid simultaneous positions in highly correlated markets
Summary
This is a mean reversion strategy based on classical technical analysis theory, capturing trading opportunities through weekly support and resistance level breakouts and reversals. The strategy design is concise yet flexible, suitable for markets with significant volatility. Through proper parameter optimization and risk management, this strategy can maintain stable performance across different market environments. Traders are advised to thoroughly test parameter settings and make appropriate adjustments based on specific market characteristics before live trading.
Source Pine Script
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-17 00:00:00
period: 1d
basePeriod: 1d
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/
// © ViZiV
//@version=5
strategy("Weekly Pivot Strategy, Created by ViZiV", overlay=true, pyramiding=50, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=25, dynamic_requests=true)
// This is my first COMPLETED strategy, go easy on me :) - Feel free to imrprove upon this script by adding more features if you feel up to the task. Im 100% confiedent there are better coders than me :) I'm still learning.
// This is a LONG ONLY SWING STRATEGY (Patience REQUIRED) that being said, you can go short at you're own discretion. I prefer to use on NQ / US100 / USTech 100 but not limited to it. Im sure it can work in most markets. "You'll need to change settings to suit you're market".
// IMPORTANT NOTE: "default_qty_type=strategy.percent_of_equity" Can be changed to "Contacts" within the properties tab which allow you to see backtest of other markets. Reccomend 1 contract but it comes to preference.
// Inputs for support/resistance distances (Defined by Points). // IMPORTANT NOTE: Completely user Defined. Figure out best settings for what you're trading. Each market is different with different characteristics. Up to you to figure out YOU'RE market volatility for better results.
s1_offset = input.float(155, "S1 Distance", step=1)
s2_offset = input.float(310, "S2 Distance", step=1)
s3_offset = input.float(465, "S3 Distance", step=1)
s4_offset = input.float(775, "S4 Distance", step=1)
r1_offset = input.float(155, "R1 Distance", step=1)
r2_offset = input.float(310, "R2 Distance", step=1)
r3_offset = input.float(465, "R3 Distance", step=1)
r4_offset = input.float(775, "R4 Distance", step=1)
// Weekly pivot calculation
var float pivot = na
var float s1 = na
var float s2 = na
var float s3 = na
var float s4 = na
var float r1 = na
var float r2 = na
var float r3 = na
var float r4 = na
// Get weekly data (Pivot Calculation)
prevWeekHigh = request.security(syminfo.tickerid, "W", high[1], lookahead=barmerge.lookahead_on)
prevWeekLow = request.security(syminfo.tickerid, "W", low[1], lookahead=barmerge.lookahead_on)
prevWeekClose = request.security(syminfo.tickerid, "W", close[1], lookahead=barmerge.lookahead_on)
// Track active trades
var array<string> entry_ids = array.new<string>(0)
var array<float> profit_targets = array.new<float>(0)
// Update weekly levels
isNewWeek = ta.change(time("W")) != 0
if isNewWeek or na(pivot)
pivot := (prevWeekHigh + prevWeekLow + prevWeekClose) / 3
s1 := pivot - s1_offset
s2 := pivot - s2_offset
s3 := pivot - s3_offset
s4 := pivot - s4_offset
r1 := pivot + r1_offset
r2 := pivot + r2_offset
r3 := pivot + r3_offset
r4 := pivot + r4_offset
// Plot current week's levels
plot(pivot, "Pivot", color=color.gray, linewidth=2)
plot(s1, "S1", color=color.blue, linewidth=1)
plot(s2, "S2", color=color.blue, linewidth=1)
plot(s3, "S3", color=color.blue, linewidth=1)
plot(s4, "S4", color=color.blue, linewidth=1)
plot(r1, "R1", color=color.red, linewidth=1)
plot(r2, "R2", color=color.red, linewidth=1)
plot(r3, "R3", color=color.red, linewidth=1)
plot(r4, "R4", color=color.red, linewidth=1)
// Function to create unique trade entries
checkEntry(level, target, entryNumber) =>
currentWeek = str.tostring(year(time)) + "_" + str.tostring(weekofyear(time))
entryId = "Entry" + str.tostring(entryNumber) + "_W" + currentWeek
if low <= level and not array.includes(entry_ids, entryId)
array.push(entry_ids, entryId)
array.push(profit_targets, target)
strategy.entry(entryId, strategy.long)
strategy.exit("Exit" + entryId, entryId, limit=target)
// Check all entry levels
checkEntry(s1, r1, 1)
checkEntry(s2, r2, 2)
checkEntry(s3, r3, 3)
checkEntry(s4, r4, 4)
// Clean up completed trades using while loop
i = array.size(entry_ids) - 1
while i >= 0
entryId = array.get(entry_ids, i)
target = array.get(profit_targets, i)
if high >= target
array.remove(entry_ids, i)
array.remove(profit_targets, i)
i := i - 1Published by ChaoZhang on the FMZ strategy square · last modified 2025-02-18. 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/Multi-Level-Support-Resistance-Weekly-Mean-Reversion-Trading-Strategy.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
- Advanced Momentum EMA Trend Following with RSI Overbought Oversold Trading StrategyPine Script · Mean reversion · 1d
- Support and Resistance Enhanced Momentum Reversal StrategyPine Script · Mean reversion · 2m
- Advanced Fibonacci Retracement Trend Following and Reversal Trading StrategyPine Script · Mean reversion · 3h
- Advanced Strategy with Volume and Price Pullback Multiple Take ProfitPine Script · Mean reversion · 1h
- Dynamic Adaptive Multi Timeframe Trend Following and Range Reversal Hybrid StrategyPine Script · Mean reversion · 2d
- Dynamic MACD and Ichimoku Cloud Trading StrategyPine Script · Mean reversion · 1h