
이것은 44주기 지수 이동 평균 (EMA) 을 기반으로 한 트렌드 추적 전략이다. 이 전략은 주로 상승 추세에서 구매 기회를 찾고, EMA 경사, 도표 형태 및 가격 회수와 같은 여러 조건을 분석하여 출입 시간을 결정한다. 전략은 2분 및 5분과 같은 짧은 시간 주기에도 적용되며, 단기 가격 변동 중 거래 기회를 잡기 위해 설계되었다.
고스 크로스 EMA 트렌드 슬라이드 트래킹 전략은 다중 기술 지표를 결합한 트렌드 추적 시스템이다. 이 전략은 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")