골든 비율 평균 역행 트렌드 거래 전략은 채널 지표와 이동 평균을 사용하여 더 강한 트렌드 방향을 식별하고 특정 비율로 가격 인하 후 트렌드 방향으로 포지션을 개척합니다. 이 전략은 더 강한 트렌드 특성을 가진 시장에 적합하며 트렌딩 시장에서 잘 수행 할 수 있습니다.
이 전략의 핵심 지표는 채널 지표, 이동 평균 및 인하 트리거 라인을 포함합니다. 구체적으로:
가격이 채널의 바닥에 닿을 때, 전략은 가장 낮은 지점을 기준점으로 기록하고 판매 신호를 설정합니다. 가격이 상승하면 상승률이 풀백 비율에 도달하면 리바운드 지점 주위에서 쇼트 포지션이 열립니다.
반대로, 가격이 채널의 꼭대기에 도달하면 전략은 가장 높은 지점을 기준점으로 기록하고 구매 신호를 허용합니다. 가격이 떨어지면, 감소가 인출 비율 요구 사항을 충족하면 그 지점 주위에서 긴 지점이 열립니다.
따라서 이 전략의 거래 논리는 가격 채널을 추적하고 반전 신호가 나타날 때 기존 트렌드에 개입하는 것입니다. 이것은 평균 반전 트렌드 거래 전략의 일반적인 일상에 속합니다.
이 전략의 주요 장점은 다음과 같습니다.
특히, 전략은 주로 트렌드 반전 지점에서 포지션을 개설하기 때문에 더 큰 가격 변동과 더 명백한 트렌드가있는 시장에서 더 잘 작동합니다. 또한, 풀백 비율 매개 변수를 조정하면 트렌드를 따라 전략의 공격성 수준을 제어 할 수 있습니다. 마지막으로, 스톱 로스는 단일 거래 손실을 매우 잘 제어 할 수 있습니다.
이 전략의 주요 위험은 또한 다음을 포함합니다.
특히, 전략에 사용되는 거래 도구가 약한 경향과 작은 변동을 가지고 있다면 성능이 손상 될 수 있습니다. 또한, 너무 큰 또는 너무 작은 풀백 비율은 전략 성능에 영향을 줄 것입니다. 마지막으로, 전략의 포지션 보유 기간이 길어질 수 있기 때문에, 오버나이트 리스크 제어 또한 주의가 필요합니다.
위 위험 을 피 하기 위해 다음 과 같은 측면 을 최적화 하는 것 을 고려 하십시오.
골든 비율은 단순한 지표를 통해 가격 추세와 인하 신호를 판단하고, 강한 시장의 추세를 추적하기 위해 포지션을 열고, 전형적인 트렌드 시스템에 속한다. 이 전략은 큰 매개 변수 조정 공간을 가지고 있으며, 최적화를 통해 더 많은 시장 환경에 적응할 수 있으며, 위험 통제 또한 합리적입니다. 따라서 라이브 거래에서 검증하고 개선할 가치가있는 전략 아이디어입니다.
/*backtest start: 2022-11-30 00:00:00 end: 2023-12-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // // A port of the TradeStation EasyLanguage code for a mean-revision strategy described at // http://traders.com/Documentation/FEEDbk_docs/2017/01/TradersTips.html // // "In “Mean-Reversion Swing Trading,” which appeared in the December 2016 issue of STOCKS & COMMODITIES, author Ken Calhoun // describes a trading methodology where the trader attempts to enter an existing trend after there has been a pullback. // He suggests looking for 50% pullbacks in strong trends and waiting for price to move back in the direction of the trend // before entering the trade." // // See Also: // - 9 Mistakes Quants Make that Cause Backtests to Lie (https://blog.quantopian.com/9-mistakes-quants-make-that-cause-backtests-to-lie-by-tucker-balch-ph-d/) // - When Backtests Meet Reality (http://financial-hacker.com/Backtest.pdf) // - Why MT4 backtesting does not work (http://www.stevehopwoodforex.com/phpBB3/viewtopic.php?f=28&t=4020) // // // ----------------------------------------------------------------------------- // Copyright 2018 sherwind // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // The GNU General Public License can be found here // <http://www.gnu.org/licenses/>. // // ----------------------------------------------------------------------------- // strategy("Mean-Reversion Swing Trading Strategy v1", shorttitle="MRST Strategy v1", overlay=true) channel_len = input(defval=20, title="Channel Period", minval=1) pullback_pct = input(defval=0.5, title="Percent Pull Back Trigger", minval=0.01, maxval=1, step=0.01) trend_filter_len = input(defval=50, title="Trend MA Period", minval=1) upper_band = highest(high, channel_len) lower_band = lowest(low, channel_len) trend = sma(close, trend_filter_len) low_ref = 0.0 low_ref := nz(low_ref[1]) high_ref = 0.0 high_ref := nz(high_ref[1]) long_ok = false long_ok := nz(long_ok[1]) short_ok = false short_ok := nz(short_ok[1]) long_ok2 = false long_ok2 := nz(long_ok2[1]) if (low == lower_band) low_ref := low long_ok := false short_ok := true long_ok2 := false if (high == upper_band) high_ref := high long_ok := true short_ok := false long_ok2 := true // Pull Back Level trigger = long_ok2 ? high_ref - pullback_pct * (high_ref - low_ref) : low_ref + pullback_pct * (high_ref - low_ref) plot(upper_band, title="Upper Band", color=long_ok2?green:red) plot(lower_band, title="Lower Band", color=long_ok2?green:red) plot(trigger, title="Trigger", color=purple) plot(trend, title="Trend", color=orange) enter_long = long_ok[1] and long_ok and crossover(close, trigger) and close > trend and strategy.position_size <= 0 enter_short = short_ok[1] and short_ok and crossunder(close, trigger) and close < trend and strategy.position_size >= 0 if (enter_long) long_ok := false strategy.entry("pullback-long", strategy.long, stop=close, comment="pullback-long") else strategy.cancel("pullback-long") if (enter_short) short_ok := false strategy.entry("pullback-short", strategy.short, stop=close, comment="pullback-short") else strategy.cancel("pullback-short") strategy.exit("exit-long", "pullback-long", limit=upper_band, stop=lower_band) strategy.exit("exit-short", "pullback-short", limit=lower_band, stop=upper_band)