크로스 타임프레임 더블 브레이크업 레벨 전략

저자:차오장, 날짜: 2023-11-15 17:27:36
태그:

img

전반적인 설명

이 전략은 이중 브레이크아웃 거래 신호를 생성하기 위해 다른 시간 프레임에서 주요 수준을 활용하는 전략입니다. 중장기 트렌드를 포착하기 위해 트렌드 가격이 주요 지원 또는 저항 수준을 깨는 경우 긴 또는 짧은 지위를 입력 할 수 있습니다.

전략 논리

이 전략은 두 가지 다른 시간 프레임 (tf 및 tf2) 에서 가격 움직임을 동시에 분석합니다. tf는 중장기 트렌드를 반영하는 더 긴 시간 프레임이며 tf2는 단기 움직임을 반영하는 짧은 시간 프레임입니다. 전략은 다음과 같은 거래 신호를 모니터링합니다.

  1. 가격이 tf 시간 프레임의 레벨 (수준) 을 넘을 때, 기록 1=진짜
  2. 가격이 tf 시간 프레임의 수준을 넘어지면 dn1=true를 기록합니다.
  3. 가격이 tf2 시간 프레임에서 레벨 (level2) 이상으로 넘으면, up2=true를 기록
  4. 가격이 tf2 시간 프레임의 수준을 넘어지면 dn2=true를 기록합니다.

상거래 신호는 up1과 up2가 함께 사실일 때 형성되며, 장기 및 단기 모두 상승세를 나타냅니다.

이 전략은 또한 트렌드가 아닌 브레이크오웃에서 잘못된 신호를 피하기 위해 역 스칼핑 및 컬러 촛불과 같은 몇 가지 필터를 포함합니다.

전체적으로 전략은 다중 시간 프레임 분석을 최대한 활용하여 중장기 트렌드가 기대에 부응하는 것을 보장하고 단기 시장 소음의 간섭을 피하면서 고품질의 거래 신호를 생성합니다.

이점 분석

  1. 중장기 동향을 파악하기 위해 주요 수준을 깨는 것

    두 가지 시간 프레임에 걸쳐 주요 레벨 브레이크를 모니터링함으로써 트렌드 시작 단계에서 명확한 진입 신호를 캡처 할 수 있습니다.

  2. 이중 확인은 잘못된 신호를 크게 감소시킵니다.

    두 개의 다른 시간 프레임에서 동시 브레이크오웃을 요구하면 무작위 변동으로부터 잘못된 신호를 크게 줄이고 신호 품질을 향상시킵니다.

  3. 반면 스칼프와 컬러 촛불등과 같은 필터

    역 스칼핑과 컬러 촛불 필터를 추가하면 낮은 품질의 브레이크오웃 신호를 제거하고 엄청난 손실을 방지할 수 있습니다.

  4. 간단한 매개 변수 설정

    이 전략은 작동하기 위해 두 가지 시간 프레임 매개 변수만 필요하고, 다양한 제품에 대한 유연한 조정을 제공합니다.

  5. 이해하기 쉽고 최적화

    명확한 구조로 논리를 쉽게 이해할 수 있으며 최적화를 위해 시장 조건에 따라 매개 변수를 조정할 수 있습니다.

위험 분석

  1. 두 번 출입으로 인해 출입 지연

    싱글 브레이크오웃과 비교하면 듀얼 브레이크오웃은 초기 강한 트렌드 수익을 놓치면서 일부 진입 지연을 일으킬 수 있습니다.

  2. 키 레벨 선택

    각기 다른 제품과 시장 순환에 적합한 핵심 수준을 선택하는 것이 매우 중요합니다. 그렇지 않으면 잘못된 신호를 생성 할 수 있습니다.

  3. 파기 실패

    이중 탈출에도 불구하고, 여전히 탈출 실패와 빠른 후퇴의 가능성이 있으며, 손실을 초래할 수 있습니다.

  4. 트렌드 반전으로 인한 손실

    늦은 트렌드 엔트리는 갑작스러운 반전과 마주할 수 있으며, 스톱 로스를 통해 시간적으로 빠져나올 수 없으며 큰 손실을 입을 수 있습니다.

  5. 어려운 매개 변수 최적화

    단순하지만 최적의 매개 변수 집합을 찾는 것은 여전히 높은 최적화 어려움으로 광범위한 테스트를 필요로합니다.

최적화 방향

  1. 스톱 로스 전략을 추가

    손실이 너무 커지기 전에 손실을 막기 위해 후속 중지 또는 시간 중지 설정할 수 있습니다.

  2. 필터를 최적화

    다른 역방향 머리 피부 진폭 매개 변수 또는 다른 필터 방법을 테스트 할 수 있습니다.

  3. 동적 키 레벨

    주요 레벨이 정적 수준이 아닌 시장 변화에 따라 역동적으로 변화하도록하십시오.

  4. 여러 제품 매개 변수 최적화

    기계 학습을 사용하여 다양한 제품에 대한 최적의 매개 변수 세트를 최적화합니다.

  5. 볼륨 확인을 추가합니다

    부피 확인을 포함해서 부피가 없는 잘못된 신호를 피합니다.

요약

전체적으로 이것은 간단하고 실용적인 트렌드 다음 전략이다. 두 가지 시간 프레임을 분석함으로써 소음을 효과적으로 필터하기 위해 중장기 방향 적합성에 진입합니다. 신호는 직관적인 매개 변수 설정으로 명확하고 해석하기가 쉽습니다. 그러나 잘못된 입력, 주요 레벨 선택의 어려움과 같은 문제가 있습니다. 요약하자면,이 전략은 다른 요소와 결합 할 수있는 트렌드 검증 도구로 더 잘 작동하지만 독립적인 거래 시스템으로 최적화 할 수있는 많은 공간이 있습니다.


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

//Noro
//2018

//@version=2
strategy(title = "Noro's Levels Strategy v1.0", shorttitle = "Levels str 1.0", 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, %")
tf = input('W',  title = "timeframe 1")
tf2 = input('D',  title = "timeframe 2")
src = input(ohlc4, "Source")
ap = input(true, defval = true, title = "antipila")
cf = input(true, defval = true, title = "color filter")
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")

//Signals
level = request.security(syminfo.tickerid, tf, src[1])
level2 = request.security(syminfo.tickerid, tf2, src[1])
plot(level, linewidth = 3, color = silver)
plot(level2, linewidth = 3, color = gray)
up1 = close > level and ap == false ? true : low > level ? true : false
dn1 = close < level and ap == false ? true : high < level ? 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
lot = strategy.position_size != strategy.position_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()

더 많은