첫 번째 캔들 돌파 - 동적 트레일링 스톱 로스 및 마감 포지션 전략

ATR ADR SL TP EOD RANGE BREAKOUT Trailing Stop
생성 날짜: 2025-04-01 11:06:47 마지막으로 수정됨: 2025-04-01 11:06:47
복사: 0 클릭수: 378
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

첫 번째 캔들 돌파 - 동적 트레일링 스톱 로스 및 마감 포지션 전략 첫 번째 캔들 돌파 - 동적 트레일링 스톱 로스 및 마감 포지션 전략

첫 번째 경로 돌파 - 동적 추적 스톱 손실 및 종결 청산 전략은 시장 개시 후 첫 번째 경로 선의 가격 범위를 중요한 지원 및 저항 지점으로 사용하는 일일 거래 전략이다. 이 전략은 첫 번째 경로 형성 후 가격이 최고점 또는 최저점을 돌파 한 후에 다시 입문하는 것을 기다립니다. 동시에 첫 번째 경로 가격 범위에 기반한 동적 추적 스톱 손실 메커니즘을 사용하며 매일 특정 시간에 청산을 강제하여 야간 위험을 피합니다.

전략 원칙

이 전략은 시장 개시 후 첫 번째 선이 형성되는 가격 범위를 기반으로합니다. 전략의 핵심 논리는 다음과 같습니다.

  1. 사용자가 설정한 특정 시간 (설정값 9.15) 에서 당일 첫 번째 라인의 최고 가격과 최저 가격을 식별하고 기록한다.
  2. 첫 번째 선의 가격 범위를 계산합니다.
  3. 이 전략은 첫 번째 이 형성된 후 첫 번째 의 최고 가격을 돌파했을 때 더 많은 신호를 낸다.
  4. 첫 번째 이 형성된 후 첫 번째 의 최저 가격을 돌파했을 때, 전략은 마이너스 신호를 유발한다.
  5. 입점 후 동적 추적 스톱을 설정하고, 스톱 거리는 첫 번째 가격 범위의 1.5배 (변수 조정 가능) 이다.
  6. 다중 상위 포지션의 경우, 가격이 상승함에 따라, 스톱 로드 레벨도 그에 따라 상승하여, 현재 가격과의 거리가 고정된 스톱 로드 거리를 유지한다.
  7. 공백 포지션의 경우, 가격이 하락함에 따라 스톱 로드 수준도 그에 따라 낮아지고, 현재 가격과 일정한 거리만큼의 스톱 로드 거리를 유지한다.
  8. 매일 특정 시간 (默认15:30) 에 모든 입장을 강제적으로 매장하고, 야간 위험을 피한다.

이 전략은 확인 후 입문 메커니즘을 채택합니다. 즉, 가격이 첫 번째 벽의 고위 또는 낮은 지점을 실제로 돌파 한 후에 거래에 입문합니다. 가격이 이러한 수준을 만졌을 때 즉시 입문하는 것이 아니라, 가짜 돌파가 초래하는 위험을 줄이는 데 도움이됩니다.

전략적 이점

  1. 명확한 진입 신호이 전략은 명확한 가격 돌파 신호에 기반을 두고 있으며, 규칙은 간단하고 명확하며, 이해하기 쉽고 실행이 쉽다.
  2. 동적 위험 관리: 시장의 변동에 기반한 동적 추적 스톱 메커니즘을 채택하고, 스톱 거리는 당일 첫 번째 의 변동 범위에 따라 자동으로 조정하여 위험 관리를 더 적응시킵니다.
  3. 가짜 침입을 피하십시오.: 가격의 종결이 첫 번째 벽의 고위점이나 낮은 곳을 돌파할 때까지 기다림으로써, 가격이 이러한 수준을 만질 때만 입문하는 것이 아니라, 부분적으로 가짜 돌파 신호를 필터링하는 데 도움이 됩니다.
  4. 야간 위험을 피하세요매일 정해진 시간에 밀폐를 강제하는 것은 하룻밤 동안 지분을 보유할 때 발생할 수 있는 위험과 불확실성을 방지하기 위한 것이다.
  5. 시장의 변동에 적응하는 것이 전략의 입시점과 중지 수준은 당일 시장의 변동 정도에 따라 자동으로 조정됩니다. 변동이 큰 날에는 중단 거리가 넓고, 변동이 적은 날에는 중단 거리가 좁아집니다. 따라서 다른 시장 환경에 더 잘 적응합니다.
  6. 한 번만 거래하세요.매일 한 번만 거래할 수 있도록 하고, 과도한 거래를 방지하고 거래 비용을 절감합니다.
  7. 완전 자동화전략은 완전히 자동으로 실행되며, 인적 개입이 필요하지 않습니다. 실시간으로 시장을 모니터링 할 시간이없는 거래자에게 적합합니다.

##, 전략적 위험

이 전략은 장점이 있지만 몇 가지 잠재적인 위험도 있습니다.

  1. 가짜 해킹의 위험: 전략은 가격의 종결을 기다리며 다시 시장에 진입하지만, 여전히 가짜 돌파구가 발생할 수 있습니다. 즉, 가격의 돌파구 이후 급격히 물러나서, 스톱 손실이 유발됩니다. 해결책은 거래량 확인 또는 트렌드 확인과 같은 추가 확인 지표를 추가하는 것을 고려할 수 있습니다.
  2. 스탠더드 거리 너무 커요: 변동이 많은 날에는 첫 번째 의 구간이 넓을 수 있으며, 이로 인해 막힘이 너무 커서 단독 손실이 더 많이 발생합니다. 해결책은 최대 막힘의 절대값을 설정할 수 있는 상한치입니다.
  3. 스탠드 거리 너무 작습니다.반대로, 변동이 적은 날에는 첫 번째 간격이 좁아질 수 있으며, 이로 인해 막힘이 너무 작아서 시장 소음에 쉽게 자극됩니다. 해결책은 최소 막힘의 절대값 하위값을 설정할 수 있습니다.
  4. 큰 일을 놓치고 있습니다.: 전략은 하루에 한 번만 거래를 허용하고, 고정 시간에 평점을 강제하기 때문에, 지속적 인 큰 상황을 놓칠 수 있습니다. 해결책은 특정 조건에서 상장을 하룻밤 동안 허용하는 것을 고려할 수 있습니다.
  5. 시간 의존성: 전략은 첫 번째 줄이 형성되는 시간과 강제 평점 시간이 엄격하게 요구되며, 시간에 대한 의존성이 강하며, 다른 시장이나 다른 시간대에 따라 변수를 조정해야 할 수 있습니다. 해결책은 특정 시장의 거래 시간에 따라 변수를 조정하는 것입니다.
  6. 비영리 목적전략은 명확한 수익 목표를 설정하지 않고, 거래 종료를 위해 스톱 손실 또는 일일 평점을 추적하는 것에 전적으로 의존합니다. 최적의 위치에 수익을 창출하는 데 실패 할 수 있습니다. 해결책은 지원 / 저항 수준 또는 기술 지표에 기반한 수익을 창출하는 것을 고려 할 수 있습니다.
  7. 매개변수 민감도: 전략의 성능은 파라미터 설정 (예: 시작 시간, 종료 시간, 스톱 로즈 배수 추적 등) 에 매우 민감할 수 있으며, 철저한 재검토와 최적화가 필요합니다.

전략 최적화 방향

위와 같은 위험들에 대해, 이 전략은 다음과 같은 방향으로 최적화될 수 있습니다:

  1. 필터링 조건을 추가: 시장 트렌드 지표 또는 거래량 지표와 결합하여, 트렌드 방향이 일치하거나 거래량이 확인된 경우에만 진입하여 가짜 돌파의 위험을 줄일 수 있습니다. 예를 들어, 이동 평균을 트렌드 필터로 추가하거나 돌파 할 때 거래량이 크게 증가하도록 요청할 수 있습니다.
  2. 손해 방지 제도를 최적화: 절감 거리를 절대값의 상하계로 설정하여 극한 변동의 날에도 합리적인 위험 수준을 유지할 수 있다. ATR (진실 변동의 평균) 지표와 결합하여 더 역동적인 절감 거리를 설정하는 것을 고려할 수 있다.
  3. 일부 수익 메커니즘을 도입: 가격이 어떤 목표에 도달했을 때 (예를 들어, 1 영역의 2배 또는 3배) 일부 평소 포지션이 수익을 얻을 수 있으며, 나머지 포지션은 추적 중지 관리를 계속 사용할 수 있습니다.
  4. 야간 보유 조건이 증가특정 조건에서 (예: 트렌드가 강하거나 진입점으로부터 멀리 떨어져있는 경우) 일부 또는 전체 포지션을 야간 보유하여 큰 트렌드 상황을 파악할 수 있습니다.
  5. 시간 필터를 추가하세요시장의 변동성이 낮거나 불확실성이 높은 시점에 거래하는 것을 피하십시오. 중요한 경제 데이터가 발표되기 전에 또는 후에 입장을 피하십시오.
  6. 최적화 매개 변수 적응 메커니즘: 전략이 최근 시장 상황에 따라 자동으로 파라미터를 조정할 수 있도록, 예를 들어 최근 며칠 동안의 평균 변동성에 따라 추적 스톱 로즈 배수를 조정합니다.
  7. 시장 환경 인식에 참여다른 시장 환경에서 다른 거래 매개 변수 또는 다른 거래 논리를 사용하여 전략의 적응성을 향상시킵니다.
  8. 다중 시간 프레임 분석을 고려하십시오.: 더 큰 시간 프레임의 시장 구조와 결합하여 주 트렌드 방향과 일치하는 거래, 역전 거래를 피하십시오.
  9. 자금 관리 모듈 추가: 시장의 변동성과 역사적 성과에 따라 포지션 크기를 조정하고, 불확실성이 높은 기간 동안 포지션을 줄이고, 전략이 잘하는 기간 동안 포지션을 늘립니다.

요약하다

첫 번째 ?? 브레이크 - 동적 추적 스톱 & 클로즈 시트 전략은 시장 개장 후 첫 번째 ?? 라인 가격 간격을 기반으로 한 일간 거래 전략이다. 그것은 확인된 가격 브레이크 신호를 이용한 후 시장 변동에 기반한 동적 추적 스톱 손실 장치를 사용하여 위험을 관리하고 매일 고정 시간 동안 평점을 강제하여 야간 위험을 회피한다.

이 전략의 장점은 진입 신호를 명확하게 하고, 위험 관리를 동적으로 하고, 가짜 돌파구 및 하룻밤 사이에 위험을 피하고, 시장의 변동에 적응하고, 과도한 거래를 제한하고, 완전히 자동화 할 수 있다는 것입니다. 그러나, 그것은 또한 가짜 돌파구 위험, 불합리한 중단 거리, 큰 상황을 놓치고, 시간 의존성, 수익 목표의 부재 및 변수 감수성 등과 같은 도전에 직면합니다.

필터링 조건을 추가하고, 스톱로스 메커니즘을 최적화하고, 일부 수익 메커니즘을 도입하고, 오프나이트 포지션 조건을 추가하고, 시간 필터를 추가하고, 변수 적응 메커니즘을 최적화하고, 시장 환경 식별을 추가하고, 다중 시간 프레임 분석을 고려하고, 자금 관리 모듈을 추가함으로써 전략의 안정성과 수익성을 더욱 향상시킬 수 있습니다.

전체적으로, 이것은 명확하고, 논리적으로 합리적인 일일 거래 전략이며, 자동화된 시스템을 통해 일일 거래를 하고, 위험을 엄격하게 통제하려는 거래자에게 적합하다. 이 전략은 타겟팅된 최적화와 적절한 매개 변수의 조정으로, 다양한 시장 환경에서 안정적인 성능을 기대한다.

전략 소스 코드
/*backtest
start: 2025-03-24 00:00:00
end: 2025-03-31 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"TRX_USDT"}]
*/

//@version=5
strategy("First Candle Breakout - Trailing Stop & EOD Close", overlay=true)

// User Inputs
startHour = input(9, "Start Hour (Exchange Time)")
startMinute = input(15, "Start Minute (Exchange Time)")
endHour = input(15, "End Hour (Exchange Time)")  // Market closing hour
endMinute = input(30, "End Minute (Exchange Time)")
trailStopMultiplier = input(1.5, "Trailing Stop Multiplier")  // 1.5x first candle range

// Variables to store the first candle's high & low
var float firstCandleHigh = na
var float firstCandleLow = na
var bool tradeTaken = false  // Ensures only one trade per day
var int tradeDirection = 0   // 1 for long, -1 for short
var float trailStopLevel = na  // Trailing stop level

// Identify first candle's high & low
if (hour == startHour and minute == startMinute and bar_index > 1)
    firstCandleHigh := high
    firstCandleLow := low
    tradeTaken := false  // Reset trade flag at start of day
    tradeDirection := 0   // Reset trade direction
    trailStopLevel := na  // Reset trailing stop

// Calculate first candle range
firstCandleRange = firstCandleHigh - firstCandleLow
trailStopDistance = firstCandleRange * trailStopMultiplier

// Buy condition: Close above first candle high AFTER the first candle closes
longCondition = not na(firstCandleHigh) and close > firstCandleHigh and not tradeTaken and hour > startHour
if (longCondition)
    strategy.entry("Buy", strategy.long, comment="Buy")
    trailStopLevel := close - trailStopDistance  // Set initial trailing stop
    tradeTaken := true
    tradeDirection := 1

// Sell condition: Close below first candle low AFTER the first candle closes
shortCondition = not na(firstCandleLow) and close < firstCandleLow and not tradeTaken and hour > startHour
if (shortCondition)
    strategy.entry("Sell", strategy.short, comment="Sell")
    trailStopLevel := close + trailStopDistance  // Set initial trailing stop
    tradeTaken := true
    tradeDirection := -1

// Update trailing stop for long trades
if (tradeDirection == 1 and not na(trailStopLevel))
    trailStopLevel := nz(trailStopLevel, close - trailStopDistance)  // Initialize if na
    trailStopLevel := math.max(trailStopLevel, close - trailStopDistance)  // Adjust trailing stop up
    if (close <= trailStopLevel)  // Stop loss hit
        strategy.close("Buy", comment="Trailing SL Hit")

// Update trailing stop for short trades
if (tradeDirection == -1 and not na(trailStopLevel))
    trailStopLevel := nz(trailStopLevel, close + trailStopDistance)  // Initialize if na
    trailStopLevel := math.min(trailStopLevel, close + trailStopDistance)  // Adjust trailing stop down
    if (close >= trailStopLevel)  // Stop loss hit
        strategy.close("Sell", comment="Trailing SL Hit")

// Close trade at end of day if still open
if (tradeTaken and hour == endHour and minute == endMinute)
    strategy.close_all(comment="EOD Close")