Strategi Perdagangan Tren Pembalikan Rata-rata Bagian Emas


Tanggal Pembuatan: 2023-12-07 11:03:20 Akhirnya memodifikasi: 2023-12-07 11:03:20
menyalin: 1 Jumlah klik: 636
1
fokus pada
1619
Pengikut

Strategi Perdagangan Tren Pembalikan Rata-rata Bagian Emas

Ringkasan

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.

Prinsip Strategi

Metrik inti dari strategi ini meliputi indikator channel, moving average, dan retracement trigger line. Secara khusus:

  1. Indikator saluran terdiri dari perhitungan harga tertinggi dan terendah untuk mengidentifikasi saluran harga;
  2. Rata-rata bergerak digunakan untuk menentukan arah tren harga secara keseluruhan;
  3. Retargeting trigger line digunakan untuk membuka posisi setelah harga rebound dari batas saluran dalam proporsi tertentu.

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.

Analisis Keunggulan

Strategi ini memiliki beberapa keuntungan utama:

  1. Performa yang lebih baik dalam kondisi tren yang lebih kuat;
  2. Strategi ini dapat disesuaikan dengan parameter proporsi regresi yang dapat menyesuaikan tingkat keagungan dari strategi;
  3. Pengendalian penarikan yang masuk akal dapat membatasi kerugian tunggal.

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.

Analisis risiko

Strategi ini juga memiliki risiko utama sebagai berikut:

  1. Strategi ini lebih sensitif terhadap karakteristik tren dari varietas yang diperdagangkan.
  2. Penetapan yang tidak tepat pada rasio regresi dapat menyebabkan terlalu radikal atau konservatif;
  3. Berpegang pada posisi yang mungkin terlalu lama, perlu berhati-hati terhadap risiko bermalam.

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:

  1. Pilih jenis transaksi yang lebih jelas dengan karakteristik tren;
  2. Parameter untuk mencari kombinasi parameter yang optimal;
  3. Tetapkan Stop Stop Exit untuk mengontrol waktu penyimpanan secara wajar.

Meringkaskan

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.

Kode Sumber Strategi
/*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)