역동적인 돈치안 채널 터치 엔트리 전략 (Post-Stop Loss Pause and Trailing Stop Loss)

저자:차오장, 날짜: 2024-01-24 15:07:18
태그:

img

전반적인 설명

컨트라리안 돈치안 채널 터치 엔트리 전략은 돈치안 채널 지표에 기반한 양적 거래 전략입니다. 위험 관리를 위해 스톱 로스 파우즈와 트레일 스톱 로스를 통합합니다.

이 전략은 가격이 돈치안 채널의 상부/하부 밴드에 닿을 때 긴/단지 포지션을 입력합니다. 매 거래에 스톱 러스 레벨과 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영업 영

전략 논리

이 전략은 상단, 하단 및 중선으로 구성된 20기 도 채널을 사용합니다.

엔트리 로직

가격이 하위 지대에 닿을 때 장거리, 가격이 상위 지대에 닿을 때 단거리.

트렌드를 추격하지 않기 위해 이전 같은 방향으로의 스톱 로스 후 일시 중지 (예를 들어 3 바) 가 필요합니다.

손실 을 멈추고 이득 을 취하라

각 거래에 대해 일정한 비율의 스톱 로스 (예: 22%) 및 위험/이익 비율 (예: 2) 을 기반으로 계산된 동적 취익을 설정합니다.

후속 스톱 손실

트레이딩 중 트래일링 스톱 로스를 사용하세요:

긴 거래에서, 가격이 중간선을 넘으면, 엔트리 가격과 중간 라인의 중간 지점으로 스톱 로스를 조정합니다.

반대의 경우, 중점선 아래를 가로지르는 짧은 포지션입니다.

장점

  1. 치안 채널의 탈출을 사용하여 트렌딩 움직임을 잡습니다.

  2. 역동적인 터치 엔트리는 트렌드 아이디어에 반대하는 거래와 일치합니다.

  3. 스톱 로스 일시 중지 및 트레일링 스톱으로 효과적인 리스크 관리

  4. 명확하고 적용하기 쉬운 규칙

위험성

  1. 트렌드를 따르는 시스템을 위해 시장을 뒤집어 놓습니다.

  2. 고정 스톱 손실은 조기 중단될 가능성이 있습니다.

  3. 지나치게 공격적인 후속 정지 조정은 수익성있는 거래를 너무 일찍 중단시킬 수 있습니다.

  4. 매개 변수 최적화는 매우 중요합니다.

더 나은 기회

  1. 가장 좋은 매개 변수를 위해 Donchian 채널 뷰백 기간을 최적화하십시오.

  2. 위치 크기를 조절하는 규칙을 포함합니다. 예를 들어 주기적으로 휴식 수를 재설정합니다.

  3. 다른 지표를 사용하여 필터를 추가하여 잘못된 파장을 피합니다.

  4. 동적 스톱 손실 실험

요약

컨트리아 돈치안 채널 터치 엔트리 전략은 트렌드 식별, 리스크 관리 및 기타를 통합합니다. 추가 매개 변수 조정 및 다른 모델과의 조합으로 경험이 많은 거래자에게 더 나은 안정성과 수익성을 얻을 수 있습니다.


/*backtest
start: 2023-01-17 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Contrarian Donchian Channel Strategy - Touch Entry with Post-SL Pause and Trailing Stop", overlay=true, default_qty_value=0.01, default_qty_type=strategy.percent_of_equity)

// Inputs
length = input(20, minval=1, title="Donchian Channel Length")
riskRewardRatio = input(2, title="Risk/Reward Ratio")
stopLossPercent = input(0.22, title="Stop Loss (%)") / 100
pauseCandles = input(3, minval=1, title="Pause After SL (Candles)")

// Donchian Channel Calculation
upper = highest(high, length)
lower = lowest(low, length)
centerline = (upper + lower) / 2  // Calculating the Centerline

// Plotting Donchian Channel and Centerline
plot(upper, color=color.red, title="Upper Band")
plot(lower, color=color.green, title="Lower Band")
plot(centerline, color=color.blue, title="Centerline")

// Tracking Stop Loss Hits and Pause
var longSLHitBar = 0
var shortSLHitBar = 0
var int lastTradeDirection = 0 // 1 for long, -1 for short, 0 for none

// Update SL Hit Bars
if (strategy.position_size[1] > 0 and strategy.position_size == 0)
    if (close[1] < strategy.position_avg_price[1])
        longSLHitBar := bar_index
        lastTradeDirection := 1

if (strategy.position_size[1] < 0 and strategy.position_size == 0)
    if (close[1] > strategy.position_avg_price[1])
        shortSLHitBar := bar_index
        lastTradeDirection := -1

// Entry Conditions - Trigger on touch
longCondition = (low <= lower) and (bar_index - longSLHitBar > pauseCandles or lastTradeDirection != 1)
shortCondition = (high >= upper) and (bar_index - shortSLHitBar > pauseCandles or lastTradeDirection != -1)

// Trade Execution
if (longCondition)
    strategy.entry("Long", strategy.long)
if (shortCondition)
    strategy.entry("Short", strategy.short)

// Initial Stop Loss and Take Profit Calculation
stopLoss = strategy.position_avg_price * (1 - stopLossPercent)
takeProfit = strategy.position_avg_price * (1 + stopLossPercent * riskRewardRatio)

// Trailing Stop Loss Logic
var float trailingStopLong = na
var float trailingStopShort = na

// Update Trailing Stop for Long Position
if (strategy.position_size > 0)
    if (close > centerline)
        trailingStopLong := (strategy.position_avg_price + centerline) / 2
    stopLoss := na(trailingStopLong) ? stopLoss : max(trailingStopLong, stopLoss)

// Update Trailing Stop for Short Position
if (strategy.position_size < 0)
    if (close < centerline)
        trailingStopShort := (strategy.position_avg_price + centerline) / 2
    stopLoss := na(trailingStopShort) ? stopLoss : min(trailingStopShort, stopLoss)

// Setting Stop Loss and Take Profit for each trade
strategy.exit("SL_TP_Long", "Long", stop=stopLoss, limit=takeProfit)
strategy.exit("SL_TP_Short", "Short", stop=stopLoss, limit=takeProfit)


더 많은