이 전략은 빠른 이동 평균과 느린 이동 평균의 교차를 기반으로 하는 간단한 거래 전략이다. 구매 및 판매 신호를 생성하기 위해 이동 평균의 황금 십자 및 죽은 십자 를 이용한다. 빠른 이동 평균이 느린 이동 평균을 넘으면, 긴 이동; 빠른 이동 평균이 느린 이동 평균을 넘으면, 짧은 이동. 목표는 다른 기간의 이동 평균 사이의 상호 작용을 관찰함으로써 트렌드 반전을 포착하는 것이다.
이 전략은 주로 빠른 기하급수적 이동 평균 (EMA) 과 느린 단순 이동 평균 (SMA) 사이의 교차에 의존하여 거래 신호를 생성합니다. 먼저 빠른 EMA와 느린 SMA를 계산하여 각각 13 및 30로 설정합니다. 다음으로 빠른 EMA가 느린 SMA 위에 넘어가면 긴 신호가 생성됩니다. 빠른 EMA가 느린 SMA 아래에 넘어가면 짧은 신호가 유발됩니다.
구체적으로, 전략은 maFast 및 maSlow를 사용하여 빠른 EMA와 느린 SMA를 계산합니다. 그 다음 엔트리 및 출구 지점을 결정하기 위해 enterLong 및 exitLong 변수를 정의합니다. maFast> maSlow, 즉 빠른 EMA가 느린 SMA 위에 넘어가면 긴 엔트리를 유발하기 위해 enterLong=true를 설정합니다. maSlow> maFast, 즉 빠른 EMA가 느린 SMA 아래에 넘어가면 포지션을 닫기 위해 exitLong=true를 설정합니다. 마지막으로, 전략은 조건이 충족되면 strategy.entry를 통해 주문을 제출합니다.
따라서, 단기 상승 동력이 장기 트렌드를 압도할 때, 빠른 EMA는 느린 SMA 위에 넘어서서 구매 신호를 생성합니다. 단기 하락 동력이 장기 트렌드를 압도할 때, 빠른 EMA는 느린 SMA 아래에 넘어서서 판매 신호를 생성합니다. 다른 시간 프레임에 걸쳐 트렌드 반전을 포착함으로써, 낮은 구매와 높은 판매를 목표로합니다.
이동평균의 크로스오버 전략은 다음과 같은 장점을 가지고 있습니다.
단순하고 이해하기 쉽다. 이동 평균은 일반적으로 사용되고 효과적인 지표입니다. 크로스오버 논리는 간단합니다. 이것은 거래자에게 전략을 이해하고 구현하는 것을 쉽습니다.
매우 사용자 정의 가능. 이 전략은 다양한 시장에 맞게 조정할 수 있는 빠른 EMA와 느린 SMA를 위한 사용자 정의 기간을 허용하며 적응력을 향상시킵니다.
신뢰할 수 있는 거래 신호. 이동 평균은 시장 소음을 효과적으로 필터링합니다. 그들의 교차는 상당히 신뢰할 수 있는 신호를 생성합니다. 빠른 및 느린 MA 사이의 교차는 더 넓은 트렌드의 전환을 캡처 할 수 있습니다.
다양한 시장 환경에서 적용됩니다. 전략은 트렌딩 및 범위 제한 시장에서 작동합니다. 매개 변수는 다른 조건에 맞게 조정 할 수 있습니다.
다른 지표와 쉽게 결합됩니다. 전략은 더 강력한 시스템을 만들기 위해 RSI와 같은 지표와 유연하게 결합 될 수 있습니다.
이 전략은 또한 몇 가지 위험을 안고 있습니다.
윙사 신호. 불확실한 트렌드 중 MAs는 과도한 거래 및 미끄러짐 비용을 유발하여 자주 교차 할 수 있습니다.
불안정한 시장은 범위에서 고착되는 원인이 될 수 있습니다. 범위 제한 시장에서 MAs는 모호한 크로스오버 신호를 생성하여 잘못된 신호가 발생할 수 있습니다.
매개 변수 최적화에 어려움이 있습니다. MA 기간은 전략 성능에 상당한 영향을 미치며 광범위한 테스트가 필요합니다.
미연 신호: MAs는 본질적으로 미연, 따라서 크로스오버 신호는 늦게 오는 경향이 있으며 이상적인 입구 지점을 놓칠 수 있습니다.
리스크 관리 부족. 전략은 스톱 로스 로직이 없으며 큰 손실 트레이드를 초래할 수 있습니다.
이동 평균 크로스오버 전략을 최적화하는 몇 가지 방법:
거짓 신호를 줄이기 위해 RSI와 같은 필터를 추가하십시오. RSI가 높을 때 긴 것을 피하고 RSI가 낮을 때 짧은 것을 피하십시오.
50일 MA와 같은 신호를 확인하기 위해 추가 MA를 포함합니다. 빠른 MA가 중간 MA를 넘어서고 중간 MA가 상승 추세에서 긴 MA를 넘어서면 긴 MA로 이동하십시오.
위험을 제어하기 위해 파라볼 SAR와 같은 스톱 로스 기술을 구현하십시오. 변동성에 기반한 적응 스톱도 작동 할 수 있습니다.
변화하는 시장에서 성능을 향상시키기 위해 앞으로의 분석과 기계 학습과 같은 방법을 사용하여 매개 변수를 최적화하십시오.
신호 품질을 향상시키고 조기 전환을 피하기 위해 낮은 시간 프레임 차트와 촛불 패턴을 사용하십시오.
부피 표시기를 포함해서 잘못된 브레이크를 피합니다. 부피 확인은 신호를 더 신뢰할 수 있습니다.
이동 평균 크로스오버 전략은 간단하면서도 실용적인 양적 거래 전략이다. 빠른 EMA와 느린 SMA 크로스를 사용하여 거래 신호를 생성한다. 이 전략은 다른 지표와 구현하고 결합하는 것이 쉽지만 과도한 거래 및 윙사와 같은 단점도 있다. 매개 변수와 위험 관리의 적절한 향상으로 전략은 더 견고하고 수익성이 될 수 있다. 전반적으로 이동 평균 크로스오버 접근법은 양적 거래자에게 학습하고 적용할 가치가 있다.
/*backtest start: 2023-08-26 00:00:00 end: 2023-09-12 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="Moving Average Cross EMA SMA", overlay=true, initial_capital=10000, currency='USD',default_qty_type=strategy.percent_of_equity,default_qty_value=100) // Based on strategy by lsills @ https://www.tradingview.com/script/oI8loEZ8-Moving-Average-Cross-Strategy/ // Strategy has several logic alternatives - comment out the undesired logic sections below, only 1 logic section can be active // === GENERAL INPUTS === // short Ema maFastSource = input(defval = close, title = "Fast EMA Source") maFastLength = input(defval = 13, title = "Fast EMA Period", minval = 1) // long Sma maSlowSource = input(defval = close, title = "Slow SMA Source") maSlowLength = input(defval = 30, title = "Slow SMA Period", minval = 1) // longer Sma maSlowerSource = input(defval = close, title = "Slower SMA Source") maSlowerLength = input(defval = 30, title = "Slower SMA Period", minval = 1) // === SERIES SETUP === /// a couple of ma's.. maFast = ema(maFastSource, maFastLength) maSlow = sma(maSlowSource, maSlowLength) maSlower = vwma(maSlowerSource, maSlowerLength) rsi = rsi(maSlowerSource, maSlowerLength) // === PLOTTING === fast = plot(maFast, title = "Fast MA", color = red, linewidth = 2, style = line, transp = 30) slow = plot(maSlow, title = "Slow MA", color = green, linewidth = 2, style = line, transp = 30) slower = plot(maSlower, title = "Slower MA", color = teal, linewidth = 2, style = line, transp = 30) // === LOGIC === Basic - simply switches from long to short and vice-versa with each fast-slow MA cross enterLong = maFast> maSlow exitLong = maSlow> maFast // === LOGIC === Complex 1 - switches from long to short and vice-versa with each fast-slow MA cross but additional conditions must be met //enterLong = variance(maFast,maSlowLength) < 0.6 and close[0] > maFast and crossover(maFast, maSlow) and 1.1* maSlow > maSlower and rsi>rsi[2] //exitLong = variance(maFast,maSlowLength) < 0.6 and close[0] < maSlow and crossover(maSlow, maFast) and maSlow/1.1 < maSlower and rsi<rsi[2] // === LOGIC === Complex 2- switches from long to short and vice-versa with each fast-slow MA cross but additional conditions must be met //enterLong = maFast> maSlow and 1.1* maSlow > maSlower and rsi>rsi[1] and close > close[3] //and close > close[2] //exitLong = maSlow> maFast and maSlow/1.1 < maSlower and rsi<rsi[1] and close < close[3] // and close < close[2] // Entry // strategy.entry(id="Long Entry", long=true, when=enterLong) strategy.entry(id="Short Entry", long=false, when=exitLong) // === FILL ==== fill(fast, slow, color = maFast > maSlow ? green : red)