트리플 이동 평균 추세 추적 및 모멘텀 퓨전 양적 거래 전략

EMA TEMA MACD SMA
생성 날짜: 2024-11-27 16:08:16 마지막으로 수정됨: 2024-11-27 16:08:16
복사: 2 클릭수: 439
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

트리플 이동 평균 추세 추적 및 모멘텀 퓨전 양적 거래 전략

개요

이것은 트렌드 추적과 동적 분석을 결합한 양적 거래 전략이다. 이 전략은 삼중 지수 이동 평균 (TEMA), 다중 이동 평균 교차 및 MACD 변이 지표를 사용하여 시장 추세와 진입 시기를 식별한다. 이 전략은 고정된 중지 손실, 이익 목표 및 추적 중지 손실을 포함하여 엄격한 위험 제어 메커니즘을 채택하여 위험과 수익의 최적의 균형을 이룬다.

전략 원칙

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

  1. 트리플 지수 이동 평균 ((TEMA) 시스템은 전반적인 트렌드 방향을 확인하는 데 사용됩니다. 3층의 EMA를 계산하고 그 동적인 변화를 결합하여 트렌드 강도를 판단합니다.
  2. 급속도평균선 교차 시스템은 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")