스마트 트레이딩 모멘텀 이동 평균 하이브리드 전략

ATR SMA 风险管理 蜡烛图形态识别 均线交叉 仓位管理 回报比 动量指标 波动率
생성 날짜: 2025-04-03 10:42:22 마지막으로 수정됨: 2025-04-03 10:42:22
복사: 3 클릭수: 309
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

스마트 트레이딩 모멘텀 이동 평균 하이브리드 전략 스마트 트레이딩 모멘텀 이동 평균 하이브리드 전략

개요

스마트 트레이딩 다이어그램 믹스 전략 (Smart Trading Dynamic Average Mixed Strategy) 은 기술 분석 지표와 그래프 모형 식별을 결합한 양적 거래 전략이다. 이 전략은 간단한 이동 평균 (SMA) 교차 신호, 그래프 모형 식별 및 변동률 조정의 중지 지점을 사용하여 시장 진입 및 출구 지점을 결정한다. 이 전략은 또한 위험 관리와 정확한 위치 계산 방법을 결합하여 각 거래의 위험 비율과 위험 수익 비율을 설정하여 거래 성과를 최적화한다.

전략 원칙

이 전략의 핵심 원칙은 거래 신호의 신뢰성을 강화하기 위해 다중 기술 분석 방법의 조합을 기반으로합니다. 전략은 다음과 같은 몇 가지 핵심 구성 요소에 주로 의존합니다.

  1. 이동 평균의 크로스13주기 및 5주기 간단한 이동 평균 (SMA) 의 교차를 사용하여 구매 및 판매 신호를 유발합니다. 빠른 이동 평균 (단기) 이 느린 이동 평균 (장기) 을 상향으로 가로질러 구매 신호를 생성합니다. 빠른 이동 평균이 느린 이동 평균을 아래로 가로질러 판매 신호를 생성합니다.

  2. 그래프 형식 인식이 전략은 여러 가지 그래프 형태를 인식하는 기능을 통합합니다. 여기에는 삼키기 형태, 삼키기 형태, 줄, 역 줄, 임신 선 및 임신 선이 포함됩니다. 이러한 형태는 차트에 다른 색으로 표시되어 거래 의사 결정에 추가적인 확인을 제공합니다.

  3. 변동률 조정된 스톱 손실: 평균 실제 범위 ((ATR) 지표를 사용하여 중지 거리를 계산하고, 사용자 정의 된 ATR의 곱을 사용하여 중지 위치를 조정합니다. 이 방법은 중단이 시장의 현재 변동성에 더 적합하도록합니다.

  4. 정확한 포지션 계산: 초기 자본, 각 거래의 위험 비율 및 ATR 계산의 중지 손실 거리를 기반으로 포지션 크기를 정확하게 결정하여 위험을 일관되게 제어합니다.

  5. T 및 TT 신호 시스템이 전략은 또한 22주기 SMA를 통과할 때 T 및 TT 레이거를 생성하는 시각 신호 시스템을 포함합니다. 이 레이거는 통과 방향과 종점 가격과 개시 가격의 관계에 따라 다른 색을 띄며 추가 거래 확인을 제공합니다.

전략적 이점

이 전략은 다음과 같은 중요한 장점을 가지고 있습니다.

  1. 다중 인증 메커니즘: 이동 평균 크로스, 그래프 형태 및 T/TT 신호 시스템을 결합하여 다층 거래 확인을 제공하여 가짜 신호의 위험을 줄인다.

  2. 동적 위험 관리: ATR 지표를 사용하여 중지 위치를 조정하여 전략이 시장의 변동성에 따라 보호 조치를 자동으로 조정할 수 있도록합니다. 변동성이 큰 경우 더 넓은 중지 공간을 제공하며, 변동성이 적은 경우 더 긴밀한 중지 공간을 제공합니다.

  3. 정확한 재무 관리위험 비율에 기반한 포지션 계산을 통해 각 거래의 위험이 동일하게 유지되도록 하고, 시장의 변동성에 상관없이 동일한 위험 노출을 유지하도록 한다.

  4. 비주얼 트레이딩 신호전략: 전략은 그래프에서 직관적으로 그램 형태와 T/TT 신호를 표시하여 거래자가 잠재적인 거래 기회를 신속하게 식별할 수 있도록 해줍니다.

  5. 사용자 정의 위험 매개 변수개인 위험 선호에 따라 중요한 매개 변수를 조정할 수 있습니다. 거래 당 위험 비율, 위험 수익률 및 ATR 배수와 같은 전략은 다른 거래 스타일과 시장 조건에 적합합니다.

전략적 위험

이 전략은 포괄적으로 설계되었지만, 다음과 같은 잠재적인 위험들이 있습니다.

  1. 평균선 교차 지연: 이동 평균은 뒤떨어진 지표이며, 트렌드 반전 시 너무 늦게 진입하여 초기 가격 움직임을 놓칠 수 있습니다. 해결책은 다른 선도적 지표와 결합하거나 이동 평균 주기를 줄여서 반응 속도를 높이는 것입니다.

  2. 급격한 시장 변동 위험: 높은 변동성이 있는 시장 조건에서, 가격이 기본 정지치를 뛰어넘을 수 있으며, 실제 손실이 예상보다 많을 수 있습니다. 이러한 상황에 대응하기 위해 보증된 정지 주문을 사용하거나 ATR 배수를 증가시키는 것을 고려하십시오.

  3. 과도한 거래의 위험: 빈번한 평행선 교차는 과도한 거래로 이어질 수 있으며, 특히 가로수지 시장에서 허위 신호를 줄일 수 있다. 추가적인 필터를 추가함으로써 허위 신호를 줄일 수 있다.

  4. 매개변수 민감도: 전략 성능은 변수 선택에 매우 민감하다 (예: 이동 평균 주기, ATR 주기 및 곱하기). 특정 시장에 적합한 최적의 설정을 찾기 위해 철저한 회수 및 변수 최적화가 필요합니다.

  5. 그래프 형식 오인: 일부 시장 조건에서, 그래프 형태 인식은 충분히 정확하지 않을 수 있으며, 잘못된 신호로 이어집니다. 그래프 형태를 주요 거래 신호가 아닌 보조 확인으로 사용하는 것이 좋습니다.

전략 최적화 방향

코드 분석을 바탕으로, 이 전략은 다음과 같은 방향으로 최적화될 수 있습니다:

  1. 트렌드 필터 추가: 트렌드 강도 지표 (ADX 또는 MACD와 같은) 를 도입하여 추가 필터로 확인된 트렌드 방향으로만 거래하여 수평 시장의 가짜 신호를 피하십시오. 이것은 거래 품질과 성공률을 향상시킬 수 있습니다.

  2. 통합 거래량 확인: 거래량 분석을 전략에 추가하여 신호 생성 시 거래량이 증가하도록 요구합니다. 이것은 신호의 신뢰성을 향상시킬 수 있습니다. 특히 파격 및 반전 모드에서.

  3. 적응형 매개변수 구현: 시장 조건에 따라 이동 평균 주기 및 ATR 곱수를 자동으로 조정하는 자기 적응 메커니즘을 개발한다. 예를 들어, 높은 변동성이있는 시장에서 더 긴 이동 평균 주기 및 더 큰 ATR 곱수를 사용한다.

  4. 시간 필터 추가거래 시간 필터를 구현하여 시장 개시 또는 중요한 경제 데이터 발표와 같은 알려진 낮은 유동성 또는 높은 변동성 시기를 피하십시오.

  5. 로직을 변경: 가격 행동 패턴과 지지/저항 수준을 결합하여 입시 지점을 최적화하고, 평행선 교차에만 의존하지 않는 것으로, 입시의 정확도를 높이고, 미끄러지는 지점을 줄일 수 있다.

  6. 다중 시간 프레임 분석: 더 많은 시간 프레임 확인을 추가하여 거래 방향이 더 높은 시간 프레임의 추세와 일치하도록 하여 역전 거래를 줄이고 승률을 높여줍니다.

  7. 일부 수익 잠금 메커니즘: 계단식 수익을 달성하고, 특정 목표값에 도달했을 때 수익의 일부를 잠금하는 전략, 동시에 손실의 균형 지점 또는 작은 수익 위치로 중지 손실을 이동하여 이미 얻은 수익을 보호합니다.

요약하다

스마트 트레이딩 모티브 라인 하이브리드 전략은 기술 분석, 위험 관리 및 정확한 포지션 계산을 결합한 포괄적인 거래 시스템이다. 핵심 장점은 다층의 신호 확인, 동적 위험 관리 및 직관적인 시각화 트레이딩 신호이다. 이 전략은 이동 평균 크로스, 그래픽 모형 인식 및 변동율 조정 스톱을 결합하여 거래자에게 구조화된 거래 프레임워크를 제공합니다.

전략 소스 코드
/*backtest
start: 2024-04-03 00:00:00
end: 2025-04-02 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
*/

//@version=5 
strategy("Smart Trade By Amit Roy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Input Settings
riskPercent = input.float(3, title="Risk Percentage per Trade (%)", minval=0.1, step=0.1)
rewardRatio = input.float(3, title="Risk-Reward Ratio", minval=1.0)
capital = input.float(10000, title="Starting Capital ($)", minval=1)
atrMultiplier = input.float(1.5, title="ATR Multiplier for Stop Loss")
show_TT = input.bool(true, title = "Show T and TT")
show_sma = input.bool(true, title = "Show SMA")

// ATR Calculation for Volatility-based Stop-Loss
atrLength = input.int(14, title="ATR Length")
atrValue = ta.atr(atrLength)
stopLossDistance = atrValue * atrMultiplier
takeProfitDistance = stopLossDistance * rewardRatio

// Position Sizing Calculation
riskAmount = capital * (riskPercent / 100)
positionSize = riskAmount / stopLossDistance

// Simple Moving Averages
fastMA = ta.sma(close, 13)
slowMA = ta.sma(close, 5)

// Entry and Exit Conditions using Simple Moving Averages
longCondition = ta.crossover(fastMA, slowMA)
shortCondition = ta.crossunder(fastMA, slowMA)

// Candlestick Patterns Functions
isBullishEngulfing() => (open[1] > close[1] and close > open and close >= open[1] and close[1] >= open and close - open > open[1] - close[1])
isBearishEngulfing() => (close[1] > open[1] and open > close and open >= close[1] and open[1] >= close and open - close > close[1] - open[1])
isHammer() => (((high - low) > 3 * (open - close)) and ((close - low) / (.001 + high - low) > 0.6) and ((open - low) / (.001 + high - low) > 0.6))
isInvertedHammer() => (((high - low) > 3 * (open - close)) and ((high - close) / (.001 + high - low) > 0.6) and ((high - open) / (.001 + high - low) > 0.6))
isBullishHarami() => (open[1] > close[1] and close > open and close <= open[1] and close[1] <= open and close - open < open[1] - close[1])
isBearishHarami() => (close[1] > open[1] and open > close and open <= close[1] and open[1] <= close and open - close < close[1] - open[1])

// Color Bars for Candlestick Patterns
barcolor(isBullishEngulfing() ? color.rgb(0, 102, 255) : na)
barcolor(isHammer() ? (#1f0cef) : na)
barcolor(isBullishHarami() ? color.rgb(0, 93, 214) : na)
barcolor(isBearishEngulfing() ? color.rgb(255, 196, 0) : na)
barcolor(isBearishHarami() ? color.rgb(251, 255, 0) : na)
barcolor(isInvertedHammer() ? color.rgb(247, 0, 247) : na)

// Calculate SMA for Visualization
sma_22 = ta.sma(close, 22)
lineColor = close > sma_22 ? color.green : color.green
plot(show_sma ? sma_22 : na, color=lineColor, linewidth=1)

// Determine T and TT Labels based on Conditions
candleCrossG = ta.crossover(close, sma_22)
candleCrossR = ta.crossunder(close, sma_22)

// Plot T and TT labels
redT = candleCrossG and close < open
greenTT = candleCrossG and close > open and close > sma_22
greenT = candleCrossR and close > open
redTT = candleCrossR and close < open

plotshape(series=redT ? show_TT : na, title="Red-T", color=na, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.red, text="T")
plotshape(series=greenTT ? show_TT : na, title="Green-TT", color=na, style=shape.labelup, location=location.belowbar, size=size.tiny, textcolor=color.green, text="TT")
plotshape(series=greenT ? show_TT : na, title="Green-T", color=na, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.green, text="T")
plotshape(series=redTT ? show_TT : na, title="Red-TT", color=na, style=shape.labeldown, location=location.abovebar, size=size.tiny, textcolor=color.red, text="TT")

// Place Trades Based on Conditions
if (longCondition)
    strategy.entry("उड़ाओ ", strategy.long, qty=positionSize)
    strategy.exit("Take Profit", from_entry="Long", limit=close + takeProfitDistance, stop=close - stopLossDistance)

if (shortCondition)
    strategy.entry("गिराओ", strategy.short, qty=positionSize)
    strategy.exit("Take Profit", from_entry="Short", limit=close - takeProfitDistance, stop=close + stopLossDistance)

// Plotting Stop Loss and Take Profit Levels for Visualization
plot(longCondition ? close - stopLossDistance : na, color=na, title="Stop Loss", linewidth=1, style=plot.style_line)
plot(longCondition ? close + takeProfitDistance : na, color=na, title="Take Profit", linewidth=1, style=plot.style_line)
plot(shortCondition ? close + stopLossDistance : na, color=na, title="Stop Loss (Short)", linewidth=1, style=plot.style_line)
plot(shortCondition ? close - takeProfitDistance : na, color=na, title="Take Profit (Short)", linewidth=1, style=plot.style_line)