리소스 로딩... 로딩...

200 EMA 필터와 함께 전략에 따른 다중 시간 프레임 트렌드 - 길게만

저자:차오장, 날짜: 2024-05-23 18:07:50
태그:EMA

img

전반적인 설명

이 전략은 다중 시간 프레임 기하급수적 이동 평균 (EMAs) 과 200 기간 EMA 필터를 기반으로 한 트렌드 추적 전략이다. 주요 아이디어는 시장 트렌드 방향을 식별하고 트렌드가 상승하고 가격이 200 기간 EMA 이상으로 긴 포지션을 설정하기 위해 다른 시간 프레임에서 EMA를 사용하는 것입니다. 이것은 강력한 상승 추세 중만 거래가 이루어지는 것을 보장하며, 정의된 스톱 로스 및 영업 메커니즘으로 위험을 관리하면서 지속적인 상승 움직임을 포착하는 것을 목표로합니다.

이 전략은 5분, 15분, 30분 3개의 시간 프레임을 사용하며, 각각에 대한 빠르고 느린 EMA를 계산한다. 각각의 시간 프레임에 대한 빠르고 느린 EMA를 비교함으로써 트렌드 방향을 결정할 수 있다. 세 가지 시간 프레임의 트렌드 신호는 결합된 트렌드 신호를 얻기 위해 합쳐진다. 결합된 트렌드 신호가 3일 (모든 시간 프레임에서 상승세를 나타낸다) 이며 현재 폐쇄 가격은 5분 시간 프레임에서 200개 기간 EMA를 넘어서면, 전략은 긴 포지션을 입력한다. 결합된 트렌드 신호가 3개 이하로 떨어지거나 가격이 5분 200개 기간 EMA를 떨어지면 포지션은 닫힌다.

전략 원칙

  1. 5분, 15분 및 30분 시간 프레임에 대해 빠른 EMA (디폴트 9 기간) 및 느린 EMA (디폴트 21 기간) 를 계산합니다.
  2. 트렌드 필터로 5분 시간 프레임에서 200주기 EMA를 계산합니다.
  3. 각 시간 프레임에 대해 빠른 EMA와 느린 EMA를 비교하십시오. 느린 것보다 빠른 EMA는 상승 추세를 나타냅니다 (+1), 빠른 것보다 느린 EMA는 하락 추세를 나타냅니다 (-1).
  4. 세 시간 프레임의 트렌드 신호를 합쳐서 범위의 결합 트렌드 신호를 얻습니다 [-3, 3].
  5. 복합 트렌드 신호가 3 (강한 상승 추세) 에 해당하고 현재 종료 가격은 5분 200주기 EMA보다 높을 때 긴 포지션을 입력합니다.
  6. 종합 트렌드 신호가 3 이하로 떨어지거나 가격이 5분 200주기 EMA 이하로 떨어지면 포지션을 닫습니다.
  7. 스톱 로스를 입시 가격보다 1% 낮게 설정하고, 이윤을 입시 가격보다 3% 높게 설정합니다.

장점

  1. 여러 시간 프레임에서 트렌드 신호를 활용함으로써 전략은 시장 트렌드를 보다 포괄적으로 평가하고 잘못된 신호를 줄일 수 있습니다.
  2. 200주기 EMA 필터는 거래가 강한 상승 추세 때만 입력되는 것을 보장하며 성공률을 높입니다.
  3. 엄격한 진입 및 출구 조건과 함께 스톱 로스 및 취리 수익은 위험을 통제하고 위험/이익 비율을 향상시키는 데 도움이됩니다.
  4. 조정 가능한 매개 변수 때문에 전략은 다른 시장과 거래 스타일에 적응할 수 있습니다.

위험성

  1. 전략은 트렌드 전환점에 느리게 반응할 수 있고 최적의 진입 기회를 놓칠 수 있습니다.
  2. 빈번한 출입과 출입은 거래 비용을 증가시킬 수 있습니다.
  3. 고정된 스톱 로스 레벨은 매우 변동적인 시장에서 조기 종료로 이어질 수 있습니다.
  4. 트렌드 결정은 역사적인 데이터에 기초하고 있으며 예상치 못한 사건으로 인한 갑작스러운 가격 움직임에 즉각적으로 반응하지 않을 수 있습니다.

최적화 방향

  1. 더 많은 시간 프레임을 도입하거나 트렌드 식별의 정확성과 신속성을 향상시키기 위해 기존 시간 프레임의 선택을 최적화하십시오.
  2. 다른 시장 조건에 적응하기 위해 트레일링 스톱 또는 동적 스톱을 구현하는 것과 같은 스톱 로스 및 취리 레벨을 최적화합니다.
  3. 부피, 모멘텀 등과 같은 추가 신호를 트렌드 신호와 함께 통합하여 다중 요소 입출 조건을 형성하여 전략의 견고성을 향상시킵니다.
  4. 현재 시장에 가장 적합한 조합을 찾기 위해 매개 변수를 최적화합니다.
  5. 이 전략의 적용을 확대하기 위해 단장 매매 메커니즘을 추가하는 것을 고려하십시오.

요약

이 전략은 트렌드 필터로서 200주기 EMA를 사용하여 여러 시간 프레임에서 EMA를 비교하여 트렌드 방향을 결정합니다. 트렌드가 분명히 상승하고 가격이 장기 이동 평균보다 높을 때 긴 포지션을 설정하여 강력한 상승 추세를 포착하는 것을 목표로합니다. 엄격한 입출장 조건과 고정 스톱 로스 및 영리 수준은 위험을 관리하는 데 도움이됩니다. 그러나 전략은 트렌드 전환점에 느리게 반응할 수 있으며 고정 스톱 로스 및 영리 수준으로 인한 갑작스러운 시장 변동성에 대처하는 데 한계가 있습니다. 미래에는 더 많은 시간 프레임을 도입하고, 스톱 로스 및 영업 수익 수준을 최적화하고, 추가 거래 신호를 통합하고, 매개 변수를 최적화함으로써 전략의 적응력과 견고성을 향상시킬 수 있습니다. 이것은 위험을 통제하면서 시장 기회를 더 잘 잡을 수있게합니다.


/*backtest
start: 2023-05-17 00:00:00
end: 2024-05-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Multi-Timeframe Trend Following with 200 EMA Filter - Longs Only", shorttitle="MTF_TF_200EMA_Longs", overlay=true, initial_capital=1000, default_qty_type=strategy.fixed, default_qty_value=1)

// Inputs
fast_length = input.int(9, title="Fast EMA Length", minval=1)
slow_length = input.int(21, title="Slow EMA Length", minval=1)
filter_length_200 = input.int(200, title="200 EMA Length", minval=1)
stop_loss_perc = input.float(1.0, title="Stop Loss Percentage", minval=0.1) / 100
take_profit_perc = input.float(3.0, title="Take Profit Percentage", minval=0.1) / 100

// Calculate EMAs for 5-minute, 15-minute, and 30-minute timeframes
ema_fast_5min = request.security(syminfo.tickerid, "5", ta.ema(close, fast_length), lookahead=barmerge.lookahead_on)
ema_slow_5min = request.security(syminfo.tickerid, "5", ta.ema(close, slow_length), lookahead=barmerge.lookahead_on)

ema_fast_15min = request.security(syminfo.tickerid, "15", ta.ema(close, fast_length), lookahead=barmerge.lookahead_on)
ema_slow_15min = request.security(syminfo.tickerid, "15", ta.ema(close, slow_length), lookahead=barmerge.lookahead_on)

ema_fast_30min = request.security(syminfo.tickerid, "30", ta.ema(close, fast_length), lookahead=barmerge.lookahead_on)
ema_slow_30min = request.security(syminfo.tickerid, "30", ta.ema(close, slow_length), lookahead=barmerge.lookahead_on)

// Calculate 200 EMA for the 5-minute timeframe
ema_200_5min = ta.ema(close, filter_length_200)

// Determine the trend for each timeframe
trend_5min = ema_fast_5min > ema_slow_5min ? 1 : -1
trend_15min = ema_fast_15min > ema_slow_15min ? 1 : -1
trend_30min = ema_fast_30min > ema_slow_30min ? 1 : -1

// Combine trend signals
combined_trend = trend_5min + trend_15min + trend_30min

// Define entry and exit conditions with 200 EMA filter
enter_long = combined_trend == 3 and close > ema_200_5min
exit_long = combined_trend < 3 or close < ema_200_5min

// Plot EMAs for the 5-minute timeframe
plot(ema_fast_5min, color=color.blue, linewidth=2, title="Fast EMA 5min")
plot(ema_slow_5min, color=color.red, linewidth=2, title="Slow EMA 5min")
plot(ema_200_5min, color=color.green, linewidth=2, title="200 EMA 5min")

// Strategy execution
if (enter_long)
    strategy.entry("Long", strategy.long, stop=close * (1 - stop_loss_perc), limit=close * (1 + take_profit_perc))
if (exit_long)
    strategy.close("Long")


관련

더 많은