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

다중 시간 프레임 하이킨-아시 이동 평균 트렌드 다음 거래 시스템

저자:차오장, 날짜: 2025-01-06 16:20:56
태그:EMAMACDHASMA구매판매

img

전반적인 설명

이 전략은 하이킨-아시 촛불과 기하급수적인 이동 평균 (EMA) 크로스오버를 기반으로 한 멀티 타임프레임 트렌드 다음 시스템이다. 하이킨-아시 촛불의 매끄러운 특성을 다른 시간 프레임에 걸쳐 이동 평균의 트렌드 다음 기능과 결합하여 시장 트렌드를 정확하게 캡처하기 위해 MACD를 추가 필터로 사용합니다. 전략은 60 분, 180 분 및 15 분 시간 프레임에 걸쳐 신호를 계산하고 검증하는 계층적 시간 프레임 디자인을 사용합니다.

전략 원칙

핵심 논리는 몇 가지 핵심 요소를 포함합니다.

  1. 하이킨-아시 계산: 시장 소음을 줄이기 위해 특수 OHLC 계산을 통해 원래 가격 데이터를 부드럽게합니다.
  2. 멀티 타임프레임 EMA 시스템: 180분 시간 프레임에서 하이킨-아시 EMA를 계산하여 60분 시간 프레임에서 느린 EMA와 교차 신호를 형성합니다.
  3. MACD 필터: 거래 신호를 검증하기 위해 MACD 지표를 15분 시간 내에 계산합니다.
  4. 신호 생성 규칙: 빠른 하이킨-아시 EMA가 MACD 확인과 함께 느린 EMA를 넘을 때 구매 신호를 생성합니다.

전략적 장점

  1. 강력한 신호 평형: 하이킨-아시 촛불은 잘못된 신호를 효과적으로 감소시킵니다.
  2. 다중 시간 프레임 검증: 다른 시간 프레임을 사용하면 신호 신뢰성이 증가합니다.
  3. 효과적 추세: EMA의 교차 시스템은 중장기 추세를 효과적으로 포착합니다.
  4. 유연한 필터링 메커니즘: 선택적인 MACD 필터는 추가 신호 확인을 제공합니다.
  5. 강력한 매개 변수 적응력: 여러 가지 주요 매개 변수를 다른 시장 특성에 최적화 할 수 있습니다.

전략 위험

  1. 은 시장 위험: 옆 시장에서 빈번한 잘못된 브레이크 신호를 생성 할 수 있습니다.
  2. 지연 위험: 다중 시간 프레임 검증은 약간 지연된 입력으로 이어질 수 있습니다.
  3. 매개 변수 민감도: 다른 매개 변수 조합으로 인해 상당한 성능 변이가 발생할 수 있습니다.
  4. 시장 환경 의존성: 전략은 강한 트렌드 시장에서 더 잘 수행되지만 다른 조건에서는 저효율을 보일 수 있습니다.

최적화 방향

  1. 변동성 필터링 추가: 시장 변동성 평가에 ATR 또는 볼린거 대역을 도입합니다.
  2. 시간 프레임 선택 최적화: 특정 기기 특성에 따라 시간 프레임 조합을 조정합니다.
  3. 스톱 로스 메커니즘 개선: 트레일링 스톱 또는 변동성 기반의 동적 스톱 로스를 추가합니다.
  4. 포지션 크기를 개선합니다. 신호 강도와 시장 변동성에 따라 포지션 크기를 동적으로 조정합니다.
  5. 시장 환경 분석을 포함합니다: 시장 조건을 차별화하기 위해 트렌드 강도 지표를 추가하십시오.

요약

이 전략은 MACD 필터링과 결합한 다중 타임프레임 하이킨-아시 및 EMA 시스템을 사용하여 전체 트렌드 다음 거래 시스템을 구축합니다. 이 설계는 매개 변수 최적화 및 리스크 제어 메커니즘을 통해 다른 시장 환경에 적응할 수있는 신호 신뢰성과 시스템 안정성을 철저히 고려합니다. 이 전략의 핵심 강점은 신호 평형화 및 다중 검증 메커니즘에 있으며 불안정한 시장 위험과 매개 변수 최적화 문제에주의를 기울여야합니다.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © tradingbauhaus

//@version=5
strategy("Heikin Ashi Candle Time Frame @tradingbauhaus", shorttitle="Heikin Ashi Candle Time Frame @tradingbauhaus", overlay=true)

// Inputs
res = input.timeframe(title="Heikin Ashi Candle Time Frame", defval="60")
hshift = input.int(1, title="Heikin Ashi Candle Time Frame Shift")
res1 = input.timeframe(title="Heikin Ashi EMA Time Frame", defval="180")
mhshift = input.int(0, title="Heikin Ashi EMA Time Frame Shift")
fama = input.int(1, title="Heikin Ashi EMA Period")
test = input.int(1, title="Heikin Ashi EMA Shift")
sloma = input.int(30, title="Slow EMA Period")
slomas = input.int(1, title="Slow EMA Shift")
macdf = input.bool(false, title="With MACD filter")
res2 = input.timeframe(title="MACD Time Frame", defval="15")
macds = input.int(1, title="MACD Shift")

// Heikin Ashi calculation
var float ha_open = na
ha_close = (open + high + low + close) / 4
ha_open := na(ha_open[1]) ? (open + close) / 2 : (ha_open[1] + ha_close[1]) / 2
ha_high = math.max(high, math.max(ha_open, ha_close))
ha_low = math.min(low, math.min(ha_open, ha_close))

// Adjusted Heikin Ashi Close for different timeframes
mha_close = request.security(syminfo.tickerid, res1, ha_close[mhshift])

// MACD calculation
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
macdl = request.security(syminfo.tickerid, res2, macdLine[macds])
macdsl = request.security(syminfo.tickerid, res2, signalLine[macds])

// Moving Averages
fma = ta.ema(mha_close[test], fama)
sma = ta.ema(ha_close[slomas], sloma)
plot(fma, title="Heikin Ashi EMA", color=color.green, linewidth=2)
plot(sma, title="Slow EMA", color=color.red, linewidth=2)

// Strategy Logic
golong = ta.crossover(fma, sma) and (macdl > macdsl or not macdf)
goshort = ta.crossunder(fma, sma) and (macdl < macdsl or not macdf)

// Plot Shapes for Buy/Sell Signals
plotshape(golong, color=color.green, text="Buy", style=shape.triangleup, location=location.belowbar)
plotshape(goshort, color=color.red, text="SELL", style=shape.triangledown, location=location.abovebar)

// Strategy Orders
strategy.entry("Long", strategy.long, when=golong)
strategy.close("Long", when=goshort)
strategy.entry("Short", strategy.short, when=goshort)
strategy.close("Short", when=golong)

// Alerts
alertcondition(golong, "Heikin Ashi BUY", "")
alertcondition(goshort, "Heikin Ashi SELL", "")




관련

더 많은