리프프로그 가격 돌파 추세 전략 다기간 주요 가격 수준을 기반으로 한 양적 거래 시스템

HOD LOD PMH PML PDH PDL MA RSI ATR ADX
생성 날짜: 2025-01-06 16:06:30 마지막으로 수정됨: 2025-01-06 16:06:30
복사: 1 클릭수: 328
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

리프프로그 가격 돌파 추세 전략 다기간 주요 가격 수준을 기반으로 한 양적 거래 시스템

개요

이 전략은 여러 주요 가격 수준을 기반으로 하는 돌파적 거래 시스템입니다. 주로 6가지 핵심 포인트를 추적합니다. 일중 최고가(HOD), 일중 최저가(LOD), 장전 최고가(PMH), 장전 최저가(PML), 전일 최고가(PDH), 전일 최저가(PDL). 가격 가격이 이러한 수준을 돌파하면 거래 신호가 생성됩니다. 이 전략은 주요 수준의 가격 변동에 따라 매수 및 매도 작업을 실행하는 자동화된 거래를 사용합니다.

전략 원칙

전략의 핵심 논리는 다음과 같은 핵심 부분으로 구성됩니다.

  1. 주요 가격 수준 계산: request.security 함수를 사용하여 다양한 기간의 가격 데이터를 얻고 6가지 주요 가격 수준을 계산합니다.
  2. 개시 조건 설정: 가격이 PMH 또는 PDH를 상향 돌파하면 롱 포지션을 오픈하고, 가격이 PML 또는 PDL을 하향 돌파하면 숏 포지션을 오픈합니다.
  3. 종료 조건 설정: 롱 포지션을 보유한 경우, 가격이 HOD에 도달하면 포지션이 종료되고, 숏 포지션을 보유한 경우, 가격이 LOD에 도달하면 포지션이 종료됩니다.
  4. 그래픽 시각화: 각 가격 수준을 표시하기 위해 서로 다른 색상의 수평선을 사용합니다. HOD는 흰색, LOD는 보라색, PDH는 주황색, PDL은 파란색, PMH는 녹색, PML은 빨간색입니다.

전략적 이점

  1. 다차원적 가격 참조: 여러 기간에 걸쳐 주요 가격 수준을 모니터링하여 시장 동향을 종합적으로 이해합니다.
  2. 돌파구 거래의 논리는 명확합니다. 거래 신호는 가격 돌파에 따라 생성되고, 거래 규칙은 명확하고 이해하기 쉽습니다.
  3. 높은 수준의 자동화: 시스템은 다양한 가격 수준을 자동으로 계산하고 거래를 실행하여 인간의 개입을 줄입니다.
  4. 강력한 시각화 효과: 각 가격 수준은 다양한 색상의 수평선을 통해 직관적으로 표시되어 분석과 판단이 편리합니다.
  5. 강력한 적응성: 이 전략은 다양한 거래 상품과 기간에 적용될 수 있습니다.

전략적 위험

  1. 거짓 돌파 위험: 시장에서 거짓 돌파가 발생하여 거짓 신호가 발생할 수 있습니다.
  2. 변동성 의존성: 전략은 변동성이 낮은 환경에서는 성과가 좋지 않을 수 있습니다.
  3. 위험 통제가 부족합니다. 동적 손절매 및 이익 실현 메커니즘이 부족합니다.
  4. 시장 환경 의존성: 추세가 명확하지 않은 횡보 시장에서도 자주 거래할 수 있습니다.
  5. 슬리피지 영향: 유동성이 낮은 시장에서는 슬리피지가 더 크게 발생할 수 있습니다.

전략 최적화 방향

  1. 기술 지표 필터링 추가:
  • 매수과잉과 매도과잉을 필터링하기 위한 RSI 지표 소개
  • ATR을 사용하여 동적 손절매 설정
  • ADX를 결합하여 추세 강도를 확인하세요
  1. 위험 관리 개선:
  • 동적 손절매 메커니즘 설정
  • 트레일링 스톱 기능 추가
  • 배치 단위로 수익 창출 메커니즘을 구축합니다.
  1. 최적화 신호 확인:
  • 볼륨 증가 확인
  • 다중 기간 추세 확인 추가
  • 신호 지연 확인 메커니즘 설정

요약하다

이 전략은 여러 주요 가격 수준을 모니터링하고 활용하여 시장 기회를 포착하며, 명확한 논리와 높은 수준의 자동화를 갖추고 있습니다. 하지만 기술적 지표 필터링을 추가하고 위험 관리 메커니즘을 개선하는 등 최적화가 필요한 특정 위험도 있습니다. 이 전략의 핵심적인 장점은 다차원적 가격 참조 시스템에 있으며, 이를 통해 시장 동향을 보다 잘 파악할 수 있지만, 실제 적용에서는 다양한 시장 환경에 따라 타겟팅된 매개변수 조정이 필요합니다.

전략 소스 코드
/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 1h
basePeriod: 1h
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=6
strategy("HOD/LOD/PMH/PML/PDH/PDL Strategy by tradingbauhaus ", shorttitle="HOD/LOD Strategy", overlay=true)

// Daily high and low
dailyhigh = request.security(syminfo.tickerid, 'D', high)
dailylow = request.security(syminfo.tickerid, 'D', low)

// Previous day high and low
var float previousdayhigh = na
var float previousdaylow = na
high1 = request.security(syminfo.tickerid, 'D', high[1])
low1 = request.security(syminfo.tickerid, 'D', low[1])
high0 = request.security(syminfo.tickerid, 'D', high[0])
low0 = request.security(syminfo.tickerid, 'D', low[0])

// Yesterday high and low
if (hour == 9 and minute > 30) or hour > 10
    previousdayhigh := high1
    previousdaylow := low1
else
    previousdayhigh := high0
    previousdaylow := low0

// Premarket high and low
t = time("1440", "0000-0930") // 1440 is the number of minutes in a whole day.
is_first = na(t[1]) and not na(t) or t[1] < t
ending_hour = 9
ending_minute = 30

var float pm_high = na
var float pm_low = na

if is_first and barstate.isnew and ((hour < ending_hour or hour >= 16) or (hour == ending_hour and minute < ending_minute))
    pm_high := high
    pm_low := low
else 
    pm_high := pm_high[1]
    pm_low := pm_low[1]

if high > pm_high and ((hour < ending_hour or hour >= 16) or (hour == ending_hour and minute < ending_minute))
    pm_high := high
    
if low < pm_low and ((hour < ending_hour or hour >= 16) or (hour == ending_hour and minute < ending_minute))
    pm_low := low

// Plotting levels
plot(dailyhigh, style=plot.style_line, title="Daily high", color=color.white, linewidth=1, trackprice=true)
plot(dailylow, style=plot.style_line, title="Daily low", color=color.purple, linewidth=1, trackprice=true)
plot(previousdayhigh, style=plot.style_line, title="Previous Day high", color=color.orange, linewidth=1, trackprice=true)
plot(previousdaylow, style=plot.style_line, title="Previous Day low", color=color.blue, linewidth=1, trackprice=true)
plot(pm_high, style=plot.style_line, title="Premarket high", color=color.green, linewidth=1, trackprice=true)
plot(pm_low, style=plot.style_line, title="Premarket low", color=color.red, linewidth=1, trackprice=true)

// Strategy logic
// Long entry: Price crosses above PMH or PDH
if (ta.crossover(close, pm_high) or ta.crossover(close, previousdayhigh)) and strategy.opentrades == 0
    strategy.entry("Long", strategy.long)

// Short entry: Price crosses below PML or PDL
if (ta.crossunder(close, pm_low) or ta.crossunder(close, previousdaylow)) and strategy.opentrades == 0
    strategy.entry("Short", strategy.short)

// Exit long: Price reaches HOD
if strategy.position_size > 0 and ta.crossover(close, dailyhigh)
    strategy.close("Long")

// Exit short: Price reaches LOD
if strategy.position_size < 0 and ta.crossunder(close, dailylow)
    strategy.close("Short")