브레이크아웃 스칼퍼 - 트렌드 변화를 빠르게 파악

저자:차오장, 날짜: 2023-10-25 17:58:11
태그:

img

전반적인 설명

브레이크아웃 스칼퍼 전략 (Breakout Scalper strategy) 은 트렌드 변화를 식별하기 위해 빠르고 느린 이동 평균을 활용하는 브레이크아웃 거래 전략이다. 리스크 관리를 위해 엔트리 스톱과 트레일링 엑시트 스톱을 설정한다. 이 전략은 시장이 옆으로 갈 때 수동으로 포지션을 닫는다. 급격한 트렌드 변화를 활용하기 위해 휘발성 기기에 적합하다.

전략 논리

이 전략은 빠른 창과 느린 창을 사용한다. 기본 기간은 각각 13과 52이다. 빠른 창은 단기 트렌드를 캡처하고 느린 창은 전체 시장 방향을 결정한다. 두 창의 중간 가격은 그래프화된다. 빠른 중간 가격이 느린 중간 가격 이상으로 넘어가면 상승 추세가 형성될 수 있다. 빠른 중간 가격이 느린 가격 아래로 넘어가면 하락 추세가 시작될 수 있다.

빠른 중간 가격이 느린 중간 가격 이상이고, 즉각적인 가격도 빠른 중간 가격 이상일 때, 구매 신호가 생성됩니다. 엔트리 스톱은 느린 창의 가장 높은 가격에 배치됩니다. 빠른 중간 가격이 느린 가격 이하이고, 즉각적인 가격이 빠른 중간 가격 이하일 때, 판매 신호가 유발되며, 느린 창의 가장 낮은 가격에서 엔트리 스톱이 발생합니다.

또한, 출구 스톱은 위험 통제를 위해 정의된다. 긴 출구 스톱은 빠른 창과 느린 창 최저 가격의 최대이다. 짧은 출구 스톱은 빠른 창 최저 가격의 최소이다. 이것은 위험을 완화하기 위해 현재 트렌드 방향 밖에서 스톱이 배치되는 것을 보장한다.

진입 조건이 유효하지 않을 때 포지션은 종료되며, 부적절한 손실을 피할 수 있습니다.

이점 분석

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

  1. 급속한 및 느린 창의 조합은 반응 트렌드 변화 검출을 가능하게 합니다.

  2. 합리적인 스톱을 통해 효과적인 리스크 관리

  3. 단순하고 명확한 논리, 이동평균의 교차와 정지, 이해하기 쉽고 실행하기 쉽습니다.

  4. 쉽게 최적화되고 확장 할 수 있습니다. 매개 변수를 조정하고 더 많은 지표를 추가 할 수 있습니다.

위험 분석

주요 위험은 다음과 같습니다.

  1. 빠른 창 시점 소음에 취약합니다. 시장 소음은 잘못된 신호를 생성 할 수 있습니다.

  2. 느린 창 래그, 전환점이 늦게 감지될 수 있습니다.

  3. 시장에 너무 가깝습니다. 창시 가격에 직접적으로 기반을 둔 중지 너무 긴 일 수 있습니다.

  4. 부진한 시장은 부진을 야기합니다. 부진한 시장은 잘못된 신호를 발생시킵니다.

완화:

  1. 빠른 창을 최적화하고 필터를 추가합니다.

  2. 느린 창을 개선하고 확인 지표를 추가합니다.

  3. 시장 가격에서 버퍼가 멈춘다.

  4. 옆을 감지하고 신호를 피하세요.

최적화 기회

이 전략은 몇 가지 측면에서 향상될 수 있습니다.

  1. 다른 자산에 대한 윈도우 기간을 최적화합니다.

  2. 더 나은 위험 통제를 위해 위치 크기를 추가합니다.

  3. 이윤을 취하는 메커니즘을 구현합니다.

  4. 강력한 신호를 만들기 위해 더 많은 필터를 추가합니다.

  5. 삼각형과 분차와 같은 패턴 탐지 기능을 포함합니다.

  6. 매개 변수를 최적화하기 위해 기계 학습을 활용합니다.

결론

브레이크아웃 스칼퍼 (Breakout Scalper) 는 빠르고 느린 이동 평균 크로스를 기반으로 트렌드 변화를 빠르게 파악하는 것을 목표로 한다. 금과 같은 변동적인 시장에 적합하다. 스톱은 리스크 관리를 제공한다. 간단한 논리는 이해하기 쉽고 최적화 할 수 있게 해준다. 확인된 위험과 개선은 전략을 더욱 개선할 수 있는 방법을 제공한다. 전반적으로, 이것은 탄탄한 접근으로 정제될 수 있는 효율적인 트렌드 트레이딩 시스템이다.


/*backtest
start: 2023-10-17 00:00:00
end: 2023-10-24 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Breakout Scalper", overlay=true)

fast_window = input(title="Fast Window",  defval=13, minval=1)
slow_window = input(title="Slow Window",  defval=52, minval=1)
instant_period = input(title="Instant Period",  defval=3, minval=1)

fast_low = lowest(fast_window)
fast_high = highest(fast_window)
fast_mid = (fast_low + fast_high) / 2

slow_low = lowest(slow_window)
slow_high = highest(slow_window)
slow_mid = (slow_low + slow_high) / 2

instant_price = ema(close, instant_period)

plot(instant_price, title="Instant Price", color=black, transp=50)
fp = plot(fast_mid, title="Fast Mid", color=green)
sp = plot(slow_mid, title="Slow Mid", color=red)
fill(fp, sp, color=(fast_mid > slow_mid ? green : red))

is_buy_mode = (instant_price > fast_mid) and (fast_mid > slow_mid)
is_sell_mode = (instant_price < fast_mid) and (fast_mid < slow_mid)
entry_color = is_buy_mode ? green : (is_sell_mode ? red : na)
exit_color = is_buy_mode ? red : (is_sell_mode ? green : na)

entry_buy_stop = slow_high
entry_sell_stop = slow_low
exit_buy_stop = max(fast_low, slow_low)
exit_sell_stop = min(fast_high, slow_high)
strategy.entry("long", strategy.long, stop=entry_buy_stop, when=is_buy_mode)
strategy.exit("stop", "long", stop=exit_buy_stop)
strategy.entry("short", strategy.short, stop=entry_sell_stop, when=is_sell_mode)
strategy.exit("stop", "short", stop=exit_sell_stop)
strategy.close("long", when=(not is_buy_mode))
strategy.close("short", when=(not is_sell_mode))

entry_buy_stop_color = (strategy.position_size == 0) ? (is_buy_mode ? green : na) : na
plotshape(entry_buy_stop, location=location.absolute, color=entry_buy_stop_color, style=shape.circle)
entry_sell_stop_color = (strategy.position_size == 0) ? (is_sell_mode ? red : na) : na
plotshape(entry_sell_stop, location=location.absolute, color=entry_sell_stop_color, style=shape.circle)
exit_buy_stop_color = (strategy.position_size > 0) ? red : na
plotshape(exit_buy_stop, location=location.absolute, color=exit_buy_stop_color, style=shape.xcross)
exit_sell_stop_color = (strategy.position_size < 0) ? green : na
plotshape(exit_sell_stop, location=location.absolute, color=exit_sell_stop_color, style=shape.xcross)


더 많은