스토카스틱 모멘텀 브레이크업 전략

저자:차오장, 날짜: 2023-10-24 16:35:24
태그:

img

전반적인 설명

모멘텀 브레이크아웃 전략은 주로 시장 트렌드 방향을 결정하기 위해 스토카스틱 오시레이터 지표를 사용하고, 트렌드 강도를 판단하기 위해 ADX 지표와 결합하여 거래 신호를 생성합니다. 이 전략은 주로 중장기 트렌드 거래에 적합합니다.

전략 논리

이 전략은 두 가지 기술 지표에 기초합니다.

  1. 스토카스틱 오시일레이터: 시장 트렌드 방향을 결정하는 데 사용됩니다. 스토카스틱 오시일레이터 값은 0에서 100까지 다양합니다. 기간이 14일 때 45에서 55 사이의 값은 명확한 추세가 없다는 것을 의미합니다. 55 이상의 스토카스틱은 상승 신호이며 45 이하는 하락 신호입니다.

  2. ADX 지표: 트렌드 강도를 판단하는 데 사용됩니다. 20 이하의 ADX는 약한 트렌드를 나타냅니다.

전략은 먼저 스토카스틱 오시일레이터 값을 기반으로 명확한 상승 추세 또는 하락 추세가 있는지 판단합니다. 스토카스틱이 55보다 높을 때 상승 추세를 나타냅니다. 45보다 낮을 때 하락 추세를 나타냅니다.

ADX가 강한 트렌드를 확인하기 위해 ADX가 20보다 높는지 확인합니다. ADX가 20보다 높으면 트렌드가 트렌드 거래에 충분히 강하다는 것을 의미합니다. ADX가 20보다 낮으면 트렌드가 명백하지 않다고 간주되며 거래 신호가 생성되지 않습니다.

스토카스틱 오시레이터와 ADX를 결합하면 다음 두 가지 조건이 모두 충족되면 거래 신호가 생성됩니다.

  1. 스토카스틱이 55 이상으로 상승세를 나타냅니다.
  2. ADX 20 이상으로 상승 추세가 강하다는 것을 확인합니다.

판매 신호는 다음 두 가지 조건이 충족되면 생성됩니다.

  1. 45 이하의 스토카스틱은 하락세를 나타냅니다.
  2. ADX 20 이상으로 하향 추세가 강하다는 것을 확인합니다.

이러한 규칙으로 전략은 중장기적 추세에 따른 시스템을 형성합니다.

장점

이 전략의 장점은 다음과 같습니다.

  1. 중장기 트렌드 포착: 스토카스틱과 ADX를 결합하여 주요 트렌드를 포착하여 시장 트렌드 방향과 강도를 효과적으로 결정할 수 있습니다.

  2. 유출 통제: 트렌드가 분명 할 때만 거래는 불필요한 윙사우를 제어 할 수 있습니다.

  3. 매개 변수 조정: 스토카스틱 및 ADX 기간은 다른 시장에 최적화 될 수 있습니다.

  4. 단순성: 전체 논리는 간단하고 직관적이며, 두 가지 공통 기술 지표로 구성됩니다.

  5. 보편성: 전략은 매개 변수 조정으로 다른 시장에 적용 될 수 있습니다.

위험성

이 전략의 몇 가지 위험:

  1. 부진점: 트렌드를 따르는 지표로서 스토카스틱과 ADX는 잠재적 인 트렌드 역전점과 초기 브레이크 트레이드를 놓칠 수 있습니다.

  2. 트렌드 역전 위험: 트렌드 끝에 가까운 추세를 계속한다고 잘못 판단 할 수 있으며, 적시에 탈퇴 할 기회를 놓치고 손실을 증폭시킬 수 있습니다.

  3. 매개 변수 최적화의 어려움: 매개 변수들은 다른 시장에 맞춰야 하며, 이는 다소 어려움이 있다.

  4. 윙사 (Whipsaws): 명확한 트렌드가 없는 범위 시장에서 여러 개의 유효하지 않은 신호를 생성할 수 있습니다.

  5. 디버전스 (Divergence): 가격 트렌드가 스토카스틱 오시레이터 트렌드와 충돌할 때, 디버전스가 발생하여 트레이드를 잃을 수 있습니다.

위험은 다음과 같이 완화 될 수 있습니다.

  1. 다른 지표를 추가하여 지역 추세와 잠재적인 파업 지점을 식별합니다.

  2. 트렌드 반전 신호를 포함해서 트렌드가 실질적으로 반전될 때 적시에 종료합니다.

  3. 기계 학습을 사용하여 자동으로 매개 변수를 최적화합니다.

  4. ADX 기준을 높여서 다양한 시장에서 약한 트렌드 신호를 필터링합니다.

  5. 스토카스틱 신호를 확인하고 오차 거래를 피하기 위해 추가 지표를 적용합니다.

개선 방향

전략을 개선할 수 있는 몇 가지 방법:

  1. K와 D 기간과 같은 스토카스틱 매개 변수를 최적화하여 전환점을 정확하게 찾습니다.

  2. ADX 기간을 최적화하여 트렌드 강도를 판단하는 최적의 매개 변수를 결정합니다.

  3. 트렌드 반전 신호를 추가하는 것, 예를 들어 스토카스틱 오버구입/오버판매 구역에서 지점 크기를 증가시키는 것.

  4. RSI와 MACD와 같은 다른 지표를 결합하여 출입 및 출출 시기를 정비합니다.

  5. 기계 학습을 사용하여 최적의 매개 변수 조합을 찾습니다.

  6. 단일 거래 손실을 통제하기 위해 이동 스톱 손실 또는 역 스톱 손실과 같은 스톱 손실 전략을 구현합니다.

  7. 트레일링 스톱 손실: 트렌드가 확장됨에 따라 수익을 잠금하기 위해 트레일링 스톱 손실을 추가합니다.

  8. 자금 관리: ADX 강도에 따라 포지션 크기를 조정하여 리스크 관리를 최적화합니다.

요약

요약하자면, 이 모멘텀 브레이크아웃 전략은 전반적으로 트렌드 추종 시스템으로, 트렌드 방향을 결정하기 위해 스토카스틱과 강도를 측정하기 위해 ADX를 사용하여 중장기 거래 전략을 형성합니다. 장점은 트렌드를 파악하고 간단하고 직관적인 논리로 드래운드를 제어하는 데 있습니다. 약점은 잠재적으로 놓친 초기 브레이크아웃 거래와 트렌드 역전 위험입니다. 우리는 파라미터 튜닝, 신호 추가, 리스크를 제어하는 동안 보상 / 위험을 개선하기 위해 스톱 로스를 구현하는 등의 방법을 통해 최적화 할 수 있습니다.


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

//Created by Bitcoinduke
//Original Creator is Jake Bernstein 
// Link: https://school.stockcharts.com/doku.php?id=trading_strategies:stochastic_pop_drop
// Tested: XBTUSD 3h | BTCPERP FTX 3h
//@version=4
// strategy(shorttitle="Stochastic Pop and Drop", title="Pop and Drop", overlay=false, 
//      calc_on_every_tick=false, pyramiding=0, default_qty_type=strategy.cash, 
//      default_qty_value=1000, currency=currency.USD, initial_capital=1000,
//      commission_type=strategy.commission.percent, commission_value=0.075)

upper_threshold_buy = input(55, minval=50, title="Buy Entry/Exit Line")
lower_threshold_sell = input(45, maxval=50, title="Sell Entry/Exit Line")

oscillator_length = input(14, minval=1, title="Stochastic Length - Default 14")
sma_length = input(2, minval=1, title="SMA Length - 3-day (3 by default) simple moving average of stoch")

stoch_oscillator = sma(stoch(close, high, low, oscillator_length), sma_length)

//Upper and Lower Entry Lines
upper_line = upper_threshold_buy
lower_line = lower_threshold_sell

stoch_color = stoch_oscillator >= upper_line ? green : stoch_oscillator <= lower_line ? red : purple

//Charts
plot(stoch_oscillator, title="Stochastic", style=histogram, linewidth=4, color=stoch_color)
upper_threshold = plot(upper_line, title="Upper Line", style=line, linewidth=4, color=green)
lower_threshold = plot(lower_line, title="Lower Line", style=line, linewidth=4, color=red)

// Strategy Logic
LongSignal = stoch_oscillator >= upper_line and not (stoch_oscillator > lower_line and stoch_oscillator < upper_line) ? true : false
ShortSignal = stoch_oscillator <= lower_line and not (stoch_oscillator > lower_line and stoch_oscillator < upper_line) ? true : false

strategy.entry("POP_Short", strategy.short, when=ShortSignal)
strategy.entry("POP_Long", strategy.long, when=LongSignal)

// === Backtesting Dates === thanks to Trost

testPeriodSwitch = input(true, "Custom Backtesting Dates")
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, 0)
testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(5, "Backtest Stop Day")
testStopHour = input(0, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, testStopHour, 0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
testPeriod_1 = testPeriod()
isPeriod = testPeriodSwitch == true ? testPeriod_1 : true
// === /END



더 많은