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

다중 이동 평균 추세 및 반전 패턴 인식 전략

저자:차오장, 날짜: 2024-07-30 16:30:26
태그:SMASMMAEMA

img

전반적인 설명

이 전략은 여러 매끄러운 이동 평균 (SMMA), 트렌드 식별, 촛불 패턴 인식 및 거래 세션 분석을 결합한 포괄적인 기술 분석 도구입니다. 이는 거래자가 시장 추세를 식별하고 잠재적 인 역전 지점을 감지하고 특정 거래 세션 내에서 거래를 수행하는 것을 돕는 것을 목표로합니다. 전략의 핵심은 시장 방향을 결정하기 위해 다른 기간의 SMMA를 사용하는 데 있으며, 거래 신호를 생성하기 위해 3 라인 스트라이크 엔글핑 촛불 패턴을 활용합니다.

전략 원칙

  1. 다중 매끄러운 이동 평균 (SMMA): 전략은 다양한 기간 동안 시장 추세를 평가하기 위해 4 개의 SMMA (21 기간, 50 기간, 100 기간 및 200 기간) 을 사용합니다. 이러한 이동 평균은 거래자가 단기, 중기 및 장기 시장 추세를 이해하는 데 도움이됩니다.

  2. 트렌드 포일: 전략은 단기 가격 (2주기 EMA) 와 200주기 SMMA 사이의 관계를 기반으로 색을 채우며 현재의 트렌드를 시각적으로 표시합니다. 녹색 배경은 상승 추세를 나타냅니다. 빨간색은 하락 추세를 나타냅니다.

  3. 촛불 패턴 인식:

    • 3 라인 스트라이크 패턴: 같은 방향으로 세 개의 촛불이 연속적으로 나타났을 때 역전되는 촛불을 식별하며, 잠재적으로 트렌드 반전을 신호합니다.
    • 포용 패턴: 이전 촛불을 완전히 포용하는 큰 촛불을 식별하고, 또한 잠재적으로 트렌드 반전을 신호합니다.
  4. 거래 세션 분석: 사용자가 특정 거래 세션을 정의하고 차트에 이러한 기간을 강조 할 수 있습니다. 이것은 거래자가 가장 활동적인 거래 시간에 집중하는 데 도움이됩니다.

  5. 무역 신호 생성:

    • 긴 신호: 상승세 3 라인 스트라이크 또는 상승세 포식 패턴이 나타나면 발생한다.
    • 짧은 신호: 하향 3 라인 스트라이크 또는 하향 포식 패턴이 나타나면 발사됩니다.

전략적 장점

  1. 다차원 분석: 여러 가지 기술 지표와 분석 방법을 결합하여 포괄적인 시장 관점을 제공하여 더 정보화된 거래 결정을 촉진합니다.

  2. 트렌드 확인: 여러 시간 프레임에 걸쳐 SMMA를 사용하면 더 정확한 트렌드 확인이 가능하며 잘못된 신호를 줄일 수 있습니다.

  3. 역전 식별: 특정 촛불 패턴을 인식함으로써 잠재적인 시장 역전을 조기에 파악하여 거래자에게 입출구 기회를 제공합니다.

  4. 시각적 직관성: 색상 채식 및 그래픽 마커의 사용은 시장 상태와 잠재적 신호를 쉽게 식별하여 빠른 분석을 촉진합니다.

  5. 유연성: 사용자들이 다른 거래 스타일과 시장 조건에 적응하기 위해 이동 평균 기간과 거래 세션과 같은 다양한 매개 변수를 사용자 정의 할 수 있습니다.

  6. 시간 관리: 특정 거래 세션을 강조함으로써 거래자가 가장 잠재적 인 시장 기간에 집중하여 거래 시간을 더 잘 관리하는 데 도움이됩니다.

전략 위험

  1. 뒤떨어진 성격: 이동 평균은 본질적으로 뒤떨어진 지표이며 빠르게 변화하는 시장에서 전환점을 적시에 포착하지 않을 수 있습니다.

  2. 패턴에 대한 과도한 의존: 촛불 패턴에 대한 과도한 의존은 모든 패턴이 시장 반전을 정확하게 예측하지 않기 때문에 잘못된 판단으로 이어질 수 있습니다.

  3. 가짜 브레이크오웃 위험: 유동 시장에서 가격은 종종 이동 평균을 넘어서 잘못된 신호를 생성 할 수 있습니다.

  4. 매개 변수 민감성: 전략의 성과는 선택된 매개 변수에 크게 의존하며, 이는 다른 시장 조건에서 빈번한 조정이 필요할 수 있습니다.

  5. 기본적 요소의 방치: 순수 기술 분석 방법은 중요한 기본적 요소를 간과하여 중요한 뉴스 또는 사건 중에 잘못된 판단으로 이어질 수 있습니다.

  6. 과잉 거래: 매우 변동적인 시장에서 전략은 너무 많은 거래 신호를 생성하여 거래 비용을 증가시키고 잠재적으로 과잉 거래로 이어질 수 있습니다.

이러한 위험을 완화하기 위해 다음과 같은 것이 권장됩니다.

  • 신호를 확인하기 위해 다른 기술적 지표와 근본 분석을 결합합니다.
  • 적절한 스톱 로스 및 수익 목표를 사용하여 위험을 관리합니다.
  • 최적의 매개 변수를 찾기 위해 다른 시장 조건에서 전략을 역 테스트하십시오.
  • 거짓 신호를 줄이기 위해 신호 필터를 적용하는 것을 고려하십시오.
  • 중요한 경제 데이터 발표와 시장 이벤트에 주의를 기울여야 합니다.

전략 최적화 방향

  1. 동적 매개 변수 조정: 다른 시장 조건에 맞게 시장 변동성에 따라 자동으로 조정되는 적응 가능한 이동 평균 기간을 구현합니다.

  2. 신호 확인 메커니즘: 신호 신뢰성을 높이기 위해 거래 신호를 확인하기 위해 추가 기술 지표 (RSI, MACD 등) 를 도입합니다.

  3. 변동성 필터: 낮은 변동성 기간 동안 약한 신호를 필터링하기 위해 ATR (평균 진정한 범위) 표시기를 통합하고 시장이 충분한 추진력을 가질 때만 거래합니다.

  4. 시장 상태 분류: 현재 시장 상태 (트렌드, 범위, 높은 변동성 등) 를 분류하는 알고리즘을 개발하고 다른 상태에 대한 다른 거래 전략을 채택합니다.

  5. 스톱 로스 최적화: 더 나은 리스크 관리를 위해 스톱 로스 포인트를 설정하기 위해 ATR 또는 최근의 지원/저항 수준을 사용하는 것과 같은 동적 스톱 로스를 구현합니다.

  6. 볼륨 분석: 볼륨 데이터를 통합하여 신호 신뢰성을 향상시키기 위해 볼륨에 의해 확인된 경우에만 거래 신호를 실행합니다.

  7. 시간 가중: 다른 시간대에 신호에 다른 무게를 부여하여 다른 시간대에 성공률을 결정하기 위해 역사적 데이터를 분석합니다.

  8. 기계 학습 통합: 매개 변수 선택 및 신호 생성 프로세스를 최적화하기 위해 기계 학습 알고리즘을 사용하여 전략 적응성과 성능을 향상시킵니다.

  9. 멀티 타임프레임 분석: 더 큰 시장 추세와 거래 방향이 일치하는지 확인하기 위해 여러 시간 프레임의 신호를 고려하기 위해 전략을 확장하십시오.

  10. 자본 관리 최적화: 각 거래의 크기를 결정하기 위해 시장 변동성과 계정 위험을 기반으로 동적 위치 크기 조정을 구현합니다.

이러한 최적화 방향은 전략의 안정성, 적응력 및 전반적인 성능을 향상시키는 것을 목표로합니다. 이러한 개선으로 전략은 다른 시장 환경에 더 잘 대처하고 수익성을 높이고 위험을 줄일 수 있습니다.

결론

다중 이동 평균 트렌드 추후 및 역전 패턴 인식 전략은 여러 고급 거래 기술을 결합한 포괄적인 기술 분석 도구입니다. 여러 매끄러운 이동 평균, 트렌드 식별, 촛불 패턴 분석 및 거래 세션 관리를 활용함으로써이 전략은 거래자에게 시장 분석을위한 포괄적인 틀을 제공합니다. 전체 시장 추세를 파악하는 데 도움이 될뿐만 아니라 잠재적 인 역전 지점을 포착하여 거래 결정에 귀중한 참조를 제공합니다.

이 전략의 주요 장점은 다차원 분석 접근법과 시각적으로 직관적인 프레젠테이션에 있으며, 거래자가 시장 상황을 신속하게 이해하고 정보에 기반한 결정을 내릴 수 있습니다. 그러나 모든 거래 전략과 마찬가지로 후진 지표 및 기술 지표에 대한 과도한 의존과 같은 일부 고유한 위험에 직면합니다.

전략의 효율성을 더욱 향상시키기 위해 동적 매개 변수 조정, 추가 확인 메커니즘 도입 및 기계 학습과 같은 더 고급 기술 통합을 포함한 여러 최적화 방향이 고려 될 수 있습니다. 이러한 최적화는 전략이 다른 시장 환경에 더 잘 적응하여 안정성과 수익성을 향상시키는 데 도움이 될 수 있습니다.

마지막으로, 어떤 전략도 무실하다는 것을 기억하는 것이 중요합니다. 성공적인 거래는 좋은 전략뿐만 아니라 엄격한 위험 관리, 지속적인 시장 학습 및 전략의 지속적인 정제에도 달려 있습니다. 거래자는이 전략을 전반적인 거래 시스템의 일부로 사용하여 최종 거래 결정을 내리기 위해 다른 분석 방법과 개인 시장 통찰력과 결합해야합니다.


/*backtest
start: 2024-06-29 00:00:00
end: 2024-07-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="TMA Overlay Strategy", shorttitle="TMA Overlay", overlay=true)

// ### Four Smoothed Moving Averages

len1 = input.int(21, minval=1, title="Length 1", group="Smoothed MA Inputs")
src1 = close
smma1 = 0.0
sma_1 = ta.sma(src1, len1)
smma1 := na(smma1[1]) ? sma_1 : (smma1[1] * (len1 - 1) + src1) / len1
plot(smma1, color=color.white, linewidth=2, title="21 SMMA")

len2 = input.int(50, minval=1, title="Length 2", group="Smoothed MA Inputs")
src2 = close
smma2 = 0.0
sma_2 = ta.sma(src2, len2)
smma2 := na(smma2[1]) ? sma_2 : (smma2[1] * (len2 - 1) + src2) / len2
plot(smma2, color=color.new(#6aff00, 0), linewidth=2, title="50 SMMA")

h100 = input.bool(true, title="Show 100 Line", group="Smoothed MA Inputs")
len3 = input.int(100, minval=1, title="Length 3", group="Smoothed MA Inputs")
src3 = close
smma3 = 0.0
sma_3 = ta.sma(src3, len3)
smma3 := na(smma3[1]) ? sma_3 : (smma3[1] * (len3 - 1) + src3) / len3
sma3plot = plot(h100 ? smma3 : na, color=color.new(color.yellow, 0), linewidth=2, title="100 SMMA")

len4 = input.int(200, minval=1, title="Length 4", group="Smoothed MA Inputs")
src4 = close
smma4 = 0.0
sma_4 = ta.sma(src4, len4)
smma4 := na(smma4[1]) ? sma_4 : (smma4[1] * (len4 - 1) + src4) / len4
sma4plot = plot(smma4, color=color.new(#ff0500, 0), linewidth=2, title="200 SMMA")

// Trend Fill
trendFill = input.bool(true, title="Show Trend Fill", group="Smoothed MA Inputs") 
ema2 = ta.ema(close, 2)
ema2plot = plot(ema2, color=color.new(#2ecc71, 100), linewidth=1, title="EMA(2)", editable=false)
fill(ema2plot, sma4plot, color=color.new(ema2 > smma4 and trendFill ? color.green : color.red, 85), title="Trend Fill")

// End ###

// ### 3 Line Strike
bearS = input.bool(true, title="Show Bearish 3 Line Strike", group="3 Line Strike")
bullS = input.bool(true, title="Show Bullish 3 Line Strike", group="3 Line Strike")

bearSig = close[3] > open[3] and close[2] > open[2] and close[1] > open[1] and close < open[1]
bullSig = close[3] < open[3] and close[2] < open[2] and close[1] < open[1] and close > open[1]

plotshape(bullS ? bullSig : na, style=shape.triangleup, color=color.green, location=location.belowbar, size=size.small, text="3s-Bull", title="3 Line Strike Up")
plotshape(bearS ? bearSig : na, style=shape.triangledown, color=color.red, location=location.abovebar, size=size.small, text="3s-Bear", title="3 Line Strike Down")

// End ###

//### Engulfing Candles
bearE = input.bool(true, title="Show Bearish Big A$$ Candles", group="Big A$$ Candles")
bullE = input.bool(true, title="Show Bullish Big A$$ Candles", group="Big A$$ Candles")

openBarPrevious = open[1]
closeBarPrevious = close[1]
openBarCurrent = open
closeBarCurrent = close

bullishEngulfing = openBarCurrent <= closeBarPrevious and openBarCurrent < openBarPrevious and closeBarCurrent > openBarPrevious
bearishEngulfing = openBarCurrent >= closeBarPrevious and openBarCurrent > openBarPrevious and closeBarCurrent < openBarPrevious

plotshape(bullE ? bullishEngulfing : na, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny, title="Big Ass Candle Up")
plotshape(bearE ? bearishEngulfing : na, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, title="Big Ass Candle Down")

alertcondition(bullishEngulfing, title="Bullish Engulfing", message="[CurrencyPair] [TimeFrame], Bullish candle engulfing previous candle")
alertcondition(bearishEngulfing, title="Bearish Engulfing", message="[CurrencyPair] [TimeFrame], Bearish candle engulfing previous candle")

// End ###

// ### Trading Session
ts = input.bool(true, title="Show Trade Session", group="Trade Session")

tzOffset = input.int(0, title="Timezone Offset (hours from UTC)", group="Trade Session")
label = input.string("CME Open", title="Label", tooltip="For easy identification", group="Trade Session")

startHour = input.int(7, title="Analysis Start Hour", minval=0, maxval=23, group="Trade Session")
startMinute = input.int(0, title="Analysis Start Minute", minval=0, maxval=59, group="Trade Session")

startHour2 = input.int(8, title="Session Start Hour", minval=0, maxval=23, group="Trade Session")
startMinute2 = input.int(30, title="Session Start Minute", minval=0, maxval=59, group="Trade Session")
endHour2 = input.int(12, title="Session End Hour", minval=0, maxval=23, group="Trade Session")
endMinute2 = input.int(0, title="Session End Minute", minval=0, maxval=59, group="Trade Session")

rangeColor = input.color(#1976d21f, title="Color", group="Trade Session")
showMon = input.bool(true, title="Monday", group="Trade Session")
showTue = input.bool(true, title="Tuesday", group="Trade Session")
showWed = input.bool(true, title="Wednesday", group="Trade Session")
showThu = input.bool(true, title="Thursday", group="Trade Session")
showFri = input.bool(true, title="Friday", group="Trade Session")
showSat = input.bool(false, title="Saturday", group="Trade Session")
showSun = input.bool(false, title="Sunday", group="Trade Session")

startTime = timestamp("UTC", year(time), month(time), dayofmonth(time), startHour - tzOffset, startMinute)
endTime = timestamp("UTC", year(time), month(time), dayofmonth(time), endHour2 - tzOffset, endMinute2)

active = (startTime <= time and time <= endTime and ts) and ((dayofweek == dayofweek.monday and showMon) or (dayofweek == dayofweek.tuesday and showTue) or (dayofweek == dayofweek.wednesday and showWed) or (dayofweek == dayofweek.thursday and showThu) or (dayofweek == dayofweek.friday and showFri) or (dayofweek == dayofweek.saturday and showSat) or (dayofweek == dayofweek.sunday and showSun))
bgcolor(color=active ? rangeColor : na, title="Session Background")

startTime2 = timestamp("UTC", year(time), month(time), dayofmonth(time), startHour2 - tzOffset, startMinute2)
endTime2 = timestamp("UTC", year(time), month(time), dayofmonth(time), endHour2 - tzOffset, endMinute2)

active2 = (startTime2 <= time and time <= endTime2 and ts) and ((dayofweek == dayofweek.monday and showMon) or (dayofweek == dayofweek.tuesday and showTue) or (dayofweek == dayofweek.wednesday and showWed) or (dayofweek == dayofweek.thursday and showThu) or (dayofweek == dayofweek.friday and showFri) or (dayofweek == dayofweek.saturday and showSat) or (dayofweek == dayofweek.sunday and showSun))
bgcolor(color=active2 ? rangeColor : na, title="Session Background")

// End ###

// Trading Strategy
longCondition = bullSig or bullishEngulfing
shortCondition = bearSig or bearishEngulfing

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

// eof


관련

더 많은