확률적 모멘텀 브레이크아웃 전략


생성 날짜: 2023-10-24 16:35:24 마지막으로 수정됨: 2023-10-24 16:35:24
복사: 0 클릭수: 488
1
집중하다
1166
수행원

확률적 모멘텀 브레이크아웃 전략

개요

동력 돌파 전략은 주로 스토카스틱 오실레이터 지표를 사용하여 시장 추세 방향을 판단하고, ADX 지표와 결합하여 추세가 강하다고 판단하여 거래 신호를 형성한다. 이 전략은 주로 중장선 추세 거래에 적용된다.

전략 원칙

이 전략은 크게 두 가지 기술적인 지표에 기초하고 있습니다.

  1. 스토카스틱 오실레이터 지표: 시장의 경향 방향을 판단하기 위해 사용한다. 스토카스틱 오실레이터의 값은 0에서 100이며, 주기 14일 때 45에서 55 사이의 값은 명확한 추세가 없다는 것을 의미한다. 스토카스틱은 55 이상은 낙관적 신호이며, 45 이하는 낙관적 신호이다.

  2. ADX 지수: 트렌드가 강하다는 것을 판단하기 위해 쓰인다. ADX는 20 이하로 트렌드가 약하다는 것을 나타낸다.

전략은 먼저 Stochastic 오시레이터의 값에 따라 시장이 현재 명확한 상승 또는 하향 추세에 있는지 판단합니다. Stochastic이 55 이상일 때, 부진 추세가 있다고 간주합니다. Stochastic이 45 이하일 때, 하향 추세가 있다고 간주합니다.

그 다음 전략은 ADX가 20 이상인지 여부를 검출합니다. ADX가 20 이상이면 트렌드가 강하다는 것을 의미하며 트렌드 거래를 할 수 있습니다. ADX가 20 이하라면 트렌드가 충분히 분명하지 않다는 것을 의미하며, 이 시점에서 전략은 거래 신호를 생성하지 않습니다.

통합 스토카스틱 오실레이터와 ADX의 판단에 따르면, 다음 두 가지 조건이 동시에 충족되면 전략은 구매/판매 신호를 생성합니다:

  1. 스토카스틱은 55 이상으로 시세한 경향을 나타냅니다.
  2. ADX가 20위 이상으로 부진 추세가 강하다는 것을 나타냅니다.

전략은 다음의 두 가지 조건을 동시에 충족하면 판매 신호를 생성합니다.

  1. Stochastic 45 아래로, 하향 추세를 나타냅니다.
  2. ADX가 20 이상으로, 강세를 보이고 있다.

이러한 판단 규칙으로, 이 전략은 트렌드 주관 중장기선 거래 전략을 형성한다.

전략적 이점

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 중장선 트렌드를 잡기: Stochastic과 ADX를 결합하여 시장의 중장선 트렌드 방향과 강도를 효과적으로 판단하여 주요 트렌드를 파악할 수 있다.

  2. 회수 제어: 트렌드가 분명할 때만 거래하여, 무의미한 반전 거래로 인한 회수를 효과적으로 제어할 수 있다.

  3. 변수 최적화 공간: 스토카스틱 사이클과 ADX 사이클 모두 최적화할 수 있으며, 다른 시장에 맞는 변수를 조정할 수 있다.

  4. 단순 직관: 이 전략의 전체적인 논리는 간단하고 명확하며, 두 가지 일반적인 기술 지표로 구성되어 있으며, 직관적으로 이해하기 쉽습니다.

  5. universality:The strategy can be applied to different markets with parameter tuning.

전략적 위험

이 전략에는 몇 가지 위험도 있습니다.

  1. 브레이크 포인트를 놓치는: Stochastic과 ADX는 모두 트렌드 따를 수 있는 지표이며, 잠재적인 트렌드 전환점을 놓칠 수 있으며, 초기 브레이크 거래 기회를 놓칠 수 있다.

  2. 트렌드 반전 위험: 트렌드 말기에, 스토카스틱과 ADX는 트렌드가 계속되고 있다고 잘못 판단할 수 있으며, 적시에 퇴출할 기회를 놓치고 손실을 증가시킬 수 있습니다.

  3. 매개 변수 최적화 난이도: Stochastic 및 ADX 매개 변수는 서로 다른 시장에 대해 최적화해야하며, 약간의 난이도가 있습니다.

  4. whipsaws: 명확한 추세가 없는 시장에서 이 전략은 여러 번 무효 거래 신호를 생성할 수 있다.

  5. Divergence:When the price trend conflicts with the Stochastic oscillator trend, divergence emerges, which may lead to losing trades.

위험은 다음과 같은 방법으로 줄일 수 있습니다.

  1. 다른 지표와 함께 지역적 추세를 판단하여 잠재적인 돌파구를 발견합니다.

  2. 트렌드 반전 신호를 증가시키고, 트렌드가 명백하게 반전될 때 적시에 탈퇴한다.

  3. 기계 학습과 같은 방법을 통해 자동으로 최적화 됩니다.

  4. Increase the ADX threshold to filter out weak trend signals in ranging markets.

  5. Apply additional indicators to confirm the Stochastic signals and avoid divergence trades.

전략 최적화 방향

이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.

  1. 최적화 Stochastic 변수: K주기, D주기 등 변수를 조정하고, 구매 및 판매 지점을 최적화한다.

  2. ADX 파라미터를 최적화: ADX 주기를 조정하여 트렌드 강점을 가장 잘 판단하는 파라미터를 결정한다.

  3. 트렌드 반전 신호를 추가: Stochastic의 오버 바이 오버 셀 영역에서 포지션을 확대하고, 스톱 로스를 설정한다.

  4. 다른 지표와 결합: RSI, MACD 등의 지표와 결합하여 매매 시기를 결정한다.

  5. 머신러닝: 머신러닝을 이용하여 최적의 파라미터를 얻는다.

  6. 손실을 증가시키는 전략: 이동 손실을 설정하거나 손실을 감소시키는 전략을 설정하여 단독 손실을 제어하십시오.

  7. Trailong stop loss: Add trailing stop loss to lock in profits as the trend extends.

  8. Money management: Optimize the risk management by adjusting position sizing based on ADX strength.

요약하다

종합적으로 설명하자면, 동력 돌파 전략은 전체적으로 트렌드 지향적이며, Stochastic를 사용하여 트렌드 방향을 판단하고, 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