이 전략은 간단한 비율 기반의 트레일링 스톱과 트레일링 구매를 구현합니다. 시간 프레임과 차트에서 다른 비율 조합을 실험함으로써 전략 매개 변수를 최적화 할 수 있습니다.
이 전략은 주로 두 가지 메트릭을 사용하여 트래일링 스톱 로스 및 트래일링 구매를 달성합니다.
트레일링 스톱 라인 (TSL): 사용자에 의해 설정된 종료 가격과 스톱 손실 오프셋 비율의 최근 N 바를 기반으로 계산됩니다. 가격이 이 라인 아래에 떨어지면 스톱 손실을 유발합니다.
후속 구매 라인 (TBL): 가장 높은 가격의 최근 N 바와 사용자가 설정 한 구매 오프셋 비율을 기반으로 계산됩니다. 가격이 이 라인을 넘으면 구매를 유발합니다.
이 두 메트릭과 가격을 비교함으로써 스톱 로스 및 트레일링 구매 규칙이 구현됩니다.
이 전략의 장점은 다음과 같습니다.
간단하고 직관적이며 이해하기 쉽고 실행하기 쉽습니다.
유연한 스톱 로스 및 패러미터 조절을 통해 후속 구매
시장과 시간 프레임에 적용됩니다.
트렌드를 따라가며 적시에 손해를 멈추는 것을 허용합니다.
이 전략의 위험은 다음과 같습니다.
부적절한 매개 변수 설정으로 인해 너무 공격적인 스톱 로스 또는 구매가 발생할 수 있습니다.
다양한 시장에서 빈번한 거래와 미끄러짐.
다른 시장 특성에 대한 매개 변수 최적화를 요구합니다.
이 전략은 다음을 통해 강화될 수 있습니다.
자동으로 최적화 할 수 있는 적응 알고리즘
포지션 크기와 리스크 관리 모듈 추가
다른 지표들을 통합하여 전반적인 경향을 측정하여 위프사를 피합니다.
요약하자면, 이것은 매우 간단하고 직관적인 트렌드 다음 전략이다. 매개 변수 조정으로 시장 전반에 적응할 수 있다. 적응 알고리즘과 추가 필터의 추가 통합은 견고성을 향상시킬 수 있다. 전반적으로 양적 거래에 대한 기본적이면서도 효과적인 프레임워크를 제공한다.
/*backtest start: 2023-01-12 00:00:00 end: 2024-01-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //Developed from ©Finnbo code strategy("Simple Trailing Buy & Stop Strategy", overlay=true) offset = input(defval=1.5, title="Stop Offset %", type=float, minval=0.1, maxval=100, step=0.1) buyoffset = input(defval=1.9, title="Trailing Buy Offset %", type=float, minval=0.1, maxval=100, step=0.1) sumbars = input(defval=6, title="Use last x bars for calculation", minval=1) srcts = input(title="Source Trailing Stop calculation", defval=close) srctb = input(title="Source Trailing Buy calculation", defval=close) srctrigger = input(title="Source Stop Trigger", defval=low) srctriggerbuy = input(title="Source Buy Trigger", defval=high) tsl = rma(srcts, sumbars)*(1-(offset/100))// = (sum(srcts,sumbars)/sumbars)*(1-(offset/100)) tbuy = rma(srctb, sumbars)*(1+(buyoffset/100)) plot(tsl, color=(srctrigger<tsl)?red:green) plot(tbuy, color=(srctriggerbuy>tbuy)?red:green) //plotshape(crossunder(srctrigger,tsl), text="Long Stop", style=shape.circle, color=red) alertcondition(crossunder(srctrigger,tsl), "Long Stop alert", "SELL") //plotshape(crossover(srctriggerbuy,tbuy), text="Long", style=shape.circle, color=green) alertcondition(crossover(srctriggerbuy,tbuy), "Long alert", "BUY") longCondition = crossover(srctriggerbuy,tbuy) if (longCondition) strategy.entry("Long", strategy.long) closeCondition = crossunder(srctrigger,tsl) if (closeCondition) strategy.close("Long")