멀티 타임프레임 브레이크업 전략

저자:차오장, 날짜: 2023-12-29 16:17:56
태그:

img

전반적인 설명

멀티 타임프레임 브레이크 아웃 전략은 두 가지 다른 시간 프레임에서 가격 브레이크 아웃 신호를 결합하여 더 신뢰할 수있는 거래 신호를 생성합니다. 전략은 1 시간, 2 시간, 3 시간 등과 같은 짧은 시간 프레임과 4 시간, 매일 등과 같은 긴 시간 프레임에서 가격 브레이크 아웃 신호를 동시에 계산합니다. 두 시간 프레임의 신호가 해당 거래의 실행을 위해 동일한 방향으로있을 때만 구매 또는 판매 신호를 생성합니다.

전략 논리

이 전략의 핵심 논리는 각각 두 가지 다른 시간 프레임에서 가격 브레이크 신호를 계산하고 필터링을 위해 일치시키는 것입니다. 구체적으로, 전략은 가격이 짧은 시간 프레임에서 특정 수준을 깨는지 (예를 들어 1 시간) 과 가격이 더 긴 시간 프레임에서 대응 수준을 깨는지 (예를 들어 4 시간) 을 확인합니다. 두 시간 프레임에서 브레이크 신호가 같은 방향으로, 즉 두 시간 프레임의 가격이 상승 또는 하락으로 깨는 경우에만 전략은 거래 신호를 생성합니다.

구매 신호의 조건은 단기 및 긴 시간 프레임 두 가지 모두에서 폐쇄 가격 또는 낮은 가격이 가격 수준을 넘어서게 되는 것입니다. 판매 신호의 조건은 두 시간 프레임 모두에서 폐쇄 가격 또는 높은 가격이 수준을 넘어서게 되는 것입니다. 이 방식으로 시간 프레임에 걸쳐 신호를 일치시키면 전략은 일부 잘못된 신호를 필터링하여 신호를 더 신뢰할 수 있습니다.

이점 분석

이 전략의 가장 큰 장점은 거래 신호의 더 높은 신뢰성입니다. 두 시간 프레임의 수준에서 가격 브레이크를 요구함으로써 소음을 효과적으로 필터링하고 나쁜 거래를 피할 수 있습니다. 또한, 다른 시간 프레임의 브레이크out 신호는 서로를 검증하여 거래 기회를 더 효율적으로 만들 수 있습니다. 또한, 전략은 사용자가 자신의 필요에 따라 결합 및 데이터 소스 등을 선택할 수있는 시간 프레임을 선택함으로써 약간의 유연성을 제공합니다.

위험 분석

이 전략의 주요 위험은 평온한 시장 시대 정신 동안 가격이 어느 시간 틀에도 돌입하지 않을 수 있다는 것입니다. 그 경우 전략은 거래 신호를 생성하지 않을 수 있으며 기회를 놓칠 수 있습니다. 또한, 비효율적인 신호로 이어질 수있는 두 시간 틀 사이에 약간의 시간 차기가 있습니다. 또한 전략에는 스톱 로스 로직이 포함되어 있지 않으며 더 큰 위험이 있습니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다: 1) 위험을 제어하기 위해 스톱 로스 논리를 추가하십시오. 2) 효율성을 향상시키기 위해 시간 프레임 조합을 최적화하십시오. 3) 거래 신호를 더 엄격하게 만들기 위해 조합에 더 많은 시간 프레임을 추가하십시오. 4) 신호 품질을 향상시키기 위해 필터링을위한 다른 지표를 통합하십시오. 5) 수익을 더 잘 제어하기 위해 출구 메커니즘을 개발하십시오.

결론

멀티 타임프레임 브레이크아웃 전략은 시간 프레임에 걸쳐 가격 브레이크아웃을 비교하여 신호 품질을 향상시키고 상대적으로 신뢰할 수있는 트렌드 다음 전략입니다. 그러나 일부 결함이 있습니다. 지속적인 최적화를 통해 안정적이고 신뢰할 수있는 양적 거래 전략이 될 수 있습니다.


/*backtest
start: 2023-11-28 00:00:00
end: 2023-12-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's Levels Strategy v1.1", shorttitle = "Levels str 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
tf1 = input('W', title = "timeframe 1")
tf2 = input('D', title = "timeframe 2")
src = input(ohlc4, "Source")
ap = input(true, defval = true, title = "use saw filter")
cf = input(true, defval = true, title = "гыу color filter")
showlines = input(true, defval = true, title = "Show lines")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Levels
level1 = request.security(syminfo.tickerid, tf1, src)
level2 = request.security(syminfo.tickerid, tf2, src)
col = showlines ? silver : na
p1 = plot(level1, linewidth = 3, color = col, title = "Level 1")
p2 = plot(level2, linewidth = 3, color = col, title = "Level 2")

//Signals
up1 = close > level1 and ap == false ? true : low > level1 ? true : false
dn1 = close < level1 and ap == false ? true : high < level1 ? true : false
up2 = close > level2 and ap == false ? true : low > level2 ? true : false
dn2 = close < level2 and ap == false ? true : high < level2 ? true : false

//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]

if up1 and up2 and (close < open or cf == false)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if dn1 and dn2 and (close > open or cf == false)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

더 많은