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

트리플 이동 평균 트렌드 다음 및 모멘텀 통합 양적 거래 전략

저자:차오장, 날짜: 2024-11-27 16:08:16
태그:EMA테마MACDSMA

img

전반적인 설명

이 전략은 트렌드 추적 및 모멘텀 분석을 결합한 양적 거래 전략이다. 이 전략은 트리플 지수 지수 이동 평균 (TEMA), 여러 이동 평균 크로스오버 및 MACD 변종을 활용하여 시장 트렌드와 엔트리 포인트를 식별합니다. 고정 스톱-로스, 이익 목표 및 트레일링 스톱을 포함한 엄격한 리스크 제어 메커니즘을 구현하여 리스크-어워드 균형을 최적화합니다.

전략 원칙

이 전략은 세 가지 핵심 기술 지표 시스템을 통해 거래 신호를 결정합니다.

  1. 트리플 지수적 이동 평균 (TEMA) 시스템은 전체 트렌드 방향을 확인합니다. EMA의 세 층을 계산하고 트렌드 강도를 판단하기 위해 그들의 동적 변화를 결합합니다.
  2. 패스트/슬로우 MA 크로스오버 시스템은 중장기 트렌드 반전 포인트를 포착하기 위해 9주기 및 15주기 EMA를 사용합니다.
  3. 5주기 EMA와 가격 교차는 정확한 진입 시기를 위한 최종 확인 신호로 작용합니다.

모든 조건이 충족되면 트레이드 신호가 작동합니다.

  • MACD가 신호선을 넘어서고 TEMA가 상승 추세를 보이고 있습니다.
  • 단기 EMA가 장기 EMA를 넘는다
  • 5주기 EMA 이상의 가격 교차

전략적 장점

  1. 여러 확인 메커니즘은 잘못된 신호를 크게 줄이고 거래 정확도를 향상시킵니다.
  2. 트렌드 추적과 동력 분석의 이점을 결합하여 주요 트렌드와 단기 기회를 포착합니다.
  3. 효율적인 위험 통제를 위해 고정 스톱 및 동적 트레일링 스톱을 포함한 포괄적인 스톱 손실 메커니즘을 구현합니다.
  4. 다양한 시장 환경에 대한 높은 매개 변수 적응력
  5. 이해하기 쉽고 실행하기 쉬운 명확한 입력 로직.

전략 위험

  1. 여러 가지 확인 요구 사항은 지연된 입시로 이어질 수 있고 빠르게 변화하는 시장에서 기회를 놓칠 수 있습니다.
  2. 고정된 스톱 로스 포인트는 시장을 벗어나는 것을 피하기 위해 다른 시장 변동성에 대한 조정이 필요합니다.
  3. 범위를 제한하고 불안한 시장에서 빈번한 잘못된 신호를 생성 할 수 있습니다.
  4. 트레일링 스톱은 심각한 시장 변동 중에 품질 트렌드를 너무 일찍 종료 할 수 있습니다.

최적화 방향

  1. 시장 조건에 더 잘 맞추기 위해 정지 및 수익 목표의 동적 조정을 위해 변동성 지표를 도입하십시오.
  2. 신호 신뢰성을 높이기 위해 보조 확인으로 볼륨 표시기를 추가합니다.
  3. 다양한 시장 상태에서 다른 매개 변수 조합에 대한 시장 환경 인식 구현.
  4. 역동 트렌드 포지션 구축 메커니즘을 개발하여 마감 기간 동안 적당한 축적.
  5. 트레일링 스톱 알고리즘을 최적화하여 시장 변동에 더 잘 적응할 수 있습니다.

요약

이 전략은 여러 기술적 지표 시스템을 통합하여 견고한 거래 시스템을 구축합니다. 주요 강점은 여러 확인 메커니즘과 포괄적 인 리스크 제어 시스템입니다. 특정 지연 위험이 있지만, 전략은 매개 변수 최적화 및 기능 확장으로 상당한 개선 잠재력을 가지고 있습니다. 안정적인 수익을 추구하는 거래자에게 적합합니다.


/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("ITG Scalper Strategy", shorttitle="lokesh_ITG_Scalper_Strategy", overlay=true)

// General inputs
len = input(14, title="TEMA period")
FfastLength = input.int(13, title="Filter fast length")
FslowLength = input.int(18, title="Filter slow length")
FsignalLength = input.int(14, title="Filter signal length")
sl_points = 7 // 5 points stop loss
tp_points = 100 // 100 points target profit
trail_points = 15 // Trailing stop loss every 10 points

// Validate input
if FfastLength < 1
    FfastLength := 1
if FslowLength < 1
    FslowLength := 1
if FsignalLength < 1
    FsignalLength := 1

// Get real close price
realC = close

// Triple EMA definition
ema1 = ta.ema(realC, len)
ema2 = ta.ema(ema1, len)
ema3 = ta.ema(ema2, len)

// Triple EMA trend calculation
avg = 3 * (ema1 - ema2) + ema3

// Filter formula
Fsource = close
FfastMA = ta.ema(Fsource, FfastLength)
FslowMA = ta.ema(Fsource, FslowLength)
Fmacd = FfastMA - FslowMA
Fsignal = ta.sma(Fmacd, FsignalLength)

// Plot EMAs for visual reference
shortema = ta.ema(close, 9)
longema = ta.ema(close, 15)
yma = ta.ema(close, 5)
plot(shortema, color=color.green)
plot(longema, color=color.red)
plot(yma, color=#e9f72c)

// Entry conditions
firstCrossover = ta.crossover(Fmacd, Fsignal) and avg > avg[1]
secondCrossover = ta.crossover(shortema, longema)  // Assuming you meant to cross shortema with longema
thirdCrossover = ta.crossover(close, yma)

var bool entryConditionMet = false

if (firstCrossover)
    entryConditionMet := true

longSignal = entryConditionMet and secondCrossover and thirdCrossover

// Strategy execution
if (longSignal)
    strategy.entry("Long", strategy.long)
    entryConditionMet := false  // Reset the entry condition after taking a trade

// Calculate stop loss and take profit prices
var float long_sl = na
var float long_tp = na

if strategy.position_size > 0  // Long position
    long_sl := close - sl_points
    long_tp := close + tp_points
    
    // Adjust stop loss with trailing logic
    if (close - long_sl > trail_points)
        long_sl := close - trail_points
        
    strategy.exit("Exit Long", "Long", stop=long_sl, limit=long_tp)

// Plotting Buy signals
plotshape(series=longSignal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")

// Alerts
alertcondition(longSignal, title="Buy Signal", message="Buy Signal")


관련

더 많은