
이 전략은 복합적인 기술 분석 도구로, 여러 평평한 이동 평균 (SMMA), 트렌드 인식, 그래프 형태 인식 및 거래 시간 분석을 결합한다. 그것은 거래자가 시장 추세를 식별하고, 잠재적인 반향점을 발견하고, 특정 거래 시간 내에 거래를 수행하는 것을 돕기 위해 고안되었다. 이 전략의 핵심은 시장 방향을 판단하기 위해 서로 다른 주기의 SMMA를 사용하며, “3 라인 스트라이크”와 “침식 형태”의 두 가지 그래프 형태를 사용하여 거래 신호를 생성한다.
여러 평평한 이동 평균 ((SMMA): 전략은 4 개의 SMMA를 사용한다 ((21 기간, 50 기간, 100 기간 및 200 기간), 다른 시간 프레임에 시장 추세를 평가하기 위해. 이 평평선은 거래자가 단기, 중기 및 장기 시장 움직임을 이해하는 데 도움이됩니다.
트렌드 채우기: 전략은 단기 가격 ((2기 EMA) 과 200기 SMMA의 관계를 비교하여, 색으로 채우기 배경으로 현재의 트렌드를 직관적으로 표시한다. 녹색 배경은 상향 경향을 나타내고, 빨간 배경은 하향 경향을 나타낸다.
그라피식 인식:
거래 시간 분석: 사용자가 특정 거래 시간을 정의하고 그 시간을 차트에 강조하여 표시할 수 있습니다. 이것은 거래자가 가장 활발한 거래 시간에 집중하는 데 도움이됩니다.
거래 신호 생성:
다차원 분석: 여러 기술 지표와 분석 방법을 결합하여 더 정보에 입각한 거래 결정을 내리는 데 도움이되는 포괄적인 시장 관점을 제공합니다.
트렌드 확인: 여러 시간 프레임의 SMMA를 사용하여, 시장의 흐름을 더 정확하게 확인하고, 가짜 신호를 줄일 수 있다.
역전 인식: 특정 그래프 형태를 식별하여 잠재적인 시장 역전을 조기에 포착하여 거래자에게 입출장 기회를 제공합니다.
시각적 직관: 색상 채우기 및 그래픽 표기법을 사용하여 시장 상태와 잠재적인 신호를 한눈에 볼 수 있으며 신속하게 분석 할 수 있습니다.
유연성: 사용자가 다른 거래 스타일과 시장 조건에 맞게 평균 주기, 거래 시간 등 다양한 매개 변수를 사용자 정의 할 수 있습니다.
시간 관리: 특정 거래 시간을 밝게 표시하여 거래자가 거래 시간을 더 잘 관리하고 가장 잠재적인 시장 시간에 집중할 수 있도록 도와줍니다.
뒤처진성: 이동 평균은 본질적으로 뒤처진 지표이며, 빠르게 변화하는 시장에서 전환점을 적시에 잡을 수 없습니다.
과도한 의존 형태: 모든 형태가 시장의 역전을 정확하게 예측할 수 없기 때문에 과잉 의존 그래프 형태는 잘못된 판단을 초래할 수 있다.
가짜 돌파 위험: 수평 시장에서 가격이 종종 평균선을 통과하여 가짜 신호를 생성 할 수 있습니다.
변수 민감성: 전략의 성과는 선택된 변수에 크게 의존하며, 다른 시장 조건에 따라 자주 조정될 수 있다.
기본을 무시하는 것: 순수 기술 분석 방법은 중요한 기본 요소를 무시할 수 있으며, 중요한 뉴스 또는 사건이 발생했을 때 잘못된 판단을 할 수 있습니다.
과도한 거래: 높은 변동성이 있는 시장에서, 전략은 과도한 거래 신호를 생성하여 거래 비용을 증가시키고 과도한 거래로 이어질 수 있습니다.
이러한 위험을 줄이기 위해 다음과 같은 것이 권장됩니다.
동적 파라미터 조정: 평균선 주기의 자율 적응을 구현하고, 시장의 변동성에 따라 SMMA의 주기를 자동으로 조정하여 다른 시장 조건에 적응한다.
신호 확인 메커니즘: 거래 신호를 확인하기 위해 추가 기술 지표 (RSI, MACD 등) 를 도입하여 신호의 신뢰성을 높인다.
변동성 필터: ATR (Average True Range) 지표를 추가하여 낮은 변동성 기간 동안 약한 신호를 필터링하고, 시장에서 충분한 동력이있을 때만 거래한다.
시장 상태 분류: 현재 시장 상태를 분류하는 알고리즘을 개발한다 (트렌드,横盘, 높은 변동 등) 그리고 다른 상태에 대해 다른 거래 전략을 사용합니다.
스톱 로드 최적화: ATR 또는 최근 지지/저항 수준을 사용하여 스톱 로드를 설정하는 것과 같은 동적인 스톱 로드를 구현하여 위험을 더 잘 관리합니다.
거래량 분석: 거래량 데이터를 통합하고, 거래량이 확인된 경우에만 거래 신호를 실행하여 신호의 신뢰성을 높인다.
시간 가중: 역사적 데이터 분석의 성공률에 따라 서로 다른 시기의 신호에 서로 다른 무게를 부여한다.
기계 학습 통합: 기계 학습 알고리즘을 사용하여 매개 변수 선택 및 신호 생성 프로세스를 최적화하여 전략의 적응성과 성능을 향상시킵니다.
다중 시간 프레임 분석: 더 큰 시장 추세와 일치하는 거래 방향을 보장하기 위해 여러 시간 프레임의 신호를 고려하여 전략을 확장합니다.
자금 관리 최적화: 시장의 변동성과 계정 리스크에 따라 매 거래의 규모를 결정하는 역동적인 포지션 크기를 구현합니다.
이러한 최적화 방향은 전략의 안정성, 적응성 및 전반적인 성능을 향상시키는 것을 목표로합니다. 이러한 개선을 통해 전략은 다양한 시장 환경에 더 잘 대응하고 수익성을 높이고 위험을 줄일 수 있습니다.
“다중 평균선 트렌드 추적 및 역전 패턴 식별 전략”은 여러 가지 첨단 거래 기술을 결합한 종합적인 기술 분석 도구입니다. 이 전략은 다중 평평한 이동 평균, 트렌드 식별, 그래프 형태 분석 및 거래 시간 관리를 사용하여 거래자에게 포괄적인 시장 분석 프레임 워크를 제공합니다.
전략의 주요 장점은 다차원적인 분석 방법과 시각적으로 직관적인 표현 형태에 있습니다. 이는 거래자가 시장 상태를 빠르게 이해하고 정보에 입각한 결정을 내릴 수 있도록 해줍니다. 그러나 모든 거래 전략과 마찬가지로 지연 및 기술 지표에 대한 과도한 의존과 같은 몇 가지 고유한 위험에 직면합니다.
전략의 효과를 더욱 향상시키기 위해, 여러 가지 최적화 방향을 고려할 수 있습니다. 동적 매개 변수를 조정하고, 추가 확인 메커니즘을 도입하고, 기계 학습과 같은 더 고급 기술을 통합하는 등이 포함됩니다. 이러한 최적화는 전략이 다양한 시장 환경에 더 잘 적응하고, 안정성과 수익성을 향상시키는 데 도움이 될 수 있습니다.
마지막으로, 어떤 전략도 만능이 아니라는 것을 기억하는 것이 중요합니다. 성공적인 거래는 좋은 전략뿐만 아니라 엄격한 위험 관리, 지속적인 시장 학습 및 전략의 지속적인 정리를 필요로합니다. 거래자는이 전략을 전체 거래 시스템의 일부로 사용하여 다른 분석 방법과 개인 시장 통찰력과 결합하여 최종 거래 결정을 내립니다.
/*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