3개 이동 평균 교차 전략


생성 날짜: 2023-11-06 09:48:33 마지막으로 수정됨: 2023-11-06 09:48:33
복사: 0 클릭수: 661
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

3개 이동 평균 교차 전략

개요

삼평선 교차 전략은 다른 시간 주기 이동 평균의 교차를 구매 및 판매 신호로 사용하여 트렌드 추적 전략에 속한다. 이 전략은 단기 이동 평균, 중기 이동 평균 및 장기 이동 평균을 포함한 세 가지 이동 평균을 사용하여 거래 신호를 형성합니다.

전략 원칙

이 전략은 먼저 단기 이동 평균 (기본 7일), 중기 이동 평균 (기본 25일), 장기 이동 평균 (기본 99일) 을 계산하고 다음 규칙에 따라 거래 신호를 생성합니다.

  1. 단기 이동 평균에서 중기 이동 평균을 통과할 때 구매 신호가 발생한다.

  2. 단기 이동 평균 아래에서 중기 이동 평균을 통과할 때, 판매 신호가 발생한다.

  3. 단기 이동 평균 위에 장기 이동 평균을 뚫을 때 빠른 구매 신호가 발생한다.

  4. 단기 이동 평균 아래에서 장기 이동 평균을 뚫을 때, 빠른 판매 신호가 발생한다.

이 전략은, 단기 이동 평균 상의 중간 이동 평균을 가로지르는 것은 시장의 추세가 상승으로 전환되어 구매 신호를 생성하는 것을 나타냅니다. 단기 이동 평균 아래의 중간 이동 평균을 가로지르는 것은 시장의 추세가 하락으로 전환되어 판매 신호를 생성하는 것을 나타냅니다. 마찬가지로, 단기 이동 평균과 장기 이동 평균의 교차는 긴 선의 추세 변화를 포착하기 위해 빠른 거래 신호를 생성합니다.

우위 분석

  • 전략적 논리는 간단하고 명확하며, 이해하기 쉽고 구현하기 쉽습니다.
  • 다중 시간 주기의 분석을 사용하여 시장 추세의 변화를 효과적으로 포착할 수 있다.
  • 이동 평균의 주기를 조정하여 전략을 최적화 할 수 있습니다.
  • 시각화된 교차 신호, 직관적으로 트렌드의 변화를 반영한다.

위험 분석

  • 이동 평균은 추세 전환점을 놓칠 수 있는 지연성이 있다.
  • 이 시장에서는 짧은 선에 긴 선을 쓰는 가짜 신호가 너무 많을 수 있습니다.
  • 허공 시장에서는 짧은 선 아래에서 긴 선을 쓰는 가짜 신호가 너무 많을 수 있다.
  • 급격한 구매 및 판매 신호는 너무 민감할 수 있으며 거래 횟수와 수수료를 증가시킬 수 있습니다.

이동 평균 주기를 적절히 조정하거나 필터링 조건을 추가하여 최적화하여 가짜 신호를 줄일 수 있다. 빠른 거래 주기를 적절히 단축하여 거래 빈도를 줄일 수도 있다.

최적화 방향

  • 필터링 조건을 추가하여, 예를 들어, 거래량이나 가격 변화의 비율이 큰 경우에만 신호를 생성합니다.
  • MACD, KDJ 등과 같은 다른 지표 필터와 결합하여 명확한 추세가 없는 경우 잘못된 거래를 피하십시오.
  • 이동 평균 주기의 조합을 최적화하여 가짜 신호를 감소시킨다.
  • 다단계와 빈단계 시장을 구분하고, 구매와 판매의 매개 변수를 최적화한다.
  • 거래 비용을 고려하고, 빠른 거래의 매개 변수를 조정하고, 거래 빈도를 제어한다.

요약하다

삼평선 교차전략은 전체적으로 간단하고 직접적이며, 다른 시간 주기의 평행선의 교차를 통해 트렌드 방향을 결정하여 거래 신호를 생성한다. 이 전략은 구현하기 쉽고, 변수를 조정하는 것이 유연하며, 트렌드의 변화를 잡을 수 있다. 그러나 이동 평균 지연의 문제가 있으며, 가짜 신호가 너무 많은 위험이 있다. 필터 조건을 추가하고, 변수 조합을 최적화하는 방법 등으로 전략의 효과를 개선할 수 있다.

전략 소스 코드
/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dadashkadir

//@version=4
strategy("Üç Hareketli Ortalama Str.", overlay=true, initial_capital=10000, commission_value=0.047, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0, calc_on_order_fills=true)

kisa = input(title = "Kısa Vade - Gün", defval = 7,  minval = 1)
orta = input(title = "Orta Vade - Gün", defval = 25, minval = 1)
uzun = input(title = "Uzun Vade - Gün", defval = 99, minval = 1)

sma7  = sma(close, kisa)
sma25 = sma(close, orta)
sma99  = sma(close, uzun)

alTrend  = plot (sma7, color=#2323F1, linewidth=2, title="Har.Ort. Kısa Vade", transp=0)
satTrend = plot (sma25, color=#FF0C00, linewidth=3, title="Har.Ort. Orta Vade", transp=0)
ort99    = plot (sma99, color=#DFB001, linewidth=3, title="Har.Ort. Uzun Vade", transp=0)

zamanaralik = input (2020, title="Backtest Başlangıç Tarihi")

al  = crossover (sma7, sma25) and zamanaralik <= year
sat = crossover (sma25, sma7) and zamanaralik <= year

hizlial = crossover (sma7, sma99) and zamanaralik <= year
hizlisat = crossover (sma99, sma7) and zamanaralik <= year

alkosul  = sma7 >= sma25
satkosul = sma25 >= sma7

hizlialkosul  = sma7 >= sma99
hizlisatkosul = sma99 >= sma7

plotshape(al,  title = "Buy",  text = 'Al',  style = shape.labelup,   location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sat, title = "Sell", text = 'Sat', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, transp = 0, size = size.tiny)

plotshape(hizlial,  title = "Hızlı Al",  text = 'Hızlı Al',  style = shape.labelup,   location = location.belowbar, color= color.blue, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(hizlisat, title = "Hızlı Sat", text = 'Hızlı Sat', style = shape.labeldown, location = location.abovebar, color= #6106D6 , textcolor = color.white, transp = 0, size = size.tiny)

fill (alTrend, satTrend, color = sma7 >= sma25? #4DFF00 : #FF0C00, transp=80, title="Al-Sat Aralığı")
//fill (ort99, satTrend, color = sma7 >= sma25? #6106D6 : color.blue, transp=80, title="Hızlı Al-Sat Aralığı")

if (al)
    strategy.entry("LONG", strategy.long)
if (sat)
    strategy.entry("SHORT", strategy.short)
//if (hizlial)
//    strategy.entry("My Short Entry Id", strategy.long)
//if (hizlisat)
//    strategy.entry("My Short Entry Id", strategy.short)