
Strategi perdagangan trend kembali pada purata perpecahan emas menggunakan indikator saluran dan purata bergerak untuk mengenal pasti arah trend yang lebih kuat, dan kedudukan boleh dibuka di arah trend setelah harga mengalami penurunan tertentu. Strategi ini sesuai untuk pasaran yang mempunyai ciri-ciri trend yang kuat dan dapat memperoleh prestasi yang lebih baik dalam keadaan trend.
Strategi ini merangkumi metrik utama seperti metrik saluran, purata bergerak, dan garis pemicu regresi.
Apabila harga menyentuh bahagian bawah saluran, strategi akan merekodkan titik terendah sebagai titik rujukan dan menetapkan tanda yang membenarkan untuk melakukan penarikan. Apabila harga naik, apabila kenaikan mencapai peratusan pemulihan, ia akan membuka kedudukan kosong di dekat titik rebound.
Sebaliknya, apabila harga menyentuh puncak saluran, strategi akan mencatat titik tertinggi sebagai titik rujukan dan menetapkan tanda yang membenarkan untuk melakukan lebih banyak. Apabila harga turun, jika kadar penurunan mencapai keperluan peratusan penyesuaian, maka membuka lebih banyak kedudukan di sekitar titik tersebut.
Oleh itu, logik perdagangan strategi ini adalah untuk mengesan saluran harga dan memilih titik yang sesuai untuk campur tangan dalam trend yang ada apabila isyarat pembalikan muncul. Ini adalah kaedah biasa dalam strategi perdagangan penyesuaian trend.
Strategi ini mempunyai beberapa kelebihan utama:
Khususnya, kerana strategi ini membuka kedudukan pada titik perubahan trend, ia lebih berkesan di pasaran yang mempunyai turun naik harga yang besar dan jelas. Selain itu, menyesuaikan parameter nisbah penyesuaian dapat mengawal tahap radikal strategi untuk mengikuti trend. Akhirnya, dengan menghentikan kerugian, anda dapat mengawal kerugian tunggal dengan baik.
Strategi ini juga mempunyai risiko utama:
Khususnya, jika jenis perdagangan yang digunakan oleh strategi adalah trend yang lemah dan turun naik, maka kesannya mungkin akan dikurangkan. Selain itu, penyetempatan rasio penyesuaian yang terlalu besar atau terlalu kecil akan mempengaruhi prestasi strategi. Akhir sekali, kerana jangka masa memegang strategi mungkin lebih lama, perhatian juga perlu diberikan untuk mengawal risiko semalaman.
Untuk mengelakkan risiko yang disebutkan di atas, pertimbangan untuk mengoptimumkan adalah:
Strategi perdagangan trend pulangan nilai rata-rata dengan cara membahagikan emas adalah sistem trend yang lebih tipikal. Strategi ini mempunyai ruang penyesuaian parameter yang lebih besar dan dapat disesuaikan dengan lebih banyak keadaan pasaran dengan pengoptimuman, dan kawalan risiko juga lebih munasabah. Oleh itu, ia adalah strategi strategi yang sesuai untuk diuji dan diperbaiki.
/*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)