이 전략은 44주기 기하급수적 이동 평균 (EMA) 을 기반으로 하는 트렌드를 따르는 전략이다. 이 전략은 주로 EMA 기울기, 촛불 패턴 및 가격 리트레이싱을 포함한 여러 조건을 분석하여 상승 추세에서 구매 기회를 추구한다. 2분 및 5분 차트와 같은 짧은 시간 프레임에 설계되어 있으며, 단기 가격 변동에서 거래 기회를 포착하는 것을 목표로 한다.
가우시안 크로스 EMA 트렌드 리트레이싱 전략 (Gaussian Cross EMA Trend Retracement Strategy) 은 여러 가지 기술 지표를 결합한 트렌드 추적 시스템이다. EMA, 촛불 패턴 분석 및 가격 리트레이싱을 통합함으로써이 전략은 상승 추세를 파악하고 입시 시기를 최적화하는 데 좋은 잠재력을 보여줍니다. 그러나 사용자는 과잉 거래 위험에 대해 신중하고 다른 시장 환경에 대한 매개 변수를 최적화해야합니다. 추가 기술 지표를 도입하고 위험 관리 메커니즘을 개선함으로써이 전략은 단기 거래에서 더 안정적인 성과를 달성 할 가능성이 있습니다.
/*backtest start: 2019-12-23 08:00:00 end: 2024-09-24 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Custom Strategy with EMA and Candle Conditions", overlay=true) // Define parameters ema_length = 44 // Calculate EMA ema_44 = ta.ema(close, ema_length) // Calculate the slope of the EMA ema_slope = ta.ema(close, ema_length) - ta.ema(close[9], ema_length) // Define a threshold for considering the EMA flat flat_threshold = 0.5 // Check if the EMA is flat or inclined ema_is_inclined = math.abs(ema_slope) > flat_threshold // Define the previous candle details prev_candle_high = high[1] prev_candle_low = low[1] prev_candle_close = close[1] prev_candle_open = open[1] // Candle before the previous candle (for high comparison) candle_before_prev_high = high[2] // Current candle details current_candle_high = high current_candle_low = low current_candle_close = close current_candle_open = open // Previous to previous candle details prev_prev_candle_low = low[2] // Previous candle body and wick length prev_candle_body = math.abs(prev_candle_close - prev_candle_open) prev_candle_wick_length = math.max(prev_candle_high - prev_candle_close, prev_candle_close - prev_candle_low) // Calculate retrace level for the current candle retrace_level = prev_candle_close - (prev_candle_close - prev_candle_low) * 0.5 // Check if the previous candle's wick is smaller than its body prev_candle_condition = prev_candle_wick_length < prev_candle_body // Check if the previous candle is a green (bullish) candle and if the previous candle's close is above EMA prev_candle_green = prev_candle_close > prev_candle_open prev_candle_red = prev_candle_close < prev_candle_open prev_candle_above_ema = prev_candle_close > ema_44 // Entry condition: The current candle has retraced to 50% of the previous candle's range, previous candle was green and above EMA, and the high of the current candle is above the retrace level, and EMA is inclined entry_condition = prev_candle_close > candle_before_prev_high and prev_candle_green and prev_candle_above_ema and current_candle_low <= retrace_level and current_candle_high >= retrace_level and ema_is_inclined // Exit condition exit_condition = (strategy.position_size > 0 and prev_candle_red) or (strategy.position_size > 0 and current_candle_low < prev_candle_low) // Ensure only one trade is open at a time single_trade_condition = strategy.position_size == 0 // Plot EMA for visualization plot(ema_44, color=color.blue, title="44 EMA") // Plot conditions for debugging plotshape(series=entry_condition and single_trade_condition, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") plotshape(series=exit_condition, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell") // Print entry condition value on chart var label entry_label = na if (entry_condition and single_trade_condition) entry_label := label.new(bar_index, low, text="Entry Condition: TRUE", color=color.green, textcolor=color.white, size=size.small, yloc=yloc.belowbar) else entry_label := label.new(bar_index, high, text="Entry Condition: FALSE", color=color.red, textcolor=color.white, size=size.small, yloc=yloc.abovebar) // Debugging: Plot retrace level and other key values plot(retrace_level, color=color.orange, title="Retrace Level") plot(prev_candle_high, color=color.purple, title="Previous Candle High") plot(candle_before_prev_high, color=color.yellow, title="Candle Before Previous High") // Trigger buy order if entry condition and single trade condition are met if (entry_condition and single_trade_condition) strategy.entry("Buy", strategy.long) // Trigger sell order if exit condition is met if (exit_condition) strategy.close("Buy")