저자:차오장, 날짜: 2024-01-25 12:50:12
태그:

img

전반적인 설명

지능형 트레일링 스톱 로스 전략 (Intelligent Trailing Stop Loss Strategy) 은 가격 변화에 따라 자동으로 스톱 로스 포인트를 조정하는 전략이다. SAR 지표의 논리를 결합하고 가격이 새로운 최고 또는 낮은 지점에 도달하면 트레일링 스톱 로스 라인을 조정하여 최대 드래운 다운 통제를 달성합니다.

전략 원칙

이 전략의 핵심 논리는 SAR 지표에 따라 자동으로 스톱 로스 라인을 조정하는 것입니다. 구체적으로 네 가지 변수를 정의합니다.

  • EP: 극한점
  • SAR: 현재 중지 손실점
  • AF: 스텝 팩터, 스톱 손실 라인의 조정 크기를 제어하는 데 사용됩니다.
  • 업트렌드 플래그: 현재 업트렌드인지 다운트렌드인지 판단하기 위해

상승 추세 동안, 스톱 로스 라인은 상승 추세를 따라 계속 상승합니다. 가격이 하락 추세로 변하면 다음 상승 추세까지 스톱 로스 라인은 변하지 않습니다.

스톱 로스 라인의 조정 크기는 스텝 팩터 AF에 의해 제어됩니다. 새로운 스톱 로스 포인트가 성공적으로 설정되면 AF가 증가하여 다음 조정 크기를 확장합니다.

장점

이 전략의 가장 큰 장점은 시장 변동에 따라 스톱 로스 포인트를 지능적으로 조정할 수 있으며, 충분한 수익 공간을 보장하고 최대 마감량을 최대한 최소화 할 수 있다는 것입니다. 전통적인 정적 스톱 로스 방법과 비교하면 가격 추세를 더 잘 파악 할 수 있습니다.

구체적으로, 주요 장점은 다음과 같습니다.

  1. 최대 유출을 줄이십시오: 실현 된 이익의 보호를 극대화하기 위해 트렌드 반전 전에 중지 손실 라인의 지능적인 조정이 종료 될 수 있습니다.
  2. 트렌드를 캡처: 중지 손실 라인은 새로운 최고 또는 최저로 조정 하 고 자동으로 가격 트렌드를 추적 합니다.
  3. 커스터마이징 가능한 매개 변수: 사용자는 자신의 위험 선호도에 따라 AF 단계 값과 초기 값을 커스터마이징하여 스톱 손실 조정의 민감도를 제어할 수 있습니다.

위험 분석

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

  1. 너무 민감: AF 단계 조정이 너무 크거나 초기 값이 너무 작다면, 중지 손실 라인은 너무 민감하고 단기 시장 소음으로 유발 될 수 있습니다.
  2. 놓친 기회: 너무 일찍 손실을 멈추는 것은 또한 지속적인 상승에서 수익 기회를 놓칠 수 있습니다.
  3. 매개 변수 선택: 부적절한 매개 변수 설정은 또한 전략 성과와 다른 시장에 대한 조정 필요에 영향을 미칠 것입니다.

최적화 방향

이 전략은 다음 측면에서도 최적화 될 수 있습니다.

  1. 다른 지표와 결합: 주요 사이클 지표가 트렌드 반전 전에 조기 스톱 손실을 피하기 위해 신호를 발산 할 때 중지 손실 라인 조정을 중지하십시오.
  2. 매개 변수 자기 적응 모듈 추가: 기계 학습 알고리즘을 사용하여 역사적 데이터에 기반한 매개 변수를 자동으로 최적화
  3. 다단계 스톱 로스: 시장 변동의 다른 크기를 추적하기 위해 여러 개의 스톱 로스 라인을 설정합니다.

결론

지능형 트레일링 스톱 로스 전략 (Intelligent Trailing Stop Loss Strategy) 은 SAR 지표의 운영 논리를 시뮬레이션함으로써 실시간으로 스톱 로스 라인 포지션을 조정합니다. 이윤을 보호하면서도 놓친 기회의 가능성을 최대한 최소화합니다. 스톱 로스 함수의 고유 가치를 극대화합니다.

전통적인 고정 스톱 로스 전략과 비교하면 이 전략은 시장 변화에 더 잘 적응할 수 있고 더 유연합니다. 사용자 지정 매개 변수 설정을 통해 사용자는 자신의 위험 선호도에 적합한 스톱 로스 모드를 선택할 수 있습니다.

물론, 또한 이 전략에 대한 특정 매개 변수 최적화 공간, 그리고 다른 지표를 결합하여 달성 할 수있는 향상 된 효과도 있습니다. 전반적으로, 그것은 투자자에게 중지 손실과 이익 취득 사이의 더 지능적인 균형을 찾습니다.


/*backtest
start: 2024-01-17 00:00:00
end: 2024-01-24 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Lucid SAR Strategy", shorttitle="Lucid SAR Strategy", overlay=true)

// Full credit to Sawcruhteez, Lucid Investment Strategies LLC and Casey Bowman.
// This is a strategy version of the Lucid SAR indicator created by the above-mentioned parties.
// Original version of the indicator: https://www.tradingview.com/script/OkACQQgL-Lucid-SAR/

// Branded under the name "Lucid SAR" 
// As agreed to with Lucid Investment Strategies LLC on July 9, 2019
// https://lucidinvestmentstrategies.com/


// Created by Casey Bowman on July 4, 2019

// MIT License

// Copyright (c) 2019 Casey Bowman

// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:

// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.

// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.


AF_initial = input(0.02)
AF_increment = input(0.02)
AF_maximum = input(0.2)


// start with uptrend
uptrend = true
newtrend = false
EP = high
SAR = low
AF = AF_initial

if not na(uptrend[1]) and not na(newtrend[1])
    if uptrend[1]
        EP := max(high, EP[1])
    else
        EP := min(low, EP[1])
    if newtrend[1]
        AF := AF_initial
    else
        if EP != EP[1]
            AF := min(AF_maximum, AF[1] + AF_increment)
        else
            AF := AF[1]
    SAR := SAR[1] + AF * (EP - SAR[1])
    if uptrend[1]
        if newtrend
            SAR := max(high, EP[1])
            EP := min(low, low[1])
        else
            SAR := min(SAR, low[1])
            if not na(low[2])
                SAR := min(SAR, low[2])
            if SAR > low
                uptrend := false
                newtrend := true
                SAR := max(high, EP[1])
                EP := min(low, low[1])
            else
                uptrend := true
                newtrend := false
    else
        if newtrend
            SAR := min(low, EP[1])
            EP := max(high, high[1])
        else
            SAR := max(SAR, high[1])
            if not na(high[2])
                SAR := max(SAR, high[2])
            if SAR < high
                uptrend := true
                newtrend := true
                SAR := min(low, EP[1])
                EP := max(high, high[1])
            else
                uptrend := false
                newtrend := false
            
        

plot(SAR, color = color.blue, style = plot.style_cross, linewidth = 2)

if (uptrend)
    strategy.entry("PBSARLE", strategy.long, comment="PBSARLE")
if (newtrend)
    strategy.entry("PBSARSE", strategy.short, comment="PBSARSE")

더 많은