This strategy is an intraday bullish trading strategy based on technical indicators. It mainly uses three technical indicators to determine the timing of long entries: 1. Swing low 2. Bullish candlestick pattern 3. Extreme oversold. At the same time, it uses the ATR (Average True Range) indicator to calculate stop-loss and take-profit prices. This strategy is applicable to all timeframes and all underlying assets.
The strategy is mainly based on the following principles:
This intraday bullish breakout strategy is a quantitative trading strategy based on swing lows, bullish patterns, and oversold reversals. It uses three technical indicators to capture long entry points from different angles. At the same time, it uses the ATR volatility indicator to calculate dynamic stop-loss and take-profit levels. It can fully capture profits in uptrends but faces the risk of frequent trading in volatile markets. The strategy still has room for optimization, such as introducing trend judgments, optimizing parameters and indicators, to further improve the strategy’s performance.
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © LuxTradeVenture //@version=5 strategy("Intraday Bullish Script", overlay=true, margin_long=100, margin_short=100) // Settings for Strategy 1 entryCondition1 = input.bool(true, title="Use Entry Condition - Strategy 1") // Input for ATR multiplier for stop loss atrMultiplierforstoploss = input.float(2, title="ATR Multiplier for Stop Loss") // Input for ATR multiplier for target price atrMultiplierforlongs = input.float(4, title="ATR Multiplier for Target Price") // Calculate ATR atrLength = input.int(14, title="ATR Length") atrValue = ta.atr(atrLength) // Swing low condition - Strategy 1 swingLow1 = low == ta.lowest(low, 12) or low[1] == ta.lowest(low, 12) /// maj_qual = 6 //input(6) maj_len = 30 //input(30) min_qual = 5 //input(5) min_len = 5 //input(5) lele(qual, len) => bindex = 0.0 bindex := nz(bindex[1], 0) sindex = 0.0 sindex := nz(sindex[1], 0) ret = 0 if close > close[4] bindex := bindex + 1 bindex if close < close[4] sindex := sindex + 1 sindex if bindex > qual and close < open and high >= ta.highest(high, len) bindex := 0 ret := -1 ret if sindex > qual and close > open and low <= ta.lowest(low, len) sindex := 0 ret := 1 major = lele(maj_qual, maj_len) minor = lele(min_qual, min_len) ExaustionLow = major == 1 ? 1 : 0 Bullish3LineStrike = close[3] < open[3] and close[2] < open[2] and close[1] < open[1] and close > open[1] // Entry and Exit Logic for Strategy 2 // Create variables to track trade directions and entry prices for each strategy var int tradeDirection1 = na var float entryLongPrice1 = na // Calculate entry prices for long positions - Strategy 1 if (swingLow1 or Bullish3LineStrike) entryLongPrice1 := close tradeDirection1 := 1 // Calculate target prices for long positions based on ATR - Strategy 1 targetLongPrice1 = entryLongPrice1 + (atrMultiplierforlongs * atrValue) // Calculate stop loss prices for long positions based on entry - Strategy 1 stopLossLongPrice1 = entryLongPrice1 - (atrMultiplierforstoploss * atrValue) // Entry conditions for Strategy 1 if (tradeDirection1 == 1 and (swingLow1 or Bullish3LineStrike)) strategy.entry("Long - Strategy 1", strategy.long) // Exit conditions for long positions: When price reaches or exceeds the target - Strategy 1 if (close >= targetLongPrice1) strategy.close("Long - Strategy 1", comment="Take Profit Hit") // Exit conditions for long positions: When price hits stop loss - Strategy 1 if (close <= stopLossLongPrice1) strategy.close("Long - Strategy 1", comment="Stop Loss Hit")