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

전략에 따른 다기간 이동 평균 크로스오버 트렌드

저자:차오장, 날짜: 2024-07-30 10:54:14
태그:EMAMASMASMMARMAWMAVWMA

img

전반적인 설명

이 전략은 다기 이동 평균 크로스오버를 기반으로하는 트렌드-추천 거래 시스템이다. 시장 트렌드를 식별하기 위해 다양한 기간의 네 개의 이동 평균을 활용하고 단기 이동 평균이 중기 이동 평균을 넘을 때 거래 신호를 생성한다. 이 전략은 또한 하향 위험을 제어하기 위해 스톱 로스를 설정하여 위험 관리 메커니즘을 통합한다. 이 접근법은 여러 이동 평균의 조합을 통해 단기 시장 소음을 필터링하면서 중장기 시장 트렌드를 포착하는 것을 목표로 한다.

전략 원칙

이 전략의 핵심 원칙은 여러 이동 평균의 크로스오버를 사용하여 시장 트렌드의 변화를 결정하는 것입니다. 구체적으로:

  1. 4개의 이동평균을 사용합니다. MA1 (20개 기간), MA2 (50개 기간), MA3 (100개 기간), MA4 (200개 기간).
  2. 매출 신호는 MA1가 MA2를 넘어서고 폐쇄 가격은 MA4를 넘어서면 생성됩니다.
  3. 매출 신호는 MA1이 MA2보다 낮을 때 생성되며 폐쇄 가격은 MA4보다 낮습니다.
  4. 엔트리 후, 엔트리 포인트에서 가장 낮은 가격 (장기 포지션) 또는 가장 높은 가격 (단기 포지션) 으로 스톱 로스를 설정합니다.
  5. 거래는 반대 크로스오버 신호가 발생하거나 스톱 로스가 발생하면 종료됩니다.

이 디자인은 전체 트렌드를 확인하기 위해 중장기 (MA2) 및 장기 (MA4) 이동 평균을 사용하여 시장 변화에 대한 단기 이동 평균 (MA1) 의 감수성을 활용하여 잘못된 파업의 위험을 줄입니다.

전략적 장점

  1. 강력한 트렌드 추적 능력: 여러 이동 평균의 조합은 중장기 시장 추세를 효과적으로 포착하여 단기 변동의 영향을 줄입니다.

  2. 강력한 리스크 관리: 동적 스톱 로스 메커니즘은 각 거래에 대한 리스크 노출을 제어하는 데 도움이됩니다.

  3. 높은 유연성: 전략은 사용자가 이동 평균의 종류와 매개 변수를 사용자 정의 할 수 있도록하여 다른 시장과 거래 도구에 최적화 할 수 있습니다.

  4. 좋은 시각화: 거래자는 다양한 색상의 이동 평균과 배경 마커를 통해 시장 조건과 거래 신호를 직관적으로 관찰 할 수 있습니다.

  5. 높은 적응력: 전략은 다양한 시간 프레임 및 거래 도구에 적용 될 수 있으며 광범위한 적용 가능성을 보여줍니다.

  6. 높은 수준의 자동화: 전략은 완전히 자동화되어 인간의 감정적 간섭을 줄일 수 있습니다.

전략 위험

  1. 지연: 이동평균은 본질적으로 지연 지표이며, 초기 트렌드 역전 시 상당한 마감으로 이어질 수 있습니다.

  2. 유동 시장에서 효과적이지 않습니다. 유동 시장에서 유동 평균의 교차가 자주 발생하면 과잉 거래와 연속 손실이 발생할 수 있습니다.

  3. 거짓 파업 위험: 확인을 위해 여러 이동 평균을 사용함에도 불구하고, 단기 변동 중에도 거짓 신호가 발생할 수 있습니다.

  4. 잠재적으로 엄격한 스톱-러스 설정: 입시시 최고/최저 가격을 스톱-러스로 사용하는 것은 변동성 시장에서 조기 출구로 이어질 수 있습니다.

  5. 다른 시장 요인을 무시합니다. 가격과 이동 평균에만 의존하여 전략은 부피와 기본 요소와 같은 다른 중요한 요인을 고려하지 않습니다.

  6. 매개 변수 민감도: 다른 이동 평균 매개 변수는 크게 다른 결과를 초래할 수 있으며, 과도한 적합성의 위험이 있습니다.

전략 최적화 방향

  1. 동적 스톱 로스 도입: 시장 변동성 변화에 적응하는 더 합리적인 스톱 로스 수준을 설정하기 위해 ATR (평균 진정한 범위) 를 사용하는 것을 고려하십시오.

  2. 트렌드 강도 필터링을 추가합니다. ADX (평균 방향 지수) 와 같은 지표를 통합하여 트렌드 강도를 측정하고 강한 트렌드 시장에 위치만 입력하십시오.

  3. 부피 요인을 고려하십시오: 신호 신뢰성을 향상시키기 위해 거래 신호를 확인하는 조건으로 부피를 사용하십시오.

  4. 진입 시기를 최적화하십시오. 이동 평균 크로스오버 이후 확인 기간을 기다립니다. 또는 다른 기술 지표 (RSI와 같은) 와 결합하여 진입 지점을 최적화하십시오.

  5. 후속 스톱 손실을 추가하십시오: 지속적인 트렌드에서 더 많은 이익을 얻기 위해 후속 스톱을 구현하십시오.

  6. 매개 변수 적응: 시장 변동성에 기초한 이동 평균 기간의 동적 조정과 같은 적응 매개 변수 방법을 사용하는 것을 고려하십시오.

  7. 기본 분석을 통합: 잠재적인 비정상적인 변동에 대처하기 위해 중요한 경제 데이터 발표 또는 특별 이벤트 중 전략 행동을 조정합니다.

결론

다기 이동 평균 크로스오버 트렌드 추적 전략은 고전적이고 효과적인 양적 거래 방법이다. 여러 이동 평균을 결합함으로써 중장기 트렌드를 포착하고 단기 잡음을 어느 정도 필터링할 수 있다. 이 전략의 핵심 장점은 트렌드에 대한 민감성과 전체적인 위험 관리에 있다. 그러나 순전히 기술 분석에 기반한 시스템으로서, 차이는 시장에서 지연 및 저성능과 같은 내재적인 결점에도 직면하고 있다.

미래 최적화 방향은 신호 품질 향상, 위험 관리 강화 및 전략 적응력을 높이는 데 중점을 두어야 한다. 더 많은 기술적 지표와 시장 요인을 도입함으로써 더 포괄적이고 견고한 거래 시스템을 구축 할 수 있다. 한편, 전략 매개 변수 최적화 및 적응 메커니즘은 성능 향상에 핵심이다.

전체적으로, 이 전략은 트렌드 추후 거래에 대한 탄탄한 기본 틀을 제공한다. 지속적인 최적화와 개선을 통해 효율적이고 신뢰할 수 있는 자동화 거래 시스템이 될 가능성이 있다. 그러나, 투자자들은 이 전략을 사용 할 때 여전히 시장 조건을 신중하게 평가하고 개인의 위험 선호도와 투자 목표에 따라 적절한 조정을 해야 한다.


//@version=5
strategy("Moving Average Ribbon with Orders", shorttitle="MA Ribbon Orders", overlay=true)

// Hàm tính toán các loại MA
ma(source, length, type) =>
    type == "SMA" ? ta.sma(source, length) :
     type == "EMA" ? ta.ema(source, length) :
     type == "SMMA (RMA)" ? ta.rma(source, length) :
     type == "WMA" ? ta.wma(source, length) :
     type == "VWMA" ? ta.vwma(source, length) :
     na

// MA1
show_ma1   = input(true   , "MA №1", inline="MA #1")
ma1_type   = input.string("SMA"  , ""     , inline="MA #1", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma1_source = input(close  , ""     , inline="MA #1")
ma1_length = input.int(20     , ""     , inline="MA #1", minval=1)
ma1_color  = input(color.new(color.yellow, 0), ""     , inline="MA #1")
ma1 = ma(ma1_source, ma1_length, ma1_type)
plot(show_ma1 ? ma1 : na, color = ma1_color, title="MA №1")

// MA2
show_ma2   = input(true   , "MA №2", inline="MA #2")
ma2_type   = input.string("SMA"  , ""     , inline="MA #2", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma2_source = input(close  , ""     , inline="MA #2")
ma2_length = input.int(50     , ""     , inline="MA #2", minval=1)
ma2_color  = input(color.new(color.orange, 0), ""     , inline="MA #2")
ma2 = ma(ma2_source, ma2_length, ma2_type)
plot(show_ma2 ? ma2 : na, color = ma2_color, title="MA №2")

// MA3
show_ma3   = input(true   , "MA №3", inline="MA #3")
ma3_type   = input.string("SMA"  , ""     , inline="MA #3", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma3_source = input(close  , ""     , inline="MA #3")
ma3_length = input.int(100    , ""     , inline="MA #3", minval=1)
ma3_color  = input(color.new(color.red, 0), ""     , inline="MA #3")
ma3 = ma(ma3_source, ma3_length, ma3_type)
plot(show_ma3 ? ma3 : na, color = ma3_color, title="MA №3")

// MA4
show_ma4   = input(true   , "MA №4", inline="MA #4")
ma4_type   = input.string("SMA"  , ""     , inline="MA #4", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma4_source = input(close  , ""     , inline="MA #4")
ma4_length = input.int(200    , ""     , inline="MA #4", minval=1)
ma4_color  = input(color.new(color.maroon, 0), ""     , inline="MA #4")
ma4 = ma(ma4_source, ma4_length, ma4_type)
plot(show_ma4 ? ma4 : na, color = ma4_color, title="MA №4")

// Điều kiện điểm MUA và BAN
buy_signal = ta.crossover(ma1, ma2) and close > ma4
sell_signal = ta.crossunder(ma1, ma2) and close < ma4

// Vẽ các điểm MUA và BAN
plotshape(series=buy_signal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="MUA")
plotshape(series=sell_signal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="BAN")

// Quản lý trạng thái lệnh
var float entry_price_long = na
var float stop_price_long = na
var float entry_price_short = na
var float stop_price_short = na

if (buy_signal)
    entry_price_long := close
    stop_price_long := low
    strategy.entry("Long", strategy.long)

if (sell_signal)
    entry_price_short := close
    stop_price_short := high
    strategy.entry("Short", strategy.short)

// Điều kiện thoát lệnh
exit_condition_long = ta.crossunder(ma1, ma2) or close < stop_price_long
exit_condition_short = ta.crossover(ma1, ma2) or close > stop_price_short

if (exit_condition_long)
    strategy.exit("Exit Long", "Long", stop=stop_price_long)
    strategy.close("Long")

if (exit_condition_short)
    strategy.exit("Exit Short", "Short", stop=stop_price_short)
    strategy.close("Short")

// Vẽ vùng MUA và BAN
var float buy_price = na
var float sell_price = na

if (buy_signal)
    buy_price := close

if (sell_signal)
    sell_price := close

bgcolor(buy_price and na(sell_price) ? color.new(color.green, 90) : na)
bgcolor(sell_price and na(buy_price) ? color.new(color.red, 90) : na)


관련

더 많은