이 전략은
전략의 핵심은 슈퍼트렌드 지표의 방향 변화를 결정하기 위해 변경 함수를 사용하여 거래 신호를 생성합니다. 슈퍼트렌드가 위에서 아래로 변할 때 구매 신호를 생성하고 슈퍼트렌드가 아래에서 위로 변할 때 판매 신호를 생성합니다.
동시에, RSI 지표는 포지션을 닫을 때를 결정하는 데 도움을 주기 위해 도입된다. RSI가 설정된 과잉 매수 라인을 넘어서면, 긴 포지션은 닫힐 것이며, RSI가 설정된 과잉 매매 라인을 넘어서면, 짧은 포지션은 닫힐 것이다. 이러한 방식으로, RSI는 수익을 잠금하기 위해 합리적인 스톱 로스 포인트를 결정하는 데 도움이 된다.
이 전략의 주요 장점은 다음과 같습니다.
슈퍼트렌드는 정확한 장기 및 단기 엔트리를 위해 시장 트렌드 변화를 식별하는 데 좋습니다.
RSI는 합리적인 수익을 창출하고 손실을 멈추는 데 도움이 되는 과도한 전환점을 찾는 데 탁월합니다.
이 두가지는 서로가 더 나은 기회 포착과 더 안정적인 이득을 위해 결합된 강점으로 상호 보완됩니다.
전략 논리는 단순하고 깨끗해서 덜 경험이 있는 투자자조차도 쉽게 이해하고 추적할 수 있습니다.
안정적인 수익성과 통제 가능한 마이너오웃을 가진 강력한 구현
이러한 장점에도 불구하고, 이중 드라이브 전략에는 몇 가지 위험이 있습니다.
Supertrend 및 RSI와 함께 불필요한 손실로 이어지는 잘못된 신호가 발생할 수 있습니다. 매개 변수를 조정하거나 확인을 위해 추가 지표를 도입 할 수 있습니다.
더 높은 위험성을 가진 쌍방향 거래는 더 엄격한 돈 관리 규칙과 위험 통제를 요구합니다.
스톱 로즈는 비정상적인 가격 변동으로 실패할 수 있습니다.
슈퍼트렌드는 다른 시장에 대한 조정이 필요한 매개 변수에 민감합니다.
위험을 고려하면 다음과 같은 측면에서 최적화를 할 수 있습니다.
부피, MACD를 추가 신호 필터링 및 더 정확한 입력으로 추가합니다.
위험 이벤트에 반응하기 위해 동적 스톱 손실을 설정합니다.
슈퍼 트렌드 및 RSI의 매개 변수를 최적화하여 다른 시장에 더 잘 적응합니다.
매개 변수와 지표 선택에 대한 기계 학습을 도입합니다.
파생상품 (예: 선물상품, 옵션상품 등) 을 적용하여 위험을 감수하는 방법
손실과 유출을 제한하기 위해 포지션 크기를 변경하는 규칙
이중 드라이브 전략은 효율적인 트렌드 캡처 및 수익을 얻기 위해 슈퍼트렌드와 RSI를 효과적으로 결합합니다. 단일 지표 전략에 비해 더 신뢰할 수 있는 신호, 더 작은 드라우다운 및 안정적인 알고리즘 거래 성능을 제공합니다. 매개 변수 조정, 신호 필터링 및 리스크 관리에 대한 추가 최적화는 더 나은 결과를 가져올 것입니다.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © alorse //@version=5 strategy("Supertrend + RSI Strategy [Alose]", overlay=true ) stGroup = 'Supertrend' atrPeriod = input(10, "ATR Length", group=stGroup) factor = input.float(3.0, "Factor", step = 0.01, group=stGroup) [_, direction] = ta.supertrend(factor, atrPeriod) // RSI rsiGroup = 'RSI' src = input(title='Source', defval=close, group=rsiGroup) lenRSI = input.int(14, title='Length', minval=1, group=rsiGroup) RSI = ta.rsi(src, lenRSI) // Strategy Conditions stratGroup = 'Strategy' showLong = input.bool(true, title='Long entries', group=stratGroup) showShort = input.bool(false, title='Short entries', group=stratGroup) RSIoverbought = input.int(72, title='Exit Long', minval=1, group=stratGroup, tooltip='The trade will close when the RSI crosses up this point.') RSIoversold = input.int(28, title='Exit Short', minval=1, group=stratGroup, tooltip='The trade will close when the RSI crosses below this point.') entryLong = ta.change(direction) < 0 exitLong = RSI > RSIoverbought or ta.change(direction) > 0 entryShort = ta.change(direction) > 0 exitShort = RSI < RSIoversold or ta.change(direction) < 0 if showLong strategy.entry("Long", strategy.long, when=entryLong) strategy.close("Long", when=exitLong) if showShort strategy.entry("Short", strategy.short, when=entryShort) strategy.close("Short", when=exitShort)