위험-보상 비율과 기술 분석을 기반으로 한 불 플래그 브레이크아웃 전략


생성 날짜: 2024-05-28 10:47:51 마지막으로 수정됨: 2024-05-28 10:47:51
복사: 1 클릭수: 462
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

위험-보상 비율과 기술 분석을 기반으로 한 불 플래그 브레이크아웃 전략

개요

이 전략은 황소 깃발 모양을 기반으로, 가격이 깃발 모양의 영역의 고점을 돌파한 후에 구매하고, 스톱 로드 포지션은 깃발 모양의 영역의 낮은 곳에 위치하고, 목표 수익은 리스크 수익 비율에 따라 설정된다. 이 전략은 최고 가격과 최저 가격 함수를 사용하여 깃발 모양의 영역을 식별하고, 현재 종결 가격과 이전 K선 최고 가격을 비교하여 돌파를 판단한다.

전략 원칙

  1. 황소 깃발 형태를 식별: 최고 가격과 최저 가격 함수를 사용하여 깃발 모양의 영역의 최고점과 최저점을 계산하고 현재 가격이 깃발 모양의 고점을 돌파했는지 판단하십시오.
  2. 진입: 현재 종식 가격이 전 K선 최고 가격을 돌파하고 전 K선 최고 가격이 플래그 모양의 최고점보다 낮으면 구매한다.
  3. 스톱로스: 스톱로스 가격은 플래그형 하위점으로 설정되어 1개의 완충값을 니다.
  4. 스톱: 리스크 수익률에 따라 계산되는 목표 가격. 목표 가격 = 진입 가격 + (진입 가격 - 스톱 손실 가격) * 리스크 수익률

전략적 이점

  1. 고전적인 황소 깃발 모양을 바탕으로, 강세를 보이는 추세에서 회귀 기회를 잡을 수 있다.
  2. 스톱 손실은 플래그 모양의 낮은 지점에 위치하고, 위험은 통제할 수 있다.
  3. 가격대표보다 리스크 수익률을 높여서 수익을 얻습니다.
  4. 코드 논리는 명확하고, TradingView 내장 함수를 사용하여 이해하기 쉽고 수정하기 쉽습니다.

전략적 위험

  1. 진동하는 시장이나 추세가 불명확할 때, 깃발 모양의 돌파구 이후의 가격은 빠르게 반전되어 큰 회수로 이어질 수 있다.
  2. 부호값이 잘못 설정되면 조기 중단될 수 있습니다.
  3. 실제 리스크/이익 비율은 설정값보다 낮을 수 있다.
  4. 일부 변형된 플래그모양의 경우, 이 전략은 효과가 없을 수 있습니다.

전략 최적화 방향

  1. 거래량 변화, 평균선 방향 등과 같은 더 많은 조건 필터 신호를 추가하여 신호 품질을 향상시킬 수 있습니다.
  2. 각 시장 특성에 따라 플래그 사이드 길이나 리스크 수익률, 스톱 손실 버퍼 등과 같은 파라미터를 최적화 할 수 있습니다.
  3. 매장 및 동적 상쇄를 고려하여 위험 노출을 줄일 수 있다.
  4. 포지션 관리에 참여하여 전반적인 위험을 통제하십시오.

요약하다

이 전략은 클래식 황소 깃발 모양을 기반으로 한 돌파 전략으로, 깃발 모양의 영역과 가격 돌파구를 식별하여 트렌드 연장 기회를 포착한다. 전략의 장점은 논리적으로 명확하고, 위험은 통제 가능하지만, 흔들리는 시장이나 추세 역전 시에는 약간의 위험에 직면한다. 이후에는 신호, 동적 변수, 포지션 관리 등의 최적화 측면에서 개선하여 전략의 안정성과 수익성을 향상시킬 수 있다.

전략 소스 코드
/*backtest
start: 2023-05-22 00:00:00
end: 2024-05-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bull Flag Breakout", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Параметры стратегии
riskRewardRatio = 3.0
flagLength = input.int(5, title="Flag Length")
stopLossBuffer = input.float(0.01, title="Stop Loss Buffer", step=0.001)

// Функция для вычисления стоп-лосса и тейк-профита
calcRiskRewardPrice(entryPrice, stopLossPrice, riskRewardRatio) =>
    takeProfitPrice = entryPrice + (entryPrice - stopLossPrice) * riskRewardRatio
    [stopLossPrice, takeProfitPrice]

// Найти минимум и максимум флага
flagLow = ta.lowest(low, flagLength)
flagHigh = ta.highest(high, flagLength)

// Условия для формирования бычьего флага
isBullFlag = high[1] < flagHigh and close > high[1]

// Условия для входа в сделку
if (isBullFlag)
    entryPrice = close
    stopLossPrice = flagLow - stopLossBuffer
    [calculatedStopLoss, calculatedTakeProfit] = calcRiskRewardPrice(entryPrice, stopLossPrice, riskRewardRatio)
    
    // Открыть длинную позицию
    strategy.entry("Bull Flag Long", strategy.long)
    strategy.exit("Take Profit", "Bull Flag Long", limit=calculatedTakeProfit)
    strategy.exit("Stop Loss", "Bull Flag Long", stop=calculatedStopLoss)
    label.new(bar_index, high, "Buy", color=color.green, textcolor=color.white, style=label.style_label_down)