멀티 타임프레임 이동 평균 트렌드 거래 전략

저자:차오장, 날짜: 2023-09-23 16:10:08
태그:

전반적인 설명

이 전략은 트렌드를 따라 거래를 구현하기 위해 다른 시간 프레임에 걸쳐 움직이는 평균을 사용합니다. 매일, 4 시간 및 15 분 시간 프레임에서 빠르고 느린 움직이는 평균을 계산합니다. 빠른 움직이는 평균이 세 시간 프레임 모두에서 느린 평균보다 높을 때 길어집니다. 빠른 움직이는 평균이 느린 ones보다 낮을 때 짧습니다. 전략은 잘못된 브레이크를 효과적으로 필터하기 위해 시간 프레임에 걸쳐 가격 정보를 완전히 사용합니다.

전략 논리

이 전략은 세 가지 다른 시간 프레임에 기반하여 빠르고 느린 이동 평균을 계산합니다. 매일, 4 시간 및 15 분 시간 프레임을 사용하여 각 시간 프레임에 21 기간 빠른 EMA 및 34 기간 느린 EMA를 계산합니다. 빠른 EMA가 매일, 4 시간 및 15 분 시간 프레임에서 느린 EMA를 넘으면 상승 추세를 결정하고 길게됩니다. 빠른 EMA가 세 가지 시간 프레임에서 느린 EMA를 넘으면 하락 추세를 결정하고 짧게됩니다.

이 전략은 또한 불리한 시장 조건을 피하기 위해 거래 시간 범위를 설정합니다. 특정 달과 날짜 범위 내에서만 거래합니다.

특히 전략의 핵심 사항은 다음과 같습니다.

  1. 다양한 시간 프레임 입력: 매일, 4 시간, 15 분

  2. 각 시간 프레임에서 빠른 EMA와 느린 EMA를 계산합니다.

  3. 모든 시간 프레임에서 빠른 EMA가 느린 EMA를 넘을 때 길게, 아래로 갈 때 짧게

  4. 거래 달 및 날짜 범위를 설정

  5. 조건에 기반한 긴/단기 포지션 오픈, 조건이 충족되지 않을 경우 폐쇄

시간 프레임에 걸쳐 트렌드를 판단하면 잘못된 브레이크오웃을 효과적으로 필터 할 수 있습니다. 여러 시간 프레임에 걸쳐 포지션 사이징을 적용하면 위험을 제어 할 수 있습니다.

장점

이 전략의 주요 장점은 다음과 같습니다.

  1. 크로스 타임프레임 트렌드 식별은 잘못된 브레이크를 효과적으로 필터합니다. 단일 타임프레임은 잘못된 브레이크에 취약합니다.

  2. 다중 시간 프레임 포지션 사이징은 단일 시간 프레임에서 위험을 줄입니다. 단일 시간 프레임 위험은 용량을 초과합니다.

  3. 거래 시간 범위는 불리한 시장에 갇혀있는 것을 피합니다. 달과 날짜를 지정하여 나쁜 시기를 건너뛰는 것입니다.

  4. 빠르고 느린 EMA 조합은 트렌드를 원활하게 포착합니다. EMA는 널리 사용되고 이해하기 쉽습니다.

  5. 단순하고 명확한 규칙, 쉬운 매개 변수 조정으로 전략이 쉽게 구현됩니다. 복잡한 지표가 필요하지 않습니다.

  6. 높은 유연성을 가진 자산 클래스 전반에 걸쳐 광범위하게 적용됩니다. EMA 크로스오버 개념은 일반화됩니다.

위험성

이 전략에서 고려해야 할 몇 가지 위험:

  1. 장기 트렌딩 시장에서 더 잘 수행, 범위 시장은 윙사 위험을 증가합니다. 낮은 위험에 포지션 사이즈를 느슨하게 할 수 있습니다.

  2. 보수적인 매개 변수들은 더 강한 트렌드를 놓칠 수 있습니다. EMA 기간을 단축하거나 거래 기간을 줄일 수 있습니다.

  3. EMA는 불안정한 시장에서 좋지 않은 성과를 내고 있습니다. 변동성 또는 추진력 지표와 결합하는 것을 고려하십시오.

  4. 트렌드를 결정하는 데 느린 일일 시간 프레임, 적시에 포지션을 종료 할 수 없습니다. 더 높은 시간 프레임 또는 더 낮은 일일 포지션 크기를 추가 할 수 있습니다.

  5. 고정 거래 시간 범위는 시장의 변화에 적응하지 않습니다. 시간 범위 매개 변수를 조정하기 위해 정기적으로 평가해야합니다.

개선

이 전략을 강화하는 몇 가지 방법:

  1. 유연한 트렌드를 위해 EMA 기간을 최적화합니다. 짧은 빠른 / 느린 EMA 기간을 테스트하거나 더 빠른 EMA를 추가 할 수 있습니다.

  2. 트렌드 강도에 대한 모멘텀 지표를 추가합니다. MACD, RSI 등 추가 신호를 추가합니다.

  3. 시장 조건에 따라 포지션 크기를 최적화합니다. 시장 변동성에 따라 전략 포지션 크기를 조정합니다.

  4. 진입과 출구를 개선하기 위해 변동성 지표를 포함합니다. 변동성에 동적으로 적응하기 위해 ATR 또는 변동성을 추가하십시오.

  5. 최적의 균형을 찾기 위해 더 많은 시간 프레임 조합을 테스트합니다. 더 높은 시간 프레임을 추가하거나 특정 시간을 제거 할 수 있습니다.

  6. 자동화된 매개 변수 최적화를 위해 기계 학습을 활용합니다. 시뮬레이션과 훈련을 통해 최적의 매개 변수를 발견합니다.

  7. 트렌드 확인을 추가해 EMA를 넘어서기 위해 윙사 (wipssaws) 를 피합니다.

  8. 패러미터 안정성을 평가하기 위해 강력한 백테스팅을 수행합니다. 과도한 패러미터를 수정하고 신뢰성을 향상시킵니다.

결론

이 전략은 안정적이고 효율적인 트렌드 추적 시스템을 만들기 위해 빠른/슬로우 EMA를 가진 크로스 타임프레임 트렌드 필터링 개념을 활용한다. 정확한 트렌드 식별과 리스크 관리의 장점이 있다. 그러나, 변동적인 시장에서 위험 통제와 지속적인 매개 변수 개선이 일관된 수익을 달성하기 위해 필요하다. 전반적으로, 멀티 타임프레임 EMA 프레임은 광범위하게 적용되고 트렌드 트레이딩 접근법이 권장된다.


/*backtest
start: 2023-09-15 00:00:00
end: 2023-09-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//Cryptocurrency Trading Tools by XMAXPRO
//ATA
//Test 1.0v Date  : 10.11.2018
//

strategy("MTF+MA", overlay=false, shorttitle="MTF-MA", overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent,commission_value=0.1,initial_capital=100000)
src = input(title= "Source", defval=close)
fast = input(title="Input For Fast MA",  defval=21)
slow = input(title="Input For Slow MA",defval=34)
//MTF source
long = input(title="LONGTERM",  defval="D")
mid = input(title="MIDTERM",  defval="180")
short = input(title="SHORTTERM",  defval="15")
//MTF Grafikleri
ln = security(syminfo.ticker, long, src)
md = security(syminfo.ticker, mid, src)
sh = security(syminfo.ticker, short, src)
//0
lnma = ema(ln,fast) - ema(ln,slow)
mdma = ema(sh,fast) - ema(md,slow)
shma = ema(sh,fast) - ema(sh,slow)

plot(lnma,color=green,linewidth=3)
plot(mdma,color=blue,linewidth=3)
plot(shma,color=red,linewidth=3)
plot(0,color=white,linewidth=3)

longCond = lnma>0 and mdma>0  and shma>0
shortCond= lnma<0  and mdma<0  and shma <0 



monthfrom =input(8)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)
yearfrom=input(2018)
yearuntil=input(2020)

if (  longCond  ) 
    strategy.entry("LONG", strategy.long, stop=close, oca_name="TREND",  comment="LONG")
    
else
    strategy.cancel(id="LONG")
    



if ( shortCond   ) 

    strategy.entry("SHORT", strategy.short,stop=close, oca_name="TREND",  comment="SHORT")
else
    strategy.cancel(id="SHORT")


더 많은