Stratégie de poursuite de la tendance solide

Auteur:ChaoZhang est là., Date: 2024-01-29 16:57:01 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie est basée sur des moyennes mobiles. Elle s'effectue longtemps après une correction à court terme d'une tendance à la hausse. Elle appartient à la stratégie de suivi de tendance.

Principe de stratégie

Cette stratégie utilise 3 lignes EMA avec des périodes différentes. La ligne EMA1 avec une période plus courte est utilisée pour juger de la tendance à court terme. Les lignes EMA2 et EMA3 avec des périodes plus longues sont utilisées pour déterminer la tendance à moyen et long terme, où EMA3 a la plus longue période. Lorsque la ligne EMA1 à court terme monte, cela indique qu'elle est dans une tendance à la hausse à court terme. Si EMA2 est supérieure à EMA3, cela signifie que la moyenne à long terme est également en tendance à la hausse, ce qui est un bon moment pour une entrée longue. Plus précisément, le signal de trading est généré lorsque le prix traverse la ligne EMA1. Pour vérifier davantage la stabilité de la tendance, il est nécessaire que EMA2 et EMA3 pointent vers le haut et que la dernière barre augmente également dans la barre de filtrage de la génération de signaux, ce qui aide à éliminer les signaux de corrections erronées à court terme.

La ligne stop loss et la ligne take profit sont réglées pour verrouiller les profits et les pertes.

Analyse des avantages

L'avantage majeur de cette stratégie est qu'elle permet de capturer efficacement la tendance à la hausse à moyen et long terme tout en tenant compte de la correction à court terme, ce qui rend son temps de détention et son marge de profit considérables.

En outre, l'installation d'un stop loss et d'un take profit rend également son risque contrôlable.

Analyse des risques

Le plus grand risque de cette stratégie est qu'elle ne peut pas déterminer le point d'inversion de la tendance. Si la tendance à moyen et long terme s'inverse alors que la tendance à court terme est toujours en hausse, elle générera un mauvais signal long pour entrer sur le marché, ce qui peut entraîner une plus grande perte.

En outre, des pertes commerciales inutiles peuvent également survenir sur les marchés à fourchette.

Directions d'optimisation

Il convient d'envisager d'ajuster les paramètres du cycle de l'EMA en fonction des caractéristiques de variétés commerciales spécifiques afin de mieux correspondre au cycle moyen-long de la variété.

La combinaison avec d'autres indicateurs pour déterminer la fin des ajustements à court terme permet d'éviter une mauvaise saisie.

Il convient d'envisager d'ajuster le coefficient d'arrêt des pertes en fonction de la valeur ATR, en relâchant de manière appropriée la distance d'arrêt des pertes lorsque l'ATR est grande.

Conclusion

En général, cette stratégie est une tendance à moyen et long terme suivant une stratégie qui fonctionne bien. Elle détermine la direction de la tendance à travers les moyennes mobiles, le timing d'entrée à travers les signaux de rebond, et bloque les profits et les pertes à travers les paramètres de stop loss et take profit. Mais il y a aussi un certain risque de suivre la tendance à l'aveugle.


/*backtest
start: 2024-01-21 00:00:00
end: 2024-01-28 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Trend Continuation', shorttitle='Trend_Continuation', overlay=true)

// Input
price = input(close)
MA1_Length = input.int(50, step=1, title='EMA 1 Length')
MA2_Length = input.int(80, step=1, title='EMA 2 Length')
MA3_Length = input.int(200, step=1, title='EMA 3 Length')
numberOfCandles = input(1)
slATRFactor = input(3.5)
tpATRFactor = input(3.5)
ATRLength = input(14)
// switch1=input(true, title="Show Bar Color?")
// switch2=input(true, title="Show Moving Averages?")

// Calculation
MA1 = ta.ema(price, MA1_Length)
MA2 = ta.ema(price, MA2_Length)
MA3 = ta.ema(price, MA3_Length)
prev_price = close[numberOfCandles]


// Strategy
allPositive = true
for i = 0 to numberOfCandles - 1 by 1
    if close[i] < close[i + 1] or close[i] < MA1
        allPositive := false
        break


long = MA2 > MA3 and price > MA1 and ta.crossunder(prev_price, MA1) and allPositive
// short = crossover(price, MA3) or ( change(price)>0 and change(MA1)>0 and crossover(price,MA1)  and change(MA2)<0 ) 


if long
    strategy.entry('Long', strategy.long, comment='Long')

bought = strategy.position_size[0] > strategy.position_size[1]
atrAtLong = ta.valuewhen(bought, ta.atr(ATRLength), 0)


// Stop loss and take profit
slPrice = strategy.position_avg_price - slATRFactor * atrAtLong
tpPrice = strategy.position_avg_price + tpATRFactor * atrAtLong

SL = plot(slPrice, title='SL', style=plot.style_linebr, linewidth=1, color=color.new(color.red, 0))

if price >= tpPrice and price < MA1
    strategy.close('Long')

if price < strategy.position_avg_price
    strategy.exit('Stop Loss', 'Long', stop=slPrice)


// Strategy Alert
alertcondition(long, title='Long Alert', message='Go Long!')
// alertcondition(short, title='EMA Slope + EMA Cross Strategy, Short Alert', message='Go Short!')

// MA trend bar color
// up =  change(MA2)>0 and change(MA3)>0
// dn =  change(MA2)<0 and change(MA3)<0
// bar_color = up?green:dn?red:blue
// barcolor(switch1?bar_color:na)

// MA trend output color
change_1 = ta.change(MA2)
MA2_color = ta.change(MA2) > 0 ? color.lime : change_1 < 0 ? color.red : color.blue
change_2 = ta.change(MA3)
MA3_color = ta.change(MA3) > 0 ? color.lime : change_2 < 0 ? color.red : color.blue

// MA output
// EMA2 = plot(switch2?MA2:na, title="EMA 2", style=linebr, linewidth=2, color=MA2_color)
// EMA3 = plot(switch2?MA3:na, title="EMA 3", style=linebr, linewidth=4, color=MA3_color)
// fill(EMA2, EMA3, color=silver, transp=50)

color_1 = MA2 > MA3 ? color.green : color.red

EMA1 = plot(MA1, title='EMA 1', style=plot.style_linebr, linewidth=1, color=color_1)
// EMA2 = plot(MA2, title="EMA 2", style=linebr, linewidth=2, color=blue)
// EMA3 = plot(MA3, title="EMA 3", style=linebr, linewidth=3, color=red)



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



Plus de