
이 전략은 고전적인 K선 반전 형태를 인식하는 것과 가격 돌파를 확인하는 것을 결합한 자동 거래 시스템이다. 전략의 핵심은 시장 감정의 전환점을 포착하는 것이며, 4개의 높은 확률의 반전 형태를 식별하여 (?? 子線,看吞,射擊星,下跌吞) 그리고 가격이 중요한 위치를 돌파할 때 진입하여 트렌드 추적을 구현한다.
전략 운영 논리는 신호 인식, 침투 확인 및 위험 관리로 세 개의 핵심 모듈으로 나다.
신호 인식 단계에서, 시스템은 K선 개체 크기와 상하 그림자 길이를 계산하여 특정 형태가 형성되었는지 판단합니다. 다중 머리 신호의 경우, 오리줄의 판단 기준은 하하 그림자 길이가 개체보다 두 배 이상이고 상하 그림자가 개체보다 절반 미만입니다. 보금자리 흡수 형태는 현재 K선이 선선으로 전 선선을 완전히 포괄하도록 요구합니다. 공중 머리 신호의 경우, 사격 별은 상하 그림자가 개체보다 두 배 이상이고 하하 그림자 길이가 더 작습니다. 보금자리 흡수에는 현재 선선이 전 선선을 완전히 덮어야합니다.
브레이크 확인 메커니즘은 전략의 핵심 혁신점이다. 시스템은 형태가 나타나면 즉시 입문하지 않고, 다음 K 라인 브레이크 신호 K 라인의 고점 ((多頭) 또는 저점 ((空頭) 에 있을 때 거래를 촉발하기 위해 기다린다. 이러한 지연 확인 메커니즘은 가짜 신호를 효과적으로 필터링하여 거래 성공률을 높인다.
리스크 관리 모듈은 고정된 위험 비율 모델을 사용하며, 각 거래의 위험은 계좌 적당금의 2%로 고정된다. 시스템은 입문 가격과 중지 가격의 거리에 따라 역동적으로 포지션 크기를 계산하여 시장의 변동에 관계없이 단위 손실이 통제 가능한 범위 내에서 보장된다. 다중 거래는 1: 5의 위험 수익률을 사용하며, 공허 거래는 1: 4의 위험 수익률을 사용하며, 추세 거래의 특성을 나타냅니다.
첫째, 형태 인식의 정확도가 높다. 전략 선택의 네 가지 K선 형태는 시장에서 오랜 기간 검증된 고전적인 반전 신호이며, 높은 신뢰성을 가지고 있다. 엄격한 수학 정의를 통해 주관적 판단을 피하고, 신호의 일관성과 반복성을 보장한다.
둘째, 브레이크 확인 메커니즘은 승률을 크게 향상시킵니다. 전통적인 형태 거래 전략은 형태가 나타나면 즉시 입문하기 쉽고 가짜 브레이크 함정에 빠집니다. 이 전략은 가격 브레이크 확인을 기다리는 것으로 대부분의 잡음 신호를 효과적으로 필터링하여 시장이 실제 방향을 선택한 후에만 입문합니다.
세 번째, 위험 관리 체계의 개량. 고정 비율 위험 모델은 계정의 장기적인 생존력을 보장하고, 연속적인 손실이 발생하더라도 포지션 파열을 초래하지 않습니다. 동적 포지션 레벨 계산은 각 거래의 위험 노출을 일관되게하고, 감정 거래와 과도한 레버리지를 방지합니다.
넷째, 리스크/이익 비율 설정이 합리적입니다. 상반 5:1과 상반 4:1의 수익/손실 비율은 시장의 비대칭성을 충분히 고려하고, 30% 정도의 승률이 있다고 하더라도 긍정적인 기대 수익을 달성할 수 있습니다. 이러한 설정은 특히 트렌드 상황을 포착하는 데 적합합니다.
마지막으로, 전략 실행은 완전히 자동화되어 인간의 개입으로 인한 감정적 인 영향을 제거합니다. 모든 매개 변수는 최적화되어 고정되어 있으며, 거래자는 단지 전략을 설정하면 “설정하고 잊기”하는 거래 모드를 구현 할 수 있습니다.
전략이 잘 설계되었음에도 불구하고, 몇 가지 잠재적인 위험은 여전히 주의해야 합니다.
시장 환경 위험은 우선적으로 고려해야 할 요소입니다. 전략은 추세가 명확한 시장에서 우수한 성능을 발휘하지만, 수평 변동 시장에서 빈번한 가짜 브레이크 신호가 발생할 수 있으며, 이로 인해 연속으로 작은 손실이 발생할 수 있습니다. ADX와 같은 시장 환경 필터를 추가하여 추세 강도를 판단하여 낮은 변동 기간 동안 거래 빈도를 줄이는 것이 좋습니다.
슬라이드 리스크는 실장 거래에서 무시할 수 없습니다. 돌파 거래의 특성으로 입시를 결정하는 것은 종종 큰 시장 변동과 함께 이루어지며, 실제 거래 가격은 예상 가격과 오차가있을 수 있습니다.
시간 프레임 의존도도 잠재적인 문제입니다. 전략은 1시간 차트를 위해 특별히 최적화되어 다른 시간 프레임에서 좋지 않은 성능을 낼 수 있습니다. 다른 시간 프레임에서 거래해야하는 경우, 매개 변수를 다시 최적화하거나 적응 장치를 개발하는 것이 좋습니다.
연속적인 손실의 심리적 스트레스는 무시할 수 없다. 위험 관리 장치가 자금 안전을 보호하지만, 연속적인 손실은 거래자의 신뢰에 영향을 미칠 수 있다. 최대 연속적인 손실 횟수 제한을 설정하고, 거래 중단 후 전략적 평가를 수행하는 것이 좋습니다.
과도한 최적화 위험은 주의해야 한다. 현재의 매개 변수는 역사적 데이터에 지나치게 적합하여 향후 시장에서 성능이 떨어질 수 있다. 전략의 장기적인 효과를 보장하기 위해 정기적으로 샘플 외 테스트와 매개 변수 안정성 분석을 수행하는 것이 좋습니다.
미래에는 여러 차원에서 최적화를 통해 전략적 성능을 더욱 향상시킬 수 있습니다.
다중 시간 프레임 확인은 중요한 개선 방향이다. 높은 수준의 시간 프레임 (예: 4 시간 또는 일선) 에서 트렌드 방향을 확인할 수 있으며, 트렌드 방향이 일치하는 경우에만 거래한다. 이 방법은 승률을 크게 높이고 역경 거래의 위험을 줄일 수 있다.
다이내믹 스톱 메커니즘은 탐색할 가치가 있다. 현재 전략은 고정 스톱을 사용하며, 트래킹 스톱이나 ATR 기반의 다이내믹 스톱을 도입하는 것을 고려할 수 있으며, 수익을 보호하면서 거래에 더 많은 발전 공간을 제공합니다. 특히 강한 추세 시장에서 다이내믹 스톱은 더 큰 수익을 잡을 수 있습니다.
시장 상태 인식 모듈의 추가는 전략 적응력을 크게 향상시킬 것이다. 변동률, 거래량, 시장 구조와 같은 지표를 통해 현재 시장 상태를 판단하고, 다른 상태에서 다른 파라미터 설정이나 거래 규칙을 적용한다. 예를 들어, 높은 변동성 시장에서 중지 손실 거리를 확장하고, 낮은 변동성 시장에서 입시 조건을 강화한다.
형태 인식 알고리즘은 더욱 최적화 될 수 있다. 더 복잡한 형태 조합을 역사 데이터 훈련을 통해 식별하는 기계 학습 알고리즘을 추가하는 것을 고려하거나, 형태 인식에 약간의 오차 허용을 허용하는 모호 논리를 도입하여 더 많은 거래 기회를 잡을 수 있다.
자금 관리 전략의 최적화 공간은 넓다. 케일리 공식의 동적 조정 포지션을 고려할 수 있으며, 또는 전략의 최근 성과에 따라 리스크 을 조정할 수 있다. 연속적인 수익이 있을 때 리스크를 적당히 증가시키고, 연속적인 손실이 있을 때 리스크를 감소시키며, 자본 곡선의 평평한 성장을 달성한다.
이 전략은 고전적인 기술 분석 방법을 현대적인 양적 거래 개념과 성공적으로 결합하여 안정적이고 신뢰할 수있는 자동 거래 시스템을 만듭니다. K선 형태 인식으로 시장 전환점을 포착하고, 가짜 신호를 필터링하고, 위험을 관리하고, 자금을 보호합니다. 이 전략은 모든 부분에서 전문적인 설계 개념을 구현합니다.
전략의 핵심 장점은 간결하고 단순하지 않으며, 각 구성 요소가 정교하게 설계되고 최적화되어 있습니다. 형태 인식의 수학적 정의는 신호의 객관성을 보장하고, 획기적인 확인 메커니즘은 거래 품질을 향상시키고, 위험 관리 시스템은 장기 생존력을 보장합니다. 이러한 요소의 유기적인 조합은 전략이 실물 거래에서 안정적으로 수익을 올릴 수 있습니다.
물론, 어떤 전략도 완벽하지 않습니다. 거래자는 그것의 원칙과 한계를 충분히 이해하고 자신의 위험 선호와 시장 경험에 따라 적절하게 조정해야합니다. 실제 거래 전에 충분한 피드백과 시뮬레이션 거래를 수행하여 현재 시장 환경에서 전략이 여전히 유효하도록하는 것이 좋습니다.
앞으로, 시장 구조의 진화와 기술의 발전과 함께, 전략에는 많은 개선의 여지가 있습니다. 지속적인 최적화와 혁신을 통해,이 전략 프레임 워크가 변화하는 시장 환경에 적응하여 거래자에게 장기적으로 안정적인 수익을 창출 할 수 있다고 믿습니다.
/*backtest
start: 2024-08-11 00:00:00
end: 2025-08-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
// --- FIXED PARAMETER STRATEGY ---
// This is a finished script with pre-set values as requested.
// Initial Capital: $1,000
// Risk Per Trade: 2% of Equity
// Bullish R/R: 1:5 | Bearish R/R: 1:4
strategy("Fixed Candlestick Breakout Strategy",
overlay=true,
initial_capital=1000,
commission_value=0.075, // Realistic commission for crypto exchanges
commission_type=strategy.commission.percent)
// --- Fixed Parameters (No Inputs) ---
longProfitRatio = 5.0
shortProfitRatio = 4.0
riskPercent = 0.02 // 2% risk per trade
// --- Candlestick Pattern Detection ---
bodySize = math.abs(close - open)
upperWick = high - math.max(open, close)
lowerWick = math.min(open, close) - low
// Bullish Signal Logic: Hammer OR Bullish Engulfing
isHammer = lowerWick > bodySize * 2 and upperWick < bodySize * 0.5
isBullishEngulfing = close > open and close[1] < open[1] and close > open[1] and open < close[1]
isBullishSignal = isHammer or isBullishEngulfing
// Bearish Signal Logic: Shooting Star OR Bearish Engulfing
isShootingStar = upperWick > bodySize * 2 and lowerWick < bodySize * 0.5
isBearishEngulfing = close < open and close[1] > open[1] and close < open[1] and open > close[1]
isBearishSignal = isShootingStar or isBearishEngulfing
// --- State Management ---
// We use 'var' to track the signal candle's data and wait for a breakout
var bool waitingForBullishEntry = false
var bool waitingForBearishEntry = false
var float signalHigh = na
var float signalLow = na
// Set the state when a signal candle is identified
if isBullishSignal
waitingForBullishEntry := true
waitingForBearishEntry := false
signalHigh := high
signalLow := low
if isBearishSignal
waitingForBearishEntry := true
waitingForBullishEntry := false
signalHigh := high
signalLow := low
// --- Entry and Exit Logic ---
// Only look for entries if we are flat (no open position)
if strategy.position_size == 0
// Bullish Entry: Trigger on the candle AFTER the signal candle
if waitingForBullishEntry[1] and high > signalHigh[1]
entryPrice = signalHigh[1]
stopLossPrice = signalLow[1]
riskPerUnit = entryPrice - stopLossPrice
// Position Size Calculation (2% Risk)
capitalToRisk = strategy.equity * riskPercent
positionSize = riskPerUnit > 0 ? capitalToRisk / riskPerUnit : 0
if positionSize > 0
takeProfitPrice = entryPrice + (riskPerUnit * longProfitRatio)
strategy.entry("Long", strategy.long, qty=positionSize, stop=entryPrice)
strategy.exit("Long Exit", from_entry="Long", loss=stopLossPrice, limit=takeProfitPrice)
waitingForBullishEntry := false // Reset state
// Bearish Entry: Trigger on the candle AFTER the signal candle
if waitingForBearishEntry[1] and low < signalLow[1]
entryPrice = signalLow[1]
stopLossPrice = signalHigh[1]
riskPerUnit = stopLossPrice - entryPrice
// Position Size Calculation (2% Risk)
capitalToRisk = strategy.equity * riskPercent
positionSize = riskPerUnit > 0 ? capitalToRisk / riskPerUnit : 0
if positionSize > 0
takeProfitPrice = entryPrice - (riskPerUnit * shortProfitRatio)
strategy.entry("Short", strategy.short, qty=positionSize, stop=entryPrice)
strategy.exit("Short Exit", from_entry="Short", loss=stopLossPrice, limit=takeProfitPrice)
waitingForBearishEntry := false // Reset state
// Invalidate the signal if a breakout doesn't happen on the next candle
if waitingForBullishEntry and not isBullishSignal
waitingForBullishEntry := false
if waitingForBearishEntry and not isBearishSignal
waitingForBearishEntry := false
// --- Visuals ---
// Plot markers on the chart for identified signal candles
plotshape(isBullishSignal, "Bullish Signal", shape.triangleup, location.belowbar, color.new(color.green, 20), size=size.small)
plotshape(isBearishSignal, "Bearish Signal", shape.triangledown, location.abovebar, color.new(color.red, 20), size=size.small)