Stratégie d'inversion des pertes par suivi de tendance SAR parabolique

Auteur:ChaoZhang est là., Date: 2024-02-01 14:54:09 Je vous en prie
Les étiquettes:

img

Résumé

La stratégie d'inversion des pertes par suivi de tendance SAR parabolique est une stratégie qui utilise l'indicateur SAR parabolique pour identifier les tendances et entrer dans des positions de contre-tendance lorsque la tendance s'inverse.

La logique de la stratégie

La stratégie utilise l'indicateur Parabolic SAR pour juger de la tendance actuelle du marché.

Lorsque les points SAR sont en baisse et en dessous du prix, cela représente une tendance haussière; lorsque les points SAR sont en hausse et au-dessus du prix, cela représente une tendance baissière.

Plus précisément, lorsque les points SAR montrent une tendance haussière et sont au-dessus des prix, la stratégie sera courte; lorsque les points SAR montrent une tendance baissière et sont en dessous des prix, la stratégie sera longue.

En outre, la stratégie définit également des mécanismes de stop loss et de take profit.

Analyse des avantages

Les principaux avantages de la combinaison de l'indicateur de tendance et des mécanismes de stop loss/take profit sont les suivants:

  1. Capter en temps opportun les opportunités d'inversion de tendance pour le trading contre tendance.
  2. Contrôler activement les risques et les bénéfices en définissant un stop loss et un profit.
  3. Le SAR parabolique est un indicateur inverse largement utilisé et efficace.
  4. Des règles de stratégie simples et claires, faciles à comprendre et à mettre en œuvre.

Analyse des risques

Il y a aussi quelques risques à prendre en compte pour la stratégie:

  1. L'indicateur SAR parabolique n'est pas parfait, parfois il génère de mauvais signaux.
  2. Les prix d'arrêt des pertes et de prise de bénéfice doivent être établis de manière raisonnable, sinon il peut s'arrêter ou prendre des bénéfices prématurément.
  3. Les commissions de négociation ont également une incidence sur les bénéfices totaux.
  4. La nouvelle tendance après l'inversion peut être de courte durée.

Ces risques peuvent être résolus par l'optimisation des paramètres, l'utilisation d'autres indicateurs de filtrage, etc.

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Optimisez les paramètres SAR paraboliques pour trouver la meilleure combinaison.
  2. Essayez d'autres stratégies de stop loss et de profits comme le stop loss.
  3. Ajouter des indicateurs ou des conditions pour filtrer les signaux de négociation inversés.
  4. Ajouter un contrôle de position basé sur les conditions du marché.
  5. Ajuster les paramètres pour les différents instruments de négociation.

Conclusion

En général, il s'agit d'une stratégie d'inversion de tendance assez classique de suivi des stops de perte. Il identifie les inversions de tendance et contrôle également les risques avec des moyens de stop loss et de profit. Après optimisations, il peut devenir une stratégie utile pour le trading en direct.


/*backtest
start: 2024-01-24 00:00:00
end: 2024-01-31 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Parabolic SAR Strategy", overlay=true)
start = input(0.02)
increment = input(0.02)
maximum = input(0.2)
var bool uptrend = na
var float EP = na
var float SAR = na
var float AF = start
var float nextBarSAR = na
if bar_index > 0
	firstTrendBar = false
	SAR := nextBarSAR
	if bar_index == 1
		float prevSAR = na
		float prevEP = na
		lowPrev = low[1]
		highPrev = high[1]
		closeCur = close
		closePrev = close[1]
		if closeCur > closePrev
			uptrend := true
			EP := high
			prevSAR := lowPrev
			prevEP := high
		else
			uptrend := false
			EP := low
			prevSAR := highPrev
			prevEP := low
		firstTrendBar := true
		SAR := prevSAR + start * (prevEP - prevSAR)
	if uptrend
		if SAR > low
			firstTrendBar := true
			uptrend := false
			SAR := max(EP, high)
			EP := low
			AF := start
	else
		if SAR < high
			firstTrendBar := true
			uptrend := true
			SAR := min(EP, low)
			EP := high
			AF := start
	if not firstTrendBar
		if uptrend
			if high > EP
				EP := high
				AF := min(AF + increment, maximum)
		else
			if low < EP
				EP := low
				AF := min(AF + increment, maximum)
	if uptrend
		SAR := min(SAR, low[1])
		if bar_index > 1
			SAR := min(SAR, low[2])
	else
		SAR := max(SAR, high[1])
		if bar_index > 1
			SAR := max(SAR, high[2])
	nextBarSAR := SAR + AF * (EP - SAR)
	if barstate.isconfirmed
		if uptrend
			strategy.entry("ParSE", strategy.short, stop=nextBarSAR, comment="ParSE")
			strategy.cancel("ParLE")
		else
			strategy.entry("ParLE", strategy.long, stop=nextBarSAR, comment="ParLE")
			strategy.cancel("ParSE")
plot(SAR, style=plot.style_cross, linewidth=3, color=color.orange)
plot(nextBarSAR, style=plot.style_cross, linewidth=3, color=color.aqua)
//Stop Loss Inputs
use_short_stop_loss = input(false, title="Short Stop Loss", group="Stop Loss and Take Profit", inline="Short_SL")
short_stop_loss = input(title="(%)", type=input.float, minval=0.0, step=0.1, 
     defval=5, group="Stop Loss and Take Profit", inline="Short_SL") * 0.01
use_long_stop_loss = input(false, title="Long Stop Loss", group="Stop Loss and Take Profit", inline="Long_SL")
long_stop_loss = input(title="(%)", type=input.float, minval=0.0, step=0.1, 
     defval=5, group="Stop Loss and Take Profit", inline="Long_SL") * 0.01

//Take Profit Inputs     
use_short_take_profit = input(false, title="Short Take Profit", group="Stop Loss and Take Profit", inline="Short_TP")
short_take_profit = input(title="(%)", type=input.float, minval=0.0, step=0.1,
     defval = 20, group="Stop Loss and Take Profit", inline="Short_TP") * .01
use_long_take_profit = input(false, title="Long Take Profit", group="Stop Loss and Take Profit", inline="Long_TP")
long_take_profit = input(title="(%)", type=input.float, minval=0.0, step=0.1,
     defval = 20, group="Stop Loss and Take Profit", inline="Long_TP") * .01


longStopPrice  = strategy.position_avg_price * (1 - long_stop_loss)
shortStopPrice = strategy.position_avg_price * (1 + short_stop_loss)
longLimitPrice = strategy.position_avg_price * (1 + long_take_profit)
shortLimitPrice = strategy.position_avg_price * (1 - short_take_profit)


if (strategy.position_size > 0.0)
    if (use_long_stop_loss and not use_long_take_profit)
        strategy.exit("Long", stop = longStopPrice)
    if (use_long_take_profit and not use_long_stop_loss)
        strategy.exit("Long", limit = longLimitPrice)
    if (use_long_take_profit and use_long_stop_loss)
        strategy.exit("Long", stop = longStopPrice, limit=longLimitPrice)
if (strategy.position_size < 0.0)
    if (use_short_stop_loss and not use_short_take_profit)
        strategy.exit("Short", stop = shortStopPrice)
    if (use_short_take_profit and not use_short_stop_loss)
        strategy.exit("Short", limit = shortLimitPrice)
    if (use_short_take_profit and use_short_stop_loss)
        strategy.exit("Short", stop = shortStopPrice, limit = shortLimitPrice)

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)

Plus de