일간 범위 돌파 일방향 거래 전략

OHLC ADX ATR MA RSI BB
생성 날짜: 2024-12-11 15:23:37 마지막으로 수정됨: 2024-12-11 15:23:37
복사: 1 클릭수: 382
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

일간 범위 돌파 일방향 거래 전략

개요

이것은 이전 거래일 고하의 상위/저하를 기반으로 한 간격파괴 거래 전략이다. 이 전략은 가격의 상위/저하를 식별하여 거래 기회를 찾고, 각각의 상위/저하 방향에 대해 단 한 번의 거래만 수행한다. 이 전략은 고정된 50점의 스톱로스 설정을 채택하고, 각 거래일 초에 거래 마크를 재설치하여 거래의 질서를 보장한다. 이 전략의 핵심은 하루 내의 가격의 일방적인 상위 상황을 포착하고, 엄격한 거래 관리를 통해 위험을 통제하는 것이다.

전략 원칙

이 전략의 핵심 논리는 다음과 같습니다.

  1. 거래 신호 생성: 시스템은 현재의 종결 가격이 전날 거래의 최고점을 넘었는지 또는 낮은 곳을 넘었는지 판단하여 거래 방향을 결정합니다. 가격이 종결했을 때 전날의 최고점을 넘었을 때, 시스템은 여러 신호를 냅니다. 가격이 종결했을 때 전날의 최저점을 넘었을 때, 시스템은 빈 신호를 냅니다.
  2. 거래 주파수 제어: 전략은 표기 비트 (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
  3. 리스크 관리: 각 거래에는 고정된 50점의 스톱로스가 설정되어 있습니다. 이러한 대칭적인 리스크 관리 방식은 단일 거래의 위험을 효과적으로 제어 할 수 있습니다.
  4. 일내 재설정 메커니즘: 각 거래의 시작에 거래 표시를 재설정하여 새로운 거래의 준비를 합니다. 이 메커니즘은 전략이 새로운 거래 기회를 잡을 수 있도록 보장합니다.

전략적 이점

  1. 거래 논리 명확성: 전략은 간단한 가격 돌파 이론에 기초하고 거래 규칙은 명확하고 이해하기 쉽고 실행됩니다.
  2. 엄격한 위험 관리: 고정된 스톱 스톱 손실 점수와 일방 거래 제한으로 거래 당 위험을 효과적으로 제어한다.
  3. 과도한 거래를 피하십시오: 각 방향은 하루에 한 번만 거래 할 수 있으며, 불안한 시장에서 자주 거래되는 손실을 피할 수 있습니다.
  4. 높은 수준의 자동화: 전략은 인간의 개입 없이 완전히 자동화될 수 있다.
  5. 적응력: 전략은 다양한 시장 환경에 적용될 수 있으며, 특히 트렌드가 뚜렷한 시장에서 더 잘 작동한다.

위험 분석

  1. 가짜 돌파 위험: 시장에서 가짜 돌파가 발생하여 거래 손실이 발생할 수 있습니다. 다른 기술 지표와 함께 확인하는 것이 좋습니다.
  2. 흔들림 시장 위험: 가로 수평 흔들림 시장에서, 빈번한 돌파구와 하락은 연속적인 중단으로 이어질 수 있다. 필터링 조건을 추가하여 개선할 수 있다.
  3. 고정 스톱 리스크: 고정 스톱 포인트는 모든 시장 환경에 적합하지 않을 수 있으며, 변동성이 높은 시장에서 너무 일찍 중단 될 수 있습니다.
  4. 슬라이드 위험: 시장의 격렬한 변동이 있을 때, 슬라이드 때문에 실제 스톱 손실 지점이 예상보다 벗어날 수 있다.

최적화 방향

  1. 다이내믹 스톱로스 설정: 시장의 변동률에 따라 다이내믹하게 조정할 수 있는 스톱로스 포인트 수.
  2. 트렌드 필터를 추가: 트렌드 지표와 결합하여 트레이드 신호를 필터링합니다.
  3. 브레이크 확인을 최적화한다: 트랜지스 확인이나 다른 기술 지표를 추가하여 브레이크 확인의 신뢰성을 높일 수 있다.
  4. 시간 필터: 시간 필터 조건을 추가하여 변동성이 높은 시간에 거래하는 것을 피할 수 있습니다.
  5. 포지션 관리 최적화: 시장의 변동성과 계좌의 위험 부담력에 따라 포지션 크기를 동적으로 조정할 수 있다.

요약하다

이 전략은 일선 간격 돌파를 기반으로 한 고전 거래 시스템으로, 엄격한 거래 관리 및 위험 통제를 통해 시장의 일방적인 추세 상황을 추적하는 데 적합합니다. 일부 고유한 위험이 존재하지만, 합리적인 최적화 및 개선을 통해 전략의 안정성과 수익성을 높일 수 있습니다. 전략의 성공에 핵심은 가짜 돌파 위험을 올바르게 처리하고, 합리적으로 스톱로스를 설정하고, 다양한 시장 환경에서 전략의 적응성을 유지하는 데 있습니다.

전략 소스 코드
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("US 30 Daily Breakout Strategy (Single Trade Per Breakout/Breakdown, New York Time)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, trim_orders = true)

// Set pip size for US 30 (1 pip = 1 point)
var float pip = 1.0

// Set take profit and stop loss in points (1 pip = 1 point)
take_profit_pips = 50
stop_loss_pips = 50

// Calculate the previous day's high and low (assumes chart timezone is set to New York)
prevDayHigh = request.security(syminfo.tickerid, "D", high[1])
prevDayLow = request.security(syminfo.tickerid, "D", low[1])

// Initialize flags to track if a breakout/breakdown trade has been taken
var bool breakout_traded = false
var bool breakdown_traded = false

// Reset flags at the start of a new day in New York timezone (as per chart setting)
if (ta.change(time("D")))
    breakout_traded := false
    breakdown_traded := false

// Condition for a long entry: candle closes above the previous day's high and no breakout trade has been taken
longCondition = close > prevDayHigh and strategy.opentrades == 0 and not breakout_traded

// Condition for a short entry: candle closes below the previous day's low and no breakdown trade has been taken
shortCondition = close < prevDayLow and strategy.opentrades == 0 and not breakdown_traded

// Execute long trade if the condition is met, and set the breakout flag
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Long", limit=close + take_profit_pips * pip, stop=close - stop_loss_pips * pip)
    breakout_traded := true  // Set breakout flag

// Execute short trade if the condition is met, and set the breakdown flag
if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Take Profit/Stop Loss", "Short", limit=close - take_profit_pips * pip, stop=close + stop_loss_pips * pip)
    breakdown_traded := true  // Set breakdown flag

// Plotting the previous day's high and low for visualization
plot(prevDayHigh, color=color.green, linewidth=1, title="Previous Day High")
plot(prevDayLow, color=color.red, linewidth=1, title="Previous Day Low")