Chiến lược giao dịch xu hướng đảo ngược tỷ lệ vàng xác định các hướng xu hướng mạnh hơn bằng cách sử dụng các chỉ số kênh và đường trung bình động, và mở các vị trí theo hướng xu hướng sau khi giá giảm xuống một tỷ lệ nhất định. Chiến lược này phù hợp với các thị trường có đặc điểm xu hướng mạnh hơn và có thể hoạt động tốt trên các thị trường xu hướng.
Các chỉ số cốt lõi của chiến lược này bao gồm các chỉ số kênh, đường trung bình động và các đường kích hoạt rút lui.
Khi giá chạm đáy kênh, chiến lược ghi lại điểm thấp nhất như một điểm tham chiếu và thiết lập tín hiệu bán. Khi giá tăng, một khi giá tăng đạt tỷ lệ pullback, các vị trí ngắn sẽ được mở xung quanh điểm hồi phục.
Ngược lại, khi giá đạt đến đỉnh của kênh, chiến lược ghi lại điểm cao nhất như một điểm tham chiếu và thiết lập cho phép tín hiệu mua. Khi giá giảm, nếu sự sụt giảm đáp ứng yêu cầu tỷ lệ pullback, các vị trí dài được mở xung quanh điểm đó.
Do đó, logic giao dịch của chiến lược này là theo dõi kênh giá và can thiệp vào xu hướng hiện có khi các tín hiệu đảo ngược xuất hiện.
Những lợi thế chính của chiến lược này là:
Đặc biệt, vì chiến lược chủ yếu mở các vị trí tại các điểm đảo ngược xu hướng, nó hoạt động tốt hơn ở các thị trường có biến động giá lớn hơn và xu hướng rõ ràng hơn. Ngoài ra, điều chỉnh tham số tỷ lệ pullback có thể kiểm soát mức độ tích cực của chiến lược để theo dõi xu hướng. Cuối cùng, dừng lỗ có thể kiểm soát lỗ giao dịch đơn rất tốt.
Các rủi ro chính của chiến lược này cũng bao gồm:
Đặc biệt, nếu công cụ giao dịch được sử dụng trong chiến lược có xu hướng yếu hơn và biến động nhỏ hơn, hiệu suất có thể bị ảnh hưởng. Ngoài ra, tỷ lệ pullback quá lớn hoặc quá nhỏ sẽ ảnh hưởng đến hiệu suất chiến lược. Cuối cùng, vì thời gian nắm giữ vị trí của chiến lược có thể dài hơn, kiểm soát rủi ro qua đêm cũng cần chú ý.
Để tránh các rủi ro trên, hãy xem xét tối ưu hóa các khía cạnh sau:
Chiến lược giao dịch xu hướng đảo ngược tỷ lệ vàng đánh giá xu hướng giá và tín hiệu pullback thông qua các chỉ số đơn giản, mở các vị trí để theo dõi xu hướng trong thị trường mạnh, và thuộc về một hệ thống xu hướng điển hình. Chiến lược này có không gian điều chỉnh tham số lớn, có thể thích nghi với nhiều môi trường thị trường hơn thông qua tối ưu hóa, và kiểm soát rủi ro cũng hợp lý. Do đó, đây là một ý tưởng chiến lược đáng được xác minh và cải thiện trong giao dịch trực tiếp.
/*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)