트렌드 강도 확인 바 전략

저자:차오장, 날짜: 2024-01-16 15:22:53
태그:

img

개요: 이 전략은 N 개의 연속 촛불의 종료 가격 방향에 따라 트렌드 방향을 판단합니다. N 개의 연속 촛불의 종료 가격이 조건을 충족하면 거래 신호가 생성됩니다. N의 크기는 confirmBars 입력 매개 변수에 의해 설정됩니다. 이 전략은 주로 트렌드의 강도를 결정하기 위해 연속 N 개의 촛불 종료 가격의 방향을 활용합니다. 더 큰 N는 트렌드를 확인하기 위해 더 많은 촛불이 필요합니다. 이는 잘못된 브레이크를 필터링 할 수 있지만 트렌드의 초기 단계를 놓칠 수도 있습니다.

원칙:
이 전략은 마지막 촛불의 종료 가격과 이전 촛불의 종료 가격 사이의 관계를 추적하여 가격 상승과 하락의 강도를 판단합니다. 구체적으로, 2개의 변수 bcount와 scount을 정의하여 연속적으로 촛불 종료 가격의 상승과 하락을 기록합니다.

bcount가 confirmBars가 설정한 값에 도달하면 confirmBars의 연속 촛불의 종료 가격이 상승하여 구매 신호를 생성한다는 것을 의미합니다. scount가 confirmBars가 설정한 값에 도달하면 confirmBars의 연속 촛불의 종료 가격이 감소하여 판매 신호를 생성한다는 것을 의미합니다.

연속적인 여러 촛불의 종료 가격의 방향을 판단함으로써 단기 시장 변동은 효과적으로 필터링 될 수 있으며 거래 신호는 상대적으로 큰 강도의 추세에서만 생성됩니다.

이점 분석:

  1. 노이즈를 효과적으로 필터링하고 트렌드를 확인
    이 전략은 거래 신호를 생성하기 전에 조건에 부합하도록 연속 N 개의 촛불가폐 가격을 요구합니다. 이것은 거래에 대한 정상적인 시장 변동의 영향을 필터링하고 강력한 추세로만 포지션이 열리는 것을 보장합니다.

  2. 조절 가능한 필터링 강도 매개 변수 confirmBars 매개 변수의 크기를 조정함으로써 필터링 가격 변동의 강도를 제어 할 수 있습니다. 더 큰 매개 변수는 소음에 더 나은 필터링 효과를 가지고 있지만 초기 트렌드 기회를 놓칠 수도 있습니다.

위험 분석:

  1. 초기 트렌드 기회를 놓칠 수 있습니다. 이 전략은 신호를 생성하기 전에 여러 개의 연속 촛불이 닫는 가격을 요구하므로 초기 트렌드 기회를 놓치고 트렌드를 적시에 추적 할 수 없습니다.

  2. 손실을 멈추는 경향이 있습니다 확증자 수가 너무 많을 때 트렌드의 초기 단계에서 역단 단기 선에 의해 오해되기 쉽고, 그 결과 스톱 로스 브레이크가 발생합니다.

최적화 방향:

  1. 다른 지표로 가짜 브레이크를 필터
    볼링거 밴드 및 RSI와 같은 다른 기술적 지표는 가짜 브레이크의 가능성을 줄이기 위해 구매 및 판매 신호에 대한 2차 필터링을 수행하는 데 사용할 수 있습니다.

  2. 동적으로 매개 변수를 조정 시장 조건에 따라 confirmBars 매개 변수를 동적으로 조정하려고 노력하십시오. 소음을 필터링하기 위해 변동성 시장에서 매개 변수 값을 높이고, 추세를 추적하기 위해 트렌드가 명백할 때 매개 변수 값을 감소하십시오.

요약:
이 전략은 여러 연속 촛불의 폐쇄 가격 방향을 판단하여 충격을 필터링하고 트렌드를 확인하는 효과를 달성합니다. 단기 시장 변동으로 인한 잘못된 거래를 효과적으로 줄일 수 있으며 트렌드가 명백할 때만 거래 신호를 생성합니다. confirmBars 매개 변수 크기를 조정함으로써 사용자는 필터링 효과와 트렌드 기회를 포착하는 관계에 균형을 잡을 수 있습니다. 그러나이 전략은 트렌드 시작 초기에는 중단되는 경향이 있으며 지속적으로 트렌드를 추적하지 않습니다. 더 나은 수익을 추구하기 위해 다른 지표 또는 동적 매개 변수 조정으로 최적화를 시도하는 것이 좋습니다.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Confirm Bars Strategy [TS Trader]", overlay=true)

confirmBars = input(1)

// === INPUT BACKTEST RANGE ===
fromYear = input.int(2019, title="Backtest Start Year")
fromMonth = input.int(1, title="Backtest Start Month", minval=1, maxval=12)
fromDay = input.int(1, title="Backtest Start Day", minval=1, maxval=31)
toYear = input.int(2023, title="Backtest End Year")
toMonth = input.int(12, title="Backtest End Month", minval=1, maxval=12)
toDay = input.int(31, title="Backtest End Day", minval=1, maxval=31)

startTimestamp = timestamp(fromYear, fromMonth, fromDay, 00, 00)
endTimestamp = timestamp(toYear, toMonth, toDay, 23, 59)

inBacktestRange = true

// === STRATEGY LOGIC ===
bcount = 0
bcount := close[1] < close ? nz(bcount[1]) + 1 : 0
if (bcount == confirmBars and inBacktestRange)
    strategy.entry("Buy", strategy.long, comment="Long")

scount = 0
scount := close[1] > close ? nz(scount[1]) + 1 : 0
if (scount == confirmBars and inBacktestRange)
    strategy.entry("Sell", strategy.short, comment="Short")

더 많은