
연속적인 K선 반전 돌파 전략의 핵심 아이디어는 일정 기간 동안 연속적으로 하락한 후에 반전 신호가 나타나 중요한 저항 지점을 돌파하는 거래 기회를 포착하는 것입니다. 이 전략은 연속적으로 하락하는 K선 수, 연속적으로 상승하는 K선 수, 그리고 중지 조건과 같은 파라미터를 설정하여 특정 조건이 충족되면 입장을 열고, 중지 조건이 발생하면 입장을 닫습니다.
전략의 핵심은 역전 신호를 올바르게 식별하고 적절한 파라미터를 설정하는 데 있습니다. 연속적으로 얼마나 많은 K 라인이 떨어지고 연속적으로 얼마나 많은 K 라인이 올라가는지는 두 가지 중요한 파라미터가므로 재측량 결과에 따라 최적화해야합니다. 또한, 손실을 막는 조건의 설정은 위험을 통제하고 너무 일찍 손실을 막지 않고 오류의 기회를 초래하지 않도록하는 데 중요합니다.
연속적인 K 라인 반전 돌파 전략은 주가가 연속적으로 하락한 후 반전 신호를 포착하여 거래 결정을 합니다. 이 전략은 간단하고 이해하기 쉽고, 불안한 시장과 트렌드 초기에 적합하며, 연속적인 K 라인 수와 중지 조건과 같은 파라미터를 설정하여 다양한 시장 상황에 유연하게 적응 할 수 있습니다. 그러나, 이 전략에는 장기적인 트렌드 상황에 대한 적응성, 포지션 관리 및 자금 관리 등의 제한이 있습니다.
실제 적용에서, 시장 특성과 자신의 위험 선호에 따라 전략에 대한 최적화 및 개선이 필요합니다. 예를 들어, 연속 K 라인 수와 중지 조건의 설정을 최적화하고, 다공간 쌍방향 거래를 추가하고, 포지션 관리 및 자금 관리를 도입하고, 다른 기술 지표 및 거래 신호와 결합하여 전략의 수익성을 높이는 동시에 위험을 제어하고, 안정적인 투자 수익을 달성 할 수 있습니다.
종합적으로 보면, 연속적인 K선 역전 돌파 전략은 실용적인 거래 전략이며, 실무에서 추가로 탐색하고 최적화할 가치가 있다. 그러나, 어떤 전략도 만능이 아니다. 투자자는 자신의 경험과 판단, 신중한 의사결정, 엄격한 실행을 결합하여 시장에서 장기적으로 무패적 위치를 차지할 수 있다.
/*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))