
Strategi perdagangan emas dengan nilai rata-rata terbelah untuk kembali ke arah tren dengan menggunakan indikator saluran dan rata-rata bergerak untuk mengidentifikasi arah tren yang lebih kuat, posisi dapat dibuka di arah tren setelah ada penurunan harga dalam proporsi tertentu. Strategi ini cocok untuk pasar dengan karakteristik tren yang lebih kuat dan dapat memperoleh kinerja yang lebih baik dalam situasi tren.
Metrik inti dari strategi ini meliputi indikator channel, moving average, dan retracement trigger line. Secara khusus:
Ketika harga menyentuh bagian bawah saluran, strategi akan mencatat titik terendah sebagai titik acuan dan mengatur tanda yang memungkinkan untuk melakukan shorting. Ketika harga naik, posisi kosong akan dibuka di dekat titik rebound setelah kenaikan mencapai proporsi penyesuaian.
Sebaliknya, ketika harga menyentuh puncak saluran, strategi mencatat titik tertinggi sebagai titik acuan dan mengatur untuk memungkinkan penambahan tanda. Ketika harga turun, jika penurunan mencapai persyaratan rasio penyesuaian, maka membuka posisi tambahan di dekat titik tersebut.
Oleh karena itu, logika perdagangan strategi ini adalah untuk melacak saluran harga dan memilih titik yang tepat untuk campur tangan dalam tren yang ada ketika ada sinyal pembalikan. Ini adalah pendekatan umum untuk strategi perdagangan penyesuaian tren.
Strategi ini memiliki beberapa keuntungan utama:
Secara khusus, karena strategi ini terutama membuka posisi pada titik-titik perubahan tren, itu bekerja lebih baik di pasar dengan volatilitas harga yang lebih besar dan tren yang jelas. Selain itu, penyesuaian parameter rasio penyesuaian dapat mengontrol seberapa agresif strategi mengikuti tren. Akhirnya, dengan cara stop loss dapat mengontrol kerugian perorangan dengan baik.
Strategi ini juga memiliki risiko utama sebagai berikut:
Secara khusus, jika varietas perdagangan yang digunakan dalam strategi cenderung lemah dan berfluktuasi sedikit, maka efeknya mungkin akan dikurangkan. Selain itu, pengaturan rasio penyesuaian yang terlalu besar atau terlalu kecil dapat mempengaruhi kinerja strategi. Akhirnya, karena jangka waktu kepemilikan strategi mungkin lebih lama, juga perlu diperhatikan pengendalian risiko semalam.
Untuk menghindari risiko di atas, pertimbangkan untuk mengoptimalkan beberapa hal berikut:
Strategi perdagangan tren regresi nilai rata-rata emas dengan indikator sederhana untuk menilai tren harga dan sinyal penyesuaian, membuka posisi untuk melacak tren dalam situasi yang kuat, adalah sistem tren yang lebih khas. Strategi ini memiliki ruang yang lebih besar untuk menyesuaikan parameter, dapat beradaptasi dengan lebih banyak lingkungan pasar melalui optimasi, dan kontrol risiko juga lebih masuk akal. Oleh karena itu, ini adalah ide strategi optimasi yang layak untuk diuji dan dikembangkan di lapangan.
/*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)