더블 리버설 캔들스틱 패턴 양적 거래 전략: 망치형과 유성형 패턴 인식 및 실행 시스템

锤子烛台(Hammer Candle) 流星烛台(Shooting Star Candle) 烛台形态(Candlestick Patterns) 反转信号(Reversal Signals) 趋势反转(Trend Reversal) 技术分析(Technical Analysis) 日内交易(Intraday Trading) SL(Stop Loss) TP(Take Profit)
생성 날짜: 2025-08-11 09:14:57 마지막으로 수정됨: 2025-08-11 09:14:57
복사: 0 클릭수: 165
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

더블 리버설 캔들스틱 패턴 양적 거래 전략: 망치형과 유성형 패턴 인식 및 실행 시스템 더블 리버설 캔들스틱 패턴 양적 거래 전략: 망치형과 유성형 패턴 인식 및 실행 시스템

개요

이 전략은 고전적인 폭락 형태를 인식하는 것을 기반으로 한 양적 거래 시스템으로, 시장에서 두 가지 중요한 반전 신호를 식별하는 데 초점을 맞추고 있습니다. 오리 형태와 유성 형태. 오리 형태는 일반적으로 하향 트렌드의 끝에서 나타나며 잠재적인 보이스 반전 신호로 간주됩니다.

전략 원칙

이 전략의 핵심 원칙은 특정 K선 형태에 대한 정확한 수학적인 정의와 식별에 기초한다:

  1. 모양 인식

    • 음이어야 합니다 (개점 가격이 종료 가격보다 높습니다)
    • 그림자 줄 길이는 실체 길이의 최소 90% (wickFactor 변수에 의해 제어)
    • 상조선 길이는 실체 길이의 45%를 넘지 않는다 (maxOppositeWickFactor 파라미터에 의해 제어된다)
    • 전체 K선 범위의 K선 개체 비율은 최소 20% (minBodyRangePct 매개 변수에 의해 제어)
    • 위의 조건이 충족되면, 시스템은 모형으로 인식합니다.
  2. 유성 형태 인식

    • 반드시 양선 (개점 가격이 종료 가격보다 낮아야 합니다)
    • 상조선 길이는 실체 길이의 최소 90%
    • 그림자 줄 길이는 전체 길이의 45%를 넘지 않는다.
    • K선 엔티티가 전체 K선 영역의 20%를 차지한다.
    • 위 조건이 충족되면, 시스템은 유성 형태로 식별한다.
  3. 트랜잭션 실행 논리

    • 모양이 나타나면, 다음 K 선이 열릴 때 더 많이 해
    • 유성 모양이 나타난 후, 다음 K선 디스크를 열 때 공백을 다
    • 정지 손해 설정 신호 K 선의 최저점 ( 모양) 또는 최고점 (流星 모양)
    • 목표 가격은 신호 K 선의 최고점 ( 모양) 또는 최저점 ( 모양) 에 설정됩니다.

이 전략의 실행은 신호 출현 후의 다음 K선에 기초하여 재검토에서 전향적 편차를 방지하고 실제 거래에서 전략의 실행성을 보장한다.

전략적 이점

  1. 간단한 명확한 신호이 전략은 명확하게 정의된 K선 형태에 기반하여, 진입 신호가 명확하고, 주관적인 판단 요소를 줄여줍니다.

  2. 개선된 위험 관리: 각 거래에는 명확한 스톱 로즈와 타겟 가격이 있으며, 단일 거래의 최대 손실을 제한하고, 자금을 장기적으로 보존하는 데 도움이 됩니다.

  3. 변수가 잘 조정됩니다.: 전략은 여러 가지 핵심 파라미터를 제공합니다 (예: 그림자 라인 비율, 최소 실체 비율 등) 다른 시장과 시간 프레임에 따라 최적화된 조정을 할 수 있습니다.

  4. 시장의 역동에 적응하는 것과 유성 모양은 시장의 감정의 변화를 시각적으로 표현하고, 시장의 역동성의 잠재적 전환점을 포착할 수 있다.

  5. 위치 합리적인 중지점: 전략의 스톱로스는 K 선의 극한점에 설정되어 있으며, 이는 일반적으로 시장의 마지막 시도를 나타냅니다. 만약 돌파구가 발생하면 역전 신호는 무효화 될 수 있습니다.

  6. 일일 거래에 적합전략의 입출력은 비교적 빠르며, 일일 거래자의 적용에 적합하며, 단기 시장의 변동성을 효과적으로 활용할 수 있다.

전략적 위험

  1. 가짜 침입 위험: 시장은 조건이 있는 형태를 가질 수 있지만, 그 후 예상되는 반전이 일어나지 않아 거래가 스톱로스를 만난다.

  2. 매개변수 민감도정책 성능은 파라미터 설정 (wickFactor 및 minBodyRangePct와 같은) 에 매우 민감하며, 파라미터 설정을 잘못하면 과도한 가짜 신호 또는 중요한 신호를 놓칠 수 있다.

  3. 제한된 적용이 전략은 불안정한 시장이나 명확한 추세가 없는 시장에서 좋지 않은 성과를 낼 수 있으며, 연속적인 손실 거래가 발생할 수 있습니다.

  4. 트렌드 확인 부족이 전략은 단일 K선 형태에만 기반하고, 더 넓은 시장 추세 배경에 대한 고려가 이루어지지 않아 역경 거래로 이어질 수 있다.

  5. 정지점비트 보수이 전략의 정지는 신호 K 선의 극한점에 설정되어 있으며, 이는 너무 보수적이어서 실제 역동의 혜택을 충분히 받지 못할 수 있다.

  6. 자금 관리 위험: 전략은 고정 비율의 자금을 사용해서 ((10%의 지분) 거래하는데, 연속적인 손실이 있을 경우 더 큰 계좌 철회로 이어질 수 있다.

전략 최적화 방향

  1. 트렌드 필터 추가: 이동 평균이나 다른 트렌드 지표와 결합하여, 하향 방향으로만 거래를 수행합니다. 예를 들어, 하향 추세에서만 더 많은 양자 형태를 찾고, 상승 추세에서는 금성 형태를 니다.

  2. 볼륨 증가 확인: 큰 거래량과 함께 신호 K 라인을 요구하고, 형태의 신뢰성을 강화합니다. 반전은 일반적으로 거래 활동의 증가와 함께 발생합니다.

  3. 방지 장치의 최적화동적 스톱 전략을 도입합니다. 예를 들어, 이동 스톱이나 ATR에 기반한 스톱 포인트를 도입합니다.

  4. 다중 시간 프레임 분석: 큰 시간 프레임에서 시장 추세 방향을 확인하고, 큰 추세와 일치하는 반전 신호만 실행한다.

  5. 신호 강도 점수를 구현: 형태의 완벽함 (예: 그림자 라인 비율, K 라인 위치, 이전 이동 등) 에 따라 신호에 대한 평가를 수행하고, 높은 점수 신호만 수행한다.

  6. 시장 환경 필터에 가입하세요: 높은 변동성 환경에서 변수를 조정하거나 거래를 중지하여 시장 소음이 커질 때 잘못된 신호를 피하십시오.

  7. 다른 기술 지표를 통합합니다: RSI, MACD 등 지표의 반발 신호를 결합하여, 여러 지표가 공동으로 확인될 때만 거래를 수행한다.

요약하다

이중 반전 하락 모델 정량 거래 전략은 고전 기술 분석에 기반한 자동화 거래 시스템으로, 과 유성 하락 형태를 정밀하게 정의하고 식별함으로써 시장의 잠재적 인 반전 기회를 포착한다. 이 전략은 명확한 입문 신호와 완벽한 위험 관리 장치가 있으며, 일일 거래자의 응용에 적합하다. 그러나, 순전히 형태를 기반으로 한 시스템으로서, 그것은 또한 가짜 돌파구 및 트렌드 확인의 부재와 같은 위험에 직면합니다.

전략의 가장 큰 장점은 간결하고 명확하며, 거래자는 각 거래의 논리를 명확하게 이해할 수 있습니다. 전략의 안정성을 높이기 위해, 트렌드 필터, 거래량 확인 및 정지 메커니즘의 최적화와 같은 요소를 추가하는 것이 좋습니다. 이러한 최적화를 통해 가짜 신호를 줄이고 전략의 전반적인 수익성과 리스크 수익률을 향상시킬 수 있습니다.

결국, 모든 거래 전략과 마찬가지로, 거래자는 실제 적용되기 전에 충분한 반추와 전향 테스트를 수행하고 특정 시장 조건과 개인 위험 선호도에 따라 매개 변수를 조정해야합니다. 이 전략은 기본 프레임 워크로써 지속적으로 최적화되고 개인화되어 개인 거래 스타일에 적합한 효과적인 도구로 발전 할 수 있습니다.

전략 소스 코드
/*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=5
strategy("Hammer & Shooting Star — Strategy", overlay=true, pyramiding=0,
     default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=10000, calc_on_every_tick=true)

// === Inputs ===
wickFactor = input.float(0.9, "Min wick : body ratio", step=0.1)
maxOppositeWickFactor = input.float(0.45, "Max opposite-wick : body", step=0.05)
minBodyRangePct = input.float(0.2, "Min body as % of bar range", step=0.01)

// === Candle parts ===
o = open
c = close
h = high
l = low

body = math.abs(c - o)
barRange = h - l
upperWick = h - math.max(c, o)
lowerWick = math.min(c, o) - l

bodyNonZero = barRange > 0 and body > 0

// === Pattern detection (on the bar itself) ===
// Hammer: bearish candle (o > c), long lower wick, small upper wick
isHammer = bodyNonZero and (o > c) and     (lowerWick >= wickFactor * body) and    (upperWick <= maxOppositeWickFactor * body) and    (body / barRange >= minBodyRangePct)

// Shooting star: bullish candle (o < c), long upper wick, small lower wick
isShootingStar = bodyNonZero and (o < c) and    (upperWick >= wickFactor * body) and    (lowerWick <= maxOppositeWickFactor * body) and    (body / barRange >= minBodyRangePct)

// === Use previous-bar signals so entry executes at NEXT bar open ===
hammerSignal = isHammer[1]
ssSignal     = isShootingStar[1]

// === Entries & exits: based on the signal bar (index [1]) ===
canEnter = strategy.position_size == 0

if hammerSignal and canEnter
    // Enter long on current bar (this is the bar AFTER the hammer)
    strategy.entry("Long_Hammer", strategy.long)
    // Exit using the hammer-bar's low/high (signal bar is [1])
    strategy.exit("Long_Exit", from_entry="Long_Hammer", stop=low[1], limit=high[1])

if ssSignal and canEnter
    strategy.entry("Short_SS", strategy.short)
    strategy.exit("Short_Exit", from_entry="Short_SS", stop=high[1], limit=low[1])

// === Visuals: show where patterns occurred ===
//barcolor(isHammer ? color.red : isShootingStar ? color.green : na)
plotshape(isHammer, title="Hammer", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny, text="HAM")
plotshape(isShootingStar, title="Shooting Star", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, text="SS")