다중 시간 프레임 EMA 추세 양적 거래 전략과 결합된 일일 최고점 및 최저점

EMA MA
생성 날짜: 2024-11-28 15:20:59 마지막으로 수정됨: 2024-11-28 15:20:59
복사: 1 클릭수: 487
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

다중 시간 프레임 EMA 추세 양적 거래 전략과 결합된 일일 최고점 및 최저점

개요

이것은 일선 높낮이 브레이크와 다중 시간 주기 EMA 트렌드를 결합한 양적 거래 전략이다. 전략은 주로 가격의 전날 높낮이 브레이크를 모니터링하여 EMA 평균선과 자금 흐름 지표 ((CMF)) 과 결합하여 거래 시기를 판단한다. 전략은 동시에 시간선과 일선 두 시간 주기의 200 주기 EMA 평균선을 사용하며, 다중 기술 지표의 검증을 통해 거래의 정확성을 향상시킨다.

전략 원칙

전략의 핵심 논리에는 다음과 같은 핵심 요소가 포함됩니다.

  1. request.security 함수를 사용하여 전날의 최고 가격과 최저 가격을 핵심 지지 저항 지점으로 가져옵니다.
  2. 24주기 EMA 평균선과 결합하여 트렌드를 판단하는 기준선이다.
  3. CMF ((20주기) 를 도입하여 거래량과 가격의 통합 지표로 시장의 자금 흐름을 판단한다.
  4. 동시에 현재 시간 주기 및 1시간 주기의 200평균선을 계산하여 더 큰 주기의 경향 방향을 판단한다.

구체적인 거래 규칙은 다음과 같습니다. 다중 조건: 가격이 하루 전 최고치를 넘기기 전에 + EMA 상위에서 마감 가격 + CMF의正值 공백 조건: 1일 전 하락한 가격 + EMA 아래의 종결 가격 + CMF의 마이너스 평지 조건: 상장시 가격 하락 EMA, 상장시 가격 돌파 EMA

전략적 이점

  1. 다중 기술 지표의 통합 검증이 거래의 신뢰성을 높인다.
  2. 다중 시간 주기의 분석을 통해 시장의 흐름을 더 포괄적으로 파악할 수 있습니다.
  3. CMF 지표와 수량-가격 관계를 결합하여 시장의 자금 상태를 더 잘 판단 할 수 있습니다.
  4. 시장 참가자의 거래 습관에 따라 하루 전의 하위/고점을 핵심 가격으로 사용함
  5. 전략 논리는 명확하고 이해하기 쉬우며 구현하기 쉽습니다.
  6. 출전 조건이 명확하고, 주관적인 판단이 적어집니다.

전략적 위험

  1. 불안한 시장에서 잘못된 신호가 자주 발생할 수 있습니다.
  2. 가격 돌파구에 대한 반응이 민감하지 않은 경우
  3. 중요한 위치에서 거래 기회를 놓칠 수 있습니다.
  4. 더 큰 주기를 고려하지 않은 추세 환경
  5. 시장의 급격한 변동으로 인해 더 큰 회수일 수 있습니다.

위험 관리 제안:

  1. 합리적인 Stop Loss 위치를 설정합니다.
  2. 다른 시장 환경에 따라 변수를 조정
  3. 트렌드 필터 추가
  4. 변동률 지표에 대한 고려

전략 최적화 방향

  1. 적응형 매개변수 최적화 메커니즘 소개
  2. 더 많은 시장 환경 필터링 조건을 추가합니다.
  3. 손해 방지 및 차단 메커니즘 최적화
  4. 다양한 시장 환경에 적응하기 위해 변동률 지표가 추가되었습니다.
  5. 위치 관리 메커니즘을 고려하십시오.
  6. 거래량 분석 지표

요약하다

이것은 여러 기술 지표와 여러 시간 주기의 분석을 결합한 완전한 거래 시스템입니다. 전략은 일일 고저 파격, 평균선 추세 및 자본 흐름의 통합 분석을 통해 거래 기회를 찾습니다.

전략 소스 코드
/*backtest
start: 2024-10-28 00:00:00
end: 2024-11-27 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title='The security Daily HIGH/LOW strategy', overlay=true, initial_capital=10000, calc_on_every_tick=true, 
         default_qty_type=strategy.percent_of_equity, default_qty_value=100, 
         commission_type=strategy.commission.percent, commission_value=0.1)

// General Inputs
len = input.int(24, minval=1, title='Length MA', group='Optimization parameters')
src = input.source(close, title='Source MA', group='Optimization parameters')
out = ta.ema(src, len)

length = input.int(20, minval=1, title='CMF Length', group='Optimization parameters')
ad = close == high and close == low or high == low ? 0 : (2 * close - low - high) / (high - low) * volume
mf = math.sum(ad, length) / math.sum(volume, length)

// Function to get daily high and low
f_secureSecurity(_symbol, _res, _src) =>
    request.security(_symbol, _res, _src[1], lookahead=barmerge.lookahead_on)

pricehigh = f_secureSecurity(syminfo.tickerid, 'D', high)
pricelow = f_secureSecurity(syminfo.tickerid, 'D', low)

// Plotting previous daily high and low
plot(pricehigh, title='Previous Daily High', style=plot.style_linebr, linewidth=2, color=color.new(color.white, 0))
plot(pricelow, title='Previous Daily Low', style=plot.style_linebr, linewidth=2, color=color.new(color.white, 0))

// Entry Conditions
short = ta.crossunder(low, pricelow) and close < out and mf < 0
long = ta.crossover(high, pricehigh) and close > out and mf > 0

if short and barstate.isconfirmed
    strategy.entry('short', strategy.short, stop=pricelow[1])
    strategy.close('short', when=close > out)

if long and barstate.isconfirmed
    strategy.entry('long', strategy.long, stop=pricehigh[1])
    strategy.close('long', when=close < out)

// 200 EMA on 1-hour timeframe
ema_200 = ta.ema(close, 200)
ema_200_1h = request.security(syminfo.tickerid, "60", ta.ema(close, 200))

plot(ema_200_1h, color=color.purple, title="200 EMA (1H)")
plot(ema_200, color=color.white, title="200 EMA")