####Overview This strategy uses technical indicators such as Exponential Moving Average (EMA), highest price, lowest price, and Average True Range (ATR) to identify the current trend direction by analyzing the relationship between price and EMA, highest price, and lowest price. It generates a buy signal when the price breaks above the lowest price and a sell signal when the price breaks below the highest price or reaches the dynamic resistance level, aiming to capture trend movements and achieve excess returns.
####Strategy Principle
####Strategy Advantages
####Strategy Risks
####Strategy Optimization Directions
####Summary This strategy utilizes technical indicators like EMA, highest price, and lowest price, combined with ATR to construct dynamic channels. It generates trading signals by breaking above the lowest price and breaking below the highest price to capture trend movements. It is a simple and practical trend-following strategy with adjustable parameters, offering good adaptability and flexibility. However, its performance may be suboptimal in rangebound markets, requiring further optimization and improvement through introducing more indicators, optimizing parameters, and adding risk controls.
/*backtest start: 2023-05-05 00:00:00 end: 2024-05-10 00:00:00 period: 1d basePeriod: 1h 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/ // © Maboi_q //@version=5 strategy("buy sell Trend", overlay=true) atr_length = input.int(defval=14, title='atr length') highest_length = input.int(defval=60, title='highest length') highest_s_length = input.int(defval=60, title='sell highest length') lowest_length = input.int(defval=30, title='lowest length') sell_l_length = input.int(defval=55, title='sell line length') f = 2.382 f2 = 5.618 atr = ta.atr(atr_length) highest = ta.highest(highest_length) lowest = ta.lowest(lowest_length) f_atr = atr * f ema_hl = ta.ema((highest[1] + lowest[1]) / 2, 14) ema_highest = ema_hl + f_atr ema_lowest = ema_hl - f_atr ema_mid = (ema_highest + ema_lowest) / 2 bs_hi = ta.highest(highest_s_length) f_atr2 = atr * f2 sell_line = ta.ema(bs_hi[1] + f_atr2, sell_l_length) buy_cond = ta.crossover(ema_lowest, lowest) and close < ema_mid sell_cond = (ta.crossunder(ema_highest, highest) and close > ema_mid) or high >= sell_line if buy_cond strategy.entry('BUY', strategy.long) if sell_cond strategy.entry('SELL', strategy.short) plot(sell_line, color=color.new(color.maroon, 50)) plot(highest, color=color.new(color.red, 50)) plot(lowest, color=color.new(color.green, 50)) plot(ema_highest, color=color.new(color.blue, 50)) // plot(ema_mid, color=color.new(color.gray, 50)) plot(ema_lowest, color=color.new(color.blue, 50)) plotshape(buy_cond, title='buy', style=shape.triangleup, location=location.belowbar, color=color.green, textcolor=color.green, size=size.tiny) plotshape(sell_cond, title='sell', style=shape.triangledown, location=location.abovebar, color=color.red, textcolor=color.red, size=size.tiny)template: strategy.tpl:40:21: executing "strategy.tpl" at <.api.GetStrategyListByName>: wrong number of args for GetStrategyListByName: want 7 got 6