연속 촛불 반전 브레이크 아웃 전략

저자:차오장, 날짜: 2024-03-05 16:07:40
태그:

img

전략 개요

연속 촛불 반전 브레이크아웃 전략의 핵심 아이디어는 주가가 반전 신호를 표시하고 연속 하락 기간 후 중요한 저항 수준을 통과 할 때 거래 기회를 포착하는 것입니다. 전략은 연속 하락 촛불의 수, 연속 상승 촛불의 수, 및 스톱-손실 조건과 같은 매개 변수를 설정합니다. 특정 조건이 충족되면 긴 포지션을 입력하고 스톱-손실 조건이 유발되면 포지션을 닫습니다.

전략 원칙

  1. 엔트리 조건을 설정합니다. 주가가 X의 연속 촛불에 따라 Y의 연속 촛불에 따라 떨어졌을 때 전략은 현재 지점이 없습니다. 엔트리 조건이 활성화되고 긴 지점이 열립니다.
  2. 스톱 로스 조건을 설정합니다. 포지션을 열고 나면, 주가가 이전 몇 개의 촛불의 최저 폐쇄 가격 이하로 떨어지거나 입점 당시 가장 높은 가격인 마이너스 2배의 ATR (평균 진정한 범위) 이하로 떨어지면, 스톱 로스 조건이 활성화되고 포지션은 종료됩니다.
  3. 각 엔트리에 대한 해당 엔트리 가격과 스톱 로스 가격을 기록하고 다음 거래를 준비하기 위해 포지션을 닫은 후 매개 변수를 재설정합니다.
  4. 파이인 스크립트를 사용하여 전략 코드를 작성하여 트레이딩뷰와 같은 플랫폼에서 백테스트 및 최적화 할 수 있습니다.

전략의 핵심은 역전 신호를 올바르게 식별하고 적절한 매개 변수를 설정하는 데 있습니다. 연속 하향 촛불의 수와 연속 상향 촛불의 수는 백테스트 결과를 기반으로 최적화해야하는 두 가지 중요한 매개 변수입니다. 또한 스톱 로스 조건을 설정하는 것도 중요합니다. 너무 일찍 포지션을 닫지 않고 기회를 놓치지 않고 위험을 제어해야합니다.

전략적 장점

  1. 변동 시장 및 트렌드의 초기 단계에 적합합니다. 이 전략은 가격 조정 기간 후에 반전 신호가 나타나면 트렌드의 시작에서 기회를 더 쉽게 포착 할 수 있습니다.
  2. 리스크를 통제하기 위해 적절한 시간적 스톱 로스 (Stop Loss): 이전 최저치와 ATR에 기초한 스톱 로스 조건을 설정함으로써 주가가 다시 떨어지면 적시에 포지션을 폐쇄하여 손실을 제어할 수 있습니다.
  3. 조정 가능한 매개 변수와 높은 적응력: 연속 촛불 수와 스톱 로스 조건과 같은 매개 변수들은 시장 특성과 개인 선호도에 따라 조정될 수 있으며, 전략의 적응성을 높일 수 있습니다.

전략 위험

  1. 부적절한 매개 변수 선택은 빈번한 거래로 이어집니다. 연속 촛불의 수가 너무 작게 설정되면 전략이 종종 포지션을 열고 닫을 수 있으며 거래 비용을 증가시킬 수 있습니다.
  2. 잘못된 스톱 로스 포지션 설정은 손실 증가로 이어집니다. 스톱 로스 포지션이 너무 넓게 설정되면 단일 거래에서 과도한 손실을 초래할 수 있습니다. 스톱 로스 포지션이 너무 좁게 설정되면 수익성있는 거래가 너무 일찍 종료 될 수 있습니다.
  3. 장기 트렌딩 시장에서의 평균 성과: 이 전략은 변동 시장과 트렌드의 초기 단계에서 사용하기 더 적합합니다. 장기 안정적인 트렌딩 시장에서는 시장의 상승점을 완전히 누릴 수 없을 수 있습니다.
  4. 포지션 관리 및 자본 관리의 부족: 현재의 전략 코드는 포지션 관리 및 자본 관리를 포함하지 않습니다. 실제 응용에서는 전략의 안정성을 향상시키기 위해 추가해야합니다.

전략 최적화 방향

  1. 연속 촛불의 수를 최적화하십시오. 다른 매개 변수 조합을 백테스트함으로써 가장 최근의 연속 다운 촛불과 업 촛불의 가장 좋은 성능을 찾으십시오.
  2. 스톱 로스 조건 최적화: 다른 시장 변동 상황에 적응하기 위해 ATR 또는 비율에 기반한 스톱 로스 포지션을 설정하는 것과 같은 더 역동적인 스톱 로스 조건을 사용하는 것을 고려하십시오.
  3. 롱과 쇼트 두 방향 거래를 추가하십시오: 현재 전략은 롱을 한 방향으로만 진행합니다. 상승과 하락의 기회를 포착하기 위해 짧은 전략을 추가하는 것을 고려하십시오.
  4. 포지션 관리 및 자본 관리 도입: 계좌의 자본 상황과 위험 선호도에 따라 각 거래의 포지션 크기를 동적으로 조정하고 전략의 안정성을 향상시키기 위해 전반적인 위험 한도를 설정합니다.
  5. 다른 기술 지표 또는 신호와 결합: 전략은 다른 기술 지표 (RSI, MACD 등) 또는 거래 신호 (브레이크, 패턴 등) 와 결합하여 개시 및 폐쇄 포지션의 정확성을 향상시킬 수 있습니다.

전략 요약

연속 촛불 반전 브레이크아웃 전략은 주식 가격의 연속 하락 후 반전 신호를 캡처하여 거래 결정을 내린다. 전략은 간단하고 이해하기 쉽고, 오스실레이션 시장 및 트렌드의 초기 단계에서 사용하기에 적합하다. 연속 촛불 수 및 스톱-로스 조건과 같은 매개 변수를 설정함으로써 다양한 시장 조건에 유연하게 적응할 수 있다. 그러나 전략은 장기 트렌딩 시장에 대한 평균 적응력 및 포지션 관리 및 자본 관리 부족과 같은 몇 가지 한계를 가지고 있다.

실제 응용 분야에서는 시장 특성과 자신의 위험 선호도에 따라 전략을 최적화하고 개선해야합니다. 예를 들어, 연속 촛불 수와 스톱 로스 조건을 최적화하고, 장기 및 단위 포지션에 대한 양방향 거래를 추가하고, 포지션 관리 및 자본 관리를 도입하고, 다른 기술 지표 및 거래 신호와 결합하여 전략의 수익성을 향상시킬 수 있습니다. 이는 위험을 제어하고 안정적인 투자 수익을 달성 할 수 있습니다.

일반적으로, 연속 촛불 역전 브레이크아웃 전략은 더 많은 탐구와 실무에서 최적화를 가치있는 간단하고 실용적인 거래 전략입니다. 그러나 어떤 전략도 전능하지 않습니다. 투자자는 또한 자신의 경험과 판단을 결합하고 신중한 결정을 내리고 장기적으로 시장에서 이길 수 없도록 엄격하게 실행해야합니다.


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

//@version=5
strategy("Bottom Out Strategy", overlay=true)
consecutiveBarsUp = input(2)
consecutiveBarsDown = input(3)
price = close
ups = 0.0
ups := price > price[1] ? nz(ups[1]) + 1 : 0
dns = 0.0
dns := price < price[1] ? nz(dns[1]) + 1 : 0
var entry_bar_index = 1000000
var active = false
var stop_loss = 0.0

// === INPUT BACKTEST RANGE ===
i_from = input(defval = timestamp("01 Jan 2023 00:00 +0000"), title = "From")
i_thru = input(defval = timestamp("01 Mar 2024 00:00 +0000"), title = "Thru")
// === FUNCTION EXAMPLE ===
date() => true

entry_condition() => 
	date() and dns[2] >= consecutiveBarsDown and ups >= consecutiveBarsUp and not active

exit_condition() =>
	date() and active and (close < nz(stop_loss) or close < high - 2 * ta.atr(7))

if (entry_condition())
	strategy.entry("ConsDnLong", strategy.long, comment="CDLEntry")
	entry_bar_index := bar_index
	active := true
	stop_loss := math.min(close, close[1], close[2])
	// log.info("Entry at bar {0}, close={1}, stop_loss={2} ", entry_bar_index, close, stop_loss)
if (exit_condition())
	strategy.close("ConsDnLong", comment = "CDLClose")
	// log.info("Close at bar {0}", bar_index)
	entry_bar_index := 1000000
	active := false
// if (dns >= consecutiveBarsDown)
// 	strategy.entry("ConsDnSE", strategy.short, comment="ConsDnSE")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)
plot(high - 2* ta.atr(7))

더 많은