This strategy is a quantitative trading system based on market price pattern recognition, primarily designed to capture potential market reversal opportunities by identifying 123-point reversal patterns. The strategy combines dynamic holding period management with moving average filtering, utilizing multiple condition verification to enhance trading accuracy. It employs precise mathematical models for entry point definition and uses a 200-day moving average as an auxiliary exit condition, forming a complete trading system.
The core logic is based on price pattern recognition, including the following key elements:
The strategy provides traders with a reliable market reversal capture tool through strict pattern recognition and comprehensive risk control systems. While certain limitations exist, continuous optimization and appropriate parameter adjustments enable the strategy to maintain stable performance across different market environments. Traders are advised to combine market experience with strategy-specific adjustments in practical applications to achieve better trading results.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-11 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/ // © EdgeTools //@version=5 strategy("123 Reversal Trading Strategy", overlay=true) // Input for number of days to hold the trade daysToHold = input(7, title="Days to Hold Trade") // Input for 20-day moving average maLength = input(200, title="Moving Average Length") // Calculate the 20-day moving average ma20 = ta.sma(close, maLength) // Define the conditions for the 123 reversal pattern (bullish reversal) // Condition 1: Today's low is lower than yesterday's low condition1 = low < low[1] // Condition 2: Yesterday's low is lower than the low three days ago condition2 = low[1] < low[3] // Condition 3: The low two days ago is lower than the low four days ago condition3 = low[2] < low[4] // Condition 4: The high two days ago is lower than the high three days ago condition4 = high[2] < high[3] // Entry condition: All conditions must be true entryCondition = condition1 and condition2 and condition3 and condition4 // Exit condition: Close the position after a certain number of bars or when the price reaches the 20-day moving average exitCondition = ta.barssince(entryCondition) >= daysToHold or close >= ma20 // Execute buy and sell signals if (entryCondition) strategy.entry("Buy", strategy.long) if (exitCondition) strategy.close("Buy")