La stratégie de négociation de retour de tendance de la moyenne divisée en or permet d’ouvrir des positions dans la direction de la tendance après un certain recul des prix en utilisant l’indicateur de la voie et la moyenne mobile pour identifier la direction de la tendance la plus forte. La stratégie est adaptée aux marchés présentant des caractéristiques de tendance plus fortes et offre une meilleure performance dans des conditions de tendance.
Les indicateurs centraux de la stratégie comprennent les indicateurs du canal, les moyennes mobiles et les lignes de déclenchement de rétroaction.
Lorsque le prix touche le bas du canal, la stratégie enregistre le point le plus bas comme point de référence et définit un marqueur permettant de faire de la position vide. Lorsque le prix augmente, une position vide est ouverte près du point de rebond une fois que la hausse atteint le taux de rebond.
Au lieu de cela, lorsque le prix atteint le sommet de la chaîne, la stratégie enregistre le point le plus élevé comme point de référence et définit des marqueurs permettant de faire plus. Lorsque le prix baisse, si la baisse atteint les exigences du ratio de redressement, ouvrez plus de positions près de ce point.
Par conséquent, la logique de négociation de cette stratégie est de suivre le canal de prix et de choisir le point d’intervention approprié dans la tendance existante en cas de signal de revers. C’est une approche courante dans les stratégies de négociation de type réajustement de tendance.
Cette stratégie présente les principaux avantages suivants:
Plus précisément, la stratégie est plus efficace dans les marchés où les prix sont plus volatiles et où la tendance est plus évidente, car la stratégie ouvre principalement des positions à des points de revers de tendance. En outre, l’ajustement des paramètres du ratio de réajustement permet de contrôler l’intensité de la stratégie de suivi de la tendance. Enfin, le stop loss permet de contrôler les pertes individuelles.
La stratégie présente également les principaux risques suivants:
En particulier, si la variété de transaction utilisée par la stratégie a une tendance faible et une faible volatilité, l’effet peut être décompté. De plus, le réglage d’un taux de retournement trop grand ou trop petit peut affecter la performance de la stratégie. Enfin, étant donné que la durée de conservation de la stratégie peut être longue, il faut également faire attention au contrôle du risque du jour au lendemain.
Afin d’éviter les risques mentionnés ci-dessus, vous pouvez envisager d’optimiser les aspects suivants:
La stratégie de négociation de retour de tendance à la moyenne partagée en or est un système de tendance plus typique. La stratégie a plus de place pour l’optimisation des paramètres, elle peut être adaptée à plus d’environnement de marché par l’optimisation, et le contrôle du risque est plus raisonnable. C’est donc une stratégie d’optimisation qui mérite d’être testée et améliorée.
/*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)