돈치안 채널 돌파 전략


생성 날짜: 2023-12-04 14:16:33 마지막으로 수정됨: 2023-12-04 14:16:33
복사: 0 클릭수: 641
avatar of ChaoZhang ChaoZhang
1
집중하다
1619
수행원

돈치안 채널 돌파 전략

개요

동치안 통로 돌파 전략은 가격 행동과 추세에 기반한 돌파 거래 전략이다. 동치안 통로 상향과 하향을 사용하여 잠재적인 돌파점을 식별하고, 가격이 통로를 돌파했을 때 다단 또는 공백 위치를 열는다.

전략 원칙

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

  1. Ta.highest 및 Ta.lowest 함수를 사용하여 일정 주기 (예: 60 K 선) 의 최고 가격과 최저 가격을 계산하여 동치안 통로의 상반 및 하반을 구성하십시오.

  2. 가격이 상도를 돌파할 때, 시장이 다단계 트렌드에 들어갈 수 있다고 생각하기 때문에, 상도를 돌파할 때 다음 K선 열판에 더 많이 한다. 가격이 하도를 돌파할 때, 시장이 공백 트렌드에 들어갈 수 있다고 생각하기 때문에, 하도를 돌파할 때 다음 K선 열판에 공백한다.

  3. 가격이 다시 하락하거나 다시 하락하면, 트렌드가 변하는 것으로 간주되며, 이 때 현재의 상위 또는 공백 포지션을 평행합니다.

  4. 위험을 통제하기 위해, 추가 코스카이드를 한 후의 스톱로스는 포지션 개시 가격을 거나 최소 점프 가격을 더하는 것으로 설정된다.

이 채널을 기반으로 한 전략은 간단하고 직접적이며, 가격 행동을 고려하고 트렌드 특성을 결합하여 작동하기 쉽고 안정적입니다.

우위 분석

이 전략에는 다음과 같은 장점이 있습니다.

  1. 전략 논리는 명확하고 간결하며, 이해하기 쉽고 실행 가능하며, 실용성이 강하다.

  2. 동치안 통로를 사용하여 트렌드 방향을 판단하여, 잡음을 효과적으로 필터링하여 신뢰할 수 있는 돌파 신호를 식별할 수 있다.

  3. 더 많은 상장 후의 중지 손실 설정은 합리적이며, 단일 손실을 잘 제어 할 수 있습니다.

  4. 시장 상태가 어떻든, 가격이 효과적으로 돌파할 수 있는 한, 이 전략은 잠재적인 추세를 잡기 위해 순조롭게 진행될 수 있다.

  5. 전략 파라미터가 적고, 너무 잘 어울리지 않고, 파라미터를 최적화할 수 있는 공간이 넓고, 유연성이 강하다.

위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. 트렌드를 따르는 전략, 역동적인 상황을 잡지 못하는 전략.

  2. 스톱 손실 지점 근처에는 가격의 단선 변동으로 스톱 손실이 발생할 수 있습니다.

  3. 통로 길이 설정이 잘못되면 가짜 돌파구가 발생할 확률이 높아집니다.

위와 같은 위험에는 다음과 같은 대응이 가능합니다.

  1. 다른 지표와 함께 잠재적인 반전 신호를 식별하여 강제적인 팔로잉을 피하십시오.

  2. 이윤을 잠금하기 위해 합리적인 후속 손실을 설정하고, 초기 손실을 잠금하는 데에는 동떨어지지 않습니다.

  3. 다양한 변수값을 테스트하여 최적의 변수 조합을 찾습니다.

최적화 방향

이 전략에는 더 많은 최적화 가능성이 있습니다:

  1. 두 개의 통로로 돌파하는 전략을 시도하십시오. 하나의 통로는 진입 지점을 결정하고 다른 통로는 중단 지점 또는 중단 지점을 결정합니다.

  2. 가격 돌파 통로가 틱을 쳤을 때 다시 포지션을 열고, 일부 가짜 돌파를 필터링한다.

  3. 거래량이나 변동률 지표 필터를 추가하여 가격의 급격한 변동으로 인해 잘못된 거래가 발생하지 않도록하십시오.

  4. 트렌드 팔로우링 전략이나 역전 전략과 같은 다른 포지션 전략을 시도해 보세요. 여러 조합이 더 좋은 결과를 가져올 수 있습니다.

  5. 리스크 관리 모듈을 추가하여 일일 최대 손실, 최대 인출을 제어합니다.

요약하다

둥근 통로 돌파 전략은 전체적으로 매우 실용적인 단기 트렌드 추적 전략이다. 그것은 가격 행동을 판단하고, 잠재적인 트렌드의 변화를 식별하여, 통로 돌파를 사용하여 포지션을 열는다. 전략 논리는 간결하고, 작동하기 쉽고, 다양한 시장에서 좋은 효과를 얻을 수 있다.

전략 소스 코드
/*backtest
start: 2023-11-03 00:00:00
end: 2023-12-03 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Step 1. Define strategy settings
strategy(title="Price action and breakout Channel Forexrn", overlay=true,
     pyramiding=0, initial_capital=100000,
     commission_type=strategy.commission.cash_per_order,
     commission_value=4, slippage=2)

dochLen = input.int(60, title="Price action and breackout Channel Forexrn")

// Position sizing inputs
usePosSize    = input.bool(true, title="Use Position Sizing?")
atrLen        = input.int(10, title="ATR Length")
atrRiskOffset = input.float(4, title="ATR Risk Offset Multiple", step=0.25)

maxRisk = input.float(2, title="Max Position Risk %", step=.25, 
     minval=0.25, maxval=15)
maxExposure = input.float(10, title="Max Position Exposure %", step=1, 
     minval=1, maxval=100)
marginPerc = input.int(10, title="Margin %", minval=1, maxval=100)

// Step 2. Calculate strategy values
upperband = ta.highest(high, dochLen)[1]
lowerband = ta.lowest(low, dochLen)[1]

// Calculate position size
riskEquity = (maxRisk * 0.01) * strategy.equity
riskTrade  = (ta.atr(atrLen) * atrRiskOffset) * syminfo.pointvalue

maxPos = ((maxExposure * 0.01) * strategy.equity) /
     ((marginPerc * 0.01) * (close * syminfo.pointvalue))

posSize = usePosSize ? math.min(math.floor(riskEquity / riskTrade), maxPos) : 1

// Step 3. Output strategy data
plot(upperband, color=color.green, linewidth=2, title="DoCh Upperband")
plot(lowerband, color=color.red, linewidth=2, title="DoCh Lowerband")

// Step 4. Determine trading conditions
tradeWindow  = true

tradeAllowed = tradeWindow and bar_index > dochLen

// Step 5. Submit entry orders
if tradeAllowed
    if strategy.position_size < 1
        strategy.entry("EL", strategy.long, qty=posSize,
             stop=upperband + syminfo.mintick)

    if strategy.position_size > -1
        strategy.entry("ES", strategy.short, qty=posSize,
             stop=lowerband - syminfo.mintick)

// Step 6. Submit exit orders
if not tradeWindow
    strategy.close_all()