스마트 반전 논리를 활용한 고급 시간 세션 거래 전략

EMAT RSI SL/TP RR NY SESSION LIMIT ORDERS risk management FIBONACCI
생성 날짜: 2025-06-27 11:33:45 마지막으로 수정됨: 2025-06-27 11:33:45
복사: 4 클릭수: 256
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

스마트 반전 논리를 활용한 고급 시간 세션 거래 전략 스마트 반전 논리를 활용한 고급 시간 세션 거래 전략

개요

“고도 시간 세션 거래 전략과 지능형 역전 논리”는 1시간 시간 프레임 내에서 세션 거래를 위해 특별히 설계된 정밀한 양적 거래 전략이다. 이 전략은 방향 확인, 리스크 파라미터를 미리 정의하고 밤새 실행되는 제한 주문을 사용하여 시장 우위를 획득한다. 이 전략의 핵심은 뉴욕 시간 08:00의 오프닝 가격과 18:00의 오프닝 가격을 비교하여 거래 방향을 결정하고 전날의 추세에 따라 지능적인 역전 판단을 함으로써 동력이 소모되는 것을 효과적으로 피하고 수정적 역전을 포착한다. 이 전략은 사용자 정의 된 스톱 손실, 스톱 설정 및 위험 파라미터 제어를 통해 완전히 자동화 된 거래 환경을 구현한다.

전략 원칙

이 전략의 핵심 원칙은 시간적 특정 지점의 가격 관계 분석과 지능적인 역전 논리에 기반합니다:

  1. 방향 확인 메커니즘매일 뉴욕시 시간으로 18:00시, 시스템은 그날 08:00시의 상장 가격과 18:00시의 상장 가격을 비교한다. 그날의 가격 방향이 전날과 동일하다면, 전략은 신호를 반전한다. 방향이 다르다면, 그날의 트렌드 방향을 유지한다. 이러한 논리는 트렌드 소모를 피하고 가격 수정을 포착하기 위한 것이다.

  2. 입점 지점 정의이 시스템은 자동으로 확인된 방향에 따라 입구 지점을 설정합니다.

    • 구매 신호: 당일 최저 가격을 입점으로 사용함
    • 판매 신호: 당일 최고 가격을 입점으로 사용한다. 시스템은 사용자가 정의한 점수에 따라 스톱로즈와 스톱 레벨을 설정합니다.
  3. 시간 제한으로 접속: 주문은 뉴욕시 시간으로 18:00 이후 발송되며, 18:00부터 다음 날 08:00까지 언제든 트리거할 수 있다. 다음 날 08:00까지 입점점이 닿지 않으면, 주문은 자동으로 취소된다.

  4. 수동 평점 기능: 만약 거래가 설정된 시간에 (미래 뉴욕시 09:00) 여전히 열려 있다면, 시스템은 모든 포지션을 닫아 실제 일일 종료 시나리오를 모방한다.

  5. 리스크에 기반한 포지션 계산포지션 크기는 계정 규모, 위험 비율 및 중지 거리에 따라 동적으로 계산되며, 시장의 변동에 관계없이 위험 노출이 항상 동일하게 유지되도록합니다.

전략적 이점

코드의 심층적인 분석을 통해, 이 전략은 다음과 같은 중요한 장점을 보여준다:

  1. 정확한 거래 실행 시간전략: 특정 시점을 활용하여 (뉴욕시 08:00과 18:00) 의사결정과 실행을 통해 시장의 중요한 순간에 기회를 잡는 것을 보장합니다. 이 시간 기반 방식은 노이즈 거래를 줄이고 거래의 예측성을 증가시킵니다.

  2. 지능형 역전 논리이 전략은 2 일 연속으로 가격 방향을 비교함으로써 잠재적인 트렌드 소모점을 식별하고 적절한 시간에 방향을 전환 할 수 있습니다. 이 방법은 너무 길어진 트렌드를 쫓는 것을 피하고 입장의 정확성을 높이는 데 도움이됩니다.

  3. 리스크 관리 통합이 전략은 다음과 같은 포괄적 인 위험 관리 기능을 내장합니다.

    • 사전 설정된 스톱/스트롭 설정
    • 계정 크기와 위험 용도에 따라 동적 위치 계산
    • 시간 기반의 자동 평점 메커니즘
  4. 제한 주문의 장점: 시장 가격 주문이 아닌 제한 가격 주문을 사용하여 거래가 더 유리한 가격으로 실행되도록하고, 슬라이드 포인트를 줄이고, 불리한 조건으로 입시를 피하십시오.

  5. 완전 자동화일단 설정되면, 전략은 완전히 자동화되어, 지속적인 모니터링이 필요없고, 감정적 방해와 인적 오류가 줄어들 수 있습니다.

전략적 위험

이 전략은 훌륭하게 설계되었지만 다음과 같은 위험이 있습니다.

  1. 거래 기회를 놓친 것출입 지점은 당일 최고/최저 지점에 기반하고 시간 제한이 있기 때문에, 전략은 가격이 설정 지점에 도달하지 않은 상태에서 거래 기회를 놓칠 수 있습니다. 특히 낮은 변동성 환경에서 이러한 상황은 더 일반적입니다.

  2. 리버스 로직 실패의 위험강세를 보이는 시장에서, 방향의 유사성에 기반한 반전 논리는 손실의 위험을 증가시키는 조기 적대 거래로 이어질 수 있다.

  3. 시간 의존성전략은 특정 시점에 매우 의존하며, 다른 시장이나 비정상적인 거래 시간에 효과가 떨어질 수 있다.

  4. 고정 손실 위험고정된 점수를 스톱로 사용하는 것은 모든 시장 조건에 적합하지 않을 수 있습니다. 특히 변동성이 급격히 증가하는 경우입니다.

해결책:

  • 현재 시장의 변동성에 따라 조정되는 적응적 상쇄를 실행합니다.
  • 극단적인 시장 조건에서 거래하는 것을 피하기 위해 추가 필터링 조건을 추가합니다.
  • 입시 신호 품질을 향상시키기 위해 다중 시간 프레임 확인을 도입합니다.
  • 높은 변동성 기간 동안 포지션 규모를 줄이는 것을 고려하십시오.

최적화 방향

이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.

  1. 동적 정지/정지 레벨: 현재 전략은 고정 점수를 손해와 중단으로 사용하며, 다른 시장 조건에 더 잘 적응하기 위해 ATR 또는 변동성 비율을 기반으로 한 동적 수준으로 개선 할 수 있습니다. 시장의 변동성이 시간이 지남에 따라 변하기 때문에 고정 점수는 높은 변동성 시에는 너무 작고 낮은 변동성 시에는 너무 커질 수 있습니다.

  2. 트렌드 필터 추가: 트렌드 지표를 도입하기 (예: 이동 평균 교차 또는 ADX) 추가 확인으로, 유리한 트렌드 환경에서만 거래하십시오. 이것은 시장의 잘못된 신호를 줄이고 전체 승률을 높일 것입니다.

  3. 시간 창을 최적화다른 시점의 조합을 재검토하여 특정 시장의 최적의 시점 창을 찾습니다. 다른 금융 도구는 다른 시간에 독특한 행동 패턴을 나타낼 수 있습니다.

  4. 다중 주기 확인을 추가1시간 신호를 검증하기 위해 더 높은 시간 프레임 (예: 4시간 또는 일선) 의 방향을 검사하여 거래가 더 큰 추세에 부합하는지 확인한다. 이 방법은 역동 거래의 위험을 줄일 수 있다.

  5. 일부 수익 메커니즘을 구현: 특정 수익 수준에 도달했을 때 일부 포지션을 청산하는 기능을 추가하여 수익의 일부를 잠금하고 나머지 포지션이 계속 작동하도록 허용합니다. 이것은 높은 수익 잠재력을 유지하면서 전반적인 수익 안정성을 향상시킬 수 있습니다.

요약하다

고급 시간 세션 거래 전략과 지능형 역전 논리 (Advanced Time Session Trading Strategy with Intelligent Reversal Logic) 는 시간 특정 의사 결정 지점, 지능형 방향 확인 및 포괄적 인 위험 관리를 결합한 정교하게 설계된 정량 거래 시스템입니다. 뉴욕 시간 08:00과 18:00의 중요한 시간 지점을 통해 가격 관계를 분석하고 지능형 역전 논리를 적용하여 잠재적인 트렌드 소진 지점과 수정적 역전 기회를 효과적으로 식별 할 수 있습니다.

전략의 제한 가격 주문 메커니즘은 더 유리한 입시 가격을 보장하고, 사전 정의 된 위험 변수와 동적 포지션 계산은 일관된 위험 제어를 제공합니다. 거래 기회를 놓친 것과 특정 시장 조건에서 리버스 논리가 작동하지 않는 것과 같은 몇 가지 고유한 위험이 있음에도 불구하고, 이러한 것은 제안된 최적화 방향에 의해 완화 될 수 있습니다.

동적 스톱/스트롭 레벨을 구현하고, 트렌드 필터를 추가하고, 시간 창을 최적화하고, 다중 주기 확인 및 부분 수익 메커니즘을 추가함으로써, 이 전략은 성능과 적응력을 더욱 향상시킬 잠재력을 가지고 있다. 전체적으로, 이것은 구조가 완벽하고, 논리가 명확한 거래 시스템이며, 특히 일일 거래에서 자동화와 규율을 실현하고자 하는 거래자에게 적합하다.

전략 소스 코드
/*backtest
start: 2024-06-27 00:00:00
end: 2025-06-25 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":50000000}]
*/

//@version=6
strategy("LANZ Strategy 1.0 [Backtest]", overlay=true, default_qty_type=strategy.cash, default_qty_value=100)

// === TIMEFRAME RESTRICTION ===
if timeframe.period != "60"
    runtime.error("🚫 LANZ Strategy 1.0 is only available on the 1h timeframe.")

// === INPUTS ===
accountSizeUSD = input.int(100000, title="Account #1 - Capital ($)", minval=1, group="💸 Main Account Management")
riskPercent = input.float(1.0, title="Account #1 - Risk (%)", minval=0.1, maxval=100, group="💸 Main Account Management")
slPipsInput = input.int(18, title="Stop Loss (pips)", minval=1, group="📏 Risk Settings")
tpPipsInput = input.int(54, title="Take Profit (pips)", minval=1, group="📏 Risk Settings")
manualCloseHour = input.int(9, title="Hora de Cierre Manual (NY)", minval=0, maxval=23, group="🔚 Cierre Manual")

// === GLOBALS ===
pipSize = syminfo.mintick * 10
var float openAt0800 = na
var float closeAt1800 = na
var int priceDirection = na
var int prevPriceDirection = na
var int todayPriceDirection = na
var int finalSignalDirection = na
var float baseLevel = na
var float baseSL = na
var float baseTP = na
var bool orderSent = false

// === KEY TIMES ===
is0800 = (hour(time, "America/New_York") == 8 and minute(time, "America/New_York") == 0)
is1800 = (hour(time, "America/New_York") == 18 and minute(time, "America/New_York") == 0)
nyHour = hour(time, "America/New_York")
nyMinute = minute(time, "America/New_York")
entryWindow = (nyHour >= 18 or nyHour < 8)
cutoffPassed = not entryWindow
isManualClose = (nyHour == manualCloseHour and nyMinute == 0)

// === CAPTURE OPEN AND CLOSE ===
if is0800
    openAt0800 := open
if is1800
    closeAt1800 := close
    priceDirection := closeAt1800 > openAt0800 ? 1 : closeAt1800 < openAt0800 ? -1 : 0
    prevPriceDirection := todayPriceDirection
    todayPriceDirection := priceDirection

    coinciden = priceDirection == prevPriceDirection and not na(prevPriceDirection)
    finalSignalDirection := coinciden ? priceDirection : -1 * priceDirection

    fibRange = high - low
    baseLevel := finalSignalDirection == -1 ? low : high
    baseSL := finalSignalDirection == -1 ? baseLevel - slPipsInput * pipSize : baseLevel + slPipsInput * pipSize
    baseTP := finalSignalDirection == -1 ? baseLevel + tpPipsInput * pipSize : baseLevel - tpPipsInput * pipSize

    orderSent := false

// === LIMIT ORDER SENDING (AT 19:00 AND FOLLOWING IF NOT YET TOUCHED) ===
canPlaceOrder = not orderSent and strategy.opentrades == 0 and entryWindow
if canPlaceOrder
    slPips = math.abs(baseLevel - baseSL) / pipSize
    riskUSD = accountSizeUSD * (riskPercent / 100)
    qty = slPips > 0 ? (riskUSD / (slPips * 10)) : na
    if not na(qty)
        isLong = finalSignalDirection == -1
        if isLong
            strategy.entry("BUY", strategy.long, qty=qty, limit=baseLevel)
            strategy.exit("TP/SL BUY", from_entry="BUY", stop=baseSL, limit=baseTP)
        else
            strategy.entry("SELL", strategy.short, qty=qty, limit=baseLevel)
            strategy.exit("TP/SL SELL", from_entry="SELL", stop=baseSL, limit=baseTP)
        orderSent := true

// === CANCEL IF NO EP TOUCHED BEFORE 08:00 NY ===
if cutoffPassed and strategy.opentrades == 0 and orderSent
    strategy.cancel("BUY")
    strategy.cancel("SELL")
    orderSent := false

// === MANUAL CLOSING AT HH:00 NY CONFIGURABLE ===
if strategy.opentrades > 0 and isManualClose
    strategy.close("BUY")
    strategy.close("SELL")