다단계 이익 목표 및 동적 손절매 강화된 양적 전략

TP SL ML QS AT EXIT ENTRY
생성 날짜: 2025-02-20 11:36:09 마지막으로 수정됨: 2025-02-20 14:56:34
복사: 1 클릭수: 314
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

다단계 이익 목표 및 동적 손절매 강화된 양적 전략 다단계 이익 목표 및 동적 손절매 강화된 양적 전략

개요

이 전략은 metrobonez1ty 전략 테스터를 기반으로 개발된 강화형 정량화 거래 전략이다. 이 전략의 주요 특징은 다단계 수익 목표 및 동적 중지 손실 메커니즘을 구현하는 동시에 외부 지표 신호와 통합하는 유연성을 유지하는 것이다. 이 전략은 최대 3 개의 수익 목표 위치를 지원하며, 지표 기반의 손실 트리거를 선택적으로 사용하여 추가 신호 확인을 통해 거래 입시를 필터링한다.

전략 원칙

전략의 핵심 논리는 다단계 퇴출 메커니즘을 중심으로 펼쳐진다. 입시 측면에서 전략은 longEntry와 shortEntry의 두 가지 입력원을 통해 다단계 및 공허 거래 신호를 유발한다. 각 거래 방향에 대해 전략은 세 개의 독립적인 수익 목표 (TP1, TP2, TP3) 를 설정하고, 각 목표는 외부 지표 신호에 따라 동적으로 조정할 수 있다.

전략적 이점

  1. 유연한 퇴출 메커니즘: 여러 수익 목표 위치를 지원하고 시장 상황에 따라 단계적으로 퇴출 할 수 있습니다.
  2. 다이내믹 리스크 관리: 외부 지표 신호를 통해 다이내믹하게 손해 지점을 조정하여 더 지능적인 리스크 관리를 제공합니다.
  3. 고도로 사용자 정의 가능: 전략의 입구 및 출구 조건은 외부 지표를 통해 사용자 정의 할 수 있으며, 다른 거래 스타일에 적합합니다.
  4. 완벽한 필터링 메커니즘: 복수의 신호 확인을 요구하여 가짜 신호의 영향을 줄인다.

전략적 위험

  1. 신호 의존 위험: 전략은 외부 지표 신호의 품질에 크게 의존하고, 지표 신호가 정확하지 않으면 잘못된 거래가 발생할 수 있다.
  2. 매개 변수 최적화 위험: 여러 수익 목표와 스톱로스 매개 변수가 신중하게 최적화되어야 하며, 과도한 최적화는 과합으로 이어질 수 있다.
  3. 시장 환경 적응성 위험: 다양한 시장 환경에서 고정된 다단계 수익 목표가 충분히 유연하지 않을 수 있다.

전략 최적화 방향

  1. 동적 변수 조정: 시장의 변동성에 따라 수익 목표와 중지 손실 변수를 자동으로 조정하는 적응 장치를 도입 할 수 있습니다.
  2. 신호 품질 평가: 진입 및 출구 신호의 품질 평가 메커니즘을 추가하여 거래의 정확성을 더욱 향상시킵니다.
  3. 포지션 관리 최적화: 다른 수익 목표에 따라 다른 포지션 할당 비율을 설정할 수 있다.
  4. 시장 환경 인식: 시장 환경 인식 모듈을 추가하여 다른 시장 조건에 따라 다른 파라미터 설정을 사용합니다.

요약하다

이 전략은 다단계 수익 목표와 동적 스톱 로즈 메커니즘을 통해 포괄적인 거래 프레임워크를 제공합니다. 전략의 장점은 유연성과 사용자 정의에 있습니다. 그러나 동시에 파라미터 최적화 및 시장 적응성에 대한 문제를 신중하게 처리해야합니다. 제안된 최적화 방향을 통해 전략은 더욱 안정성과 적응성을 향상시킬 수 있으며 더 완벽한 거래 시스템입니다.

전략 소스 코드
/*backtest
start: 2025-02-04 00:00:00
end: 2025-02-18 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Enhanced Strategy Tester with multi TP and SL Trigger", overlay=true, margin_long=100, margin_short=100)

// Entry Signals
longEntry = input.source(close, 'Long Entry Trigger', 'long signal source')
shortEntry = input.source(close, 'Short Entry Trigger', 'short signal source')

// Exit Triggers
activateLongExit = input.bool(false, 'Activate Long Exit Signals')
longExit1 = input.source(high, 'Long Exit TP1')
longExit2 = input.source(high, 'Long Exit TP2')
longExit3 = input.source(high, 'Long Exit TP3')

activateShortExit = input.bool(false, 'Activate Short Exit Signals')
shortExit1 = input.source(low, 'Short Exit TP1')
shortExit2 = input.source(low, 'Short Exit TP2')
shortExit3 = input.source(low, 'Short Exit TP3')

// Stop Loss from External Indicator
useSLSignal = input.bool(false, 'Activate SL Signal')
slSignal = input.source(low, 'SL', 'SL Signal Source')

// Long Entry Condition
longCondition = not na(longEntry) and longEntry > 0
if (longCondition and strategy.opentrades == 0)
    strategy.entry('long', strategy.long)
    strategy.exit('exit_long_tp1', 'long', limit=longExit1, comment='TP1 hit')
    strategy.exit('exit_long_tp2', 'long', limit=longExit2, comment='TP2 hit')
    strategy.exit('exit_long_tp3', 'long', limit=longExit3, comment='TP3 hit')
    strategy.exit('exit_long_sl', 'long', stop=useSLSignal ? slSignal : na, comment='SL hit')

// Long Exit Condition
if (activateLongExit)
    if (not na(longExit1) and longExit1 > 0)
        strategy.close('long', comment='TP1 at Exit')
    if (not na(longExit2) and longExit2 > 0)
        strategy.close('long', comment='TP2 at Exit')
    if (not na(longExit3) and longExit3 > 0)
        strategy.close('long', comment='TP3 at Exit')

// Short Entry Condition
shortCondition = not na(shortEntry) and shortEntry > 0
if (shortCondition and strategy.opentrades == 0)
    strategy.entry('short', strategy.short)
    strategy.exit('exit_short_tp1', 'short', limit=shortExit1, comment='TP1 hit')
    strategy.exit('exit_short_tp2', 'short', limit=shortExit2, comment='TP2 hit')
    strategy.exit('exit_short_tp3', 'short', limit=shortExit3, comment='TP3 hit')
    strategy.exit('exit_short_sl', 'short', stop=useSLSignal ? slSignal : na, comment='SL hit')

// Short Exit Condition
if (activateShortExit)
    if (not na(shortExit1) and shortExit1 > 0)
        strategy.close('short', comment='TP1 at Exit')
    if (not na(shortExit2) and shortExit2 > 0)
        strategy.close('short', comment='TP2 at Exit')
    if (not na(shortExit3) and shortExit3 > 0)
        strategy.close('short', comment='TP3 at Exit')