Stratégie de super-tendance mini-reprise

Auteur:ChaoZhang est là., Date: 2023-10-13 15:49:29 Je suis désolé
Les étiquettes:

Résumé

Cette stratégie vise à capturer de petits retraitements dans une tendance et à aller long lorsque le retraitage se termine pour réaliser un profit. Elle utilise une combinaison d'indicateurs techniques tels que l'EMA, le MACD, le RSI pour identifier la tendance et la fin des retraitements. Elle utilise également l'ATR pour définir les prix stop loss et take profit.

Principaux

La stratégie calcule d'abord l'EMA, le MACD et le RSI pour déterminer la direction et la force de la tendance actuelle.

Il utilise 3 EMA (21-période courte, 50-période moyenne et 200-période longue).

Lorsque la ligne ou l'histogramme MACD traverse au-dessus de la ligne 0, il montre un renforcement de la tendance haussière.

L'indice de volatilité indique si le prix a été suracheté ou survendu.

Ensuite, l'indicateur SuperTrend identifie un point d'achat spécifique de retrait.

Enfin, le stop loss et le take profit sont fixés sur la base de l'ATR.

Les avantages

  • Des signaux plus fiables en utilisant une combinaison d'indicateurs multiples.
  • Saisissez des opportunités à court terme dans des tendances à fort taux de réussite.
  • Contrôle efficace des risques avec stop loss/take profit.

Les risques

  • Un repli prolongé peut entraîner des pertes prolongées.
  • Plusieurs indicateurs rendent le réglage des paramètres complexe.
  • Le stop loss trop lâche peut accroître les pertes.

Gestion des risques:

  • Optimiser les paramètres pour l'alignement des indicateurs.
  • Ajustez correctement le stop loss contre les pertes importantes.
  • Évitez les stocks à retraits prolongés.

Optimisation

  • Testez différentes combinaisons de paramètres pour obtenir les meilleures valeurs d'indicateur.
  • Ajustez le stop loss/take profit en fonction de la fluctuation quotidienne des actions.
  • Ajouter un indicateur de volume pour éviter les cas de faible volume.

Conclusion

La stratégie combine plusieurs indicateurs de manière fiable pour identifier la tendance et le repli. Un mécanisme de stop loss strict contrôle le risque et permet une liquidation rapide. Avec un paramètre persistant et un réglage de l'univers, il peut obtenir de bons rendements.


/*backtest
start: 2022-10-06 00:00:00
end: 2023-10-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="pullb", overlay = true, initial_capital = 10000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity)

//variables

///emas var
ema_src = input.source(close, "EMA Source")
ema_1 = input.int(21, 'EMA 1 len')
ema_2 = input(50, 'EMA 2 len')
ema_3 = input(200, 'EMA 3 len')

///macd var
mac_src = input.source(close, "MACD Source")
mac_1 = input.int(12, 'MACD Fast')
mac_2 = input.int(26, 'MACD Signal')
mac_3 = input.int(9, 'MACD Histogram')

///rsi var
rsi_src = input.source(close, "RSI Source")
rsi_len = input.int(14, 'RSI Len')

///stoch var
smoothK = input.int(3, "K", minval=1)
smoothD = input.int(3, "D", minval=1)
lengthRSI = input.int(14, "RSI Length", minval=1)
lengthStoch = input.int(14, "Stochastic Length", minval=1)
stoch_src = input(close, title="RSI Source Stoch")

//usage variables
ema_b = input.bool(true, "Use EMA Filter")
rsi_b = input.bool(true, "Use RSI Filter")
macd_b = input.bool(true, "Use MACD Filter")
//stoch_b = input(title="Use STOCH Filter", type=bool, defval=true)

//emaas
ema1 = ta.ema(ema_src, ema_1)
ema2 = ta.ema(ema_src, ema_2)
ema3 = ta.ema(ema_src, ema_3)

//macd
[macdLine, signalLine, histLine] = ta.macd(mac_src, mac_1, mac_2, mac_3)

//rsi
rsi = ta.rsi(rsi_src, rsi_len)

//stoch
rsi1 = ta.rsi(stoch_src, lengthRSI)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = ta.sma(k, smoothD)

//supertrend
Periods = input.int(14, "ATR Period")
src_st = input.source(close, "Supertrend Source")
Multiplier = input.float(2.0 , "ATR Multiplier")
changeATR= input.bool(true, "Change ATR Calculation Method ?")
showsignals = input.bool(true, "Show Buy/Sell Signals ?")
highlighting = input.bool(true, "Highlighter On/Off ?")
atr2 = ta.sma(ta.tr, Periods)
atr3= changeATR ? ta.atr(Periods) : atr2
up=src_st-(Multiplier*atr3)
up1 = nz(up[1],up)
up := close[1] > up1 ? math.max(up,up1) : up
dn=src_st+(Multiplier*atr3)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
buySignal = trend == 1 and trend[1] == -1
sellSignal = trend == -1 and trend[1] == 1

//conditions
///buy
rsi_cond_b = if rsi_b
    rsi >= 50
else 
    true

macd_cond_b = if macd_b
    (histLine >= 0 or histLine < histLine[1])
else
    true
ema_cond_b = if ema_b
    (ema1 > ema2 and ema2 > ema3)
else 
    true

look_for = input.int(5, "Bars from cross to signal")

stoch_signal_sum = 0
for i = 0 to (look_for)
    if k[i] > d[i] and k[i + 1] < d[i + 1] and (k[i + 1] < 20 and d[i + 1] < 20)
        stoch_signal_sum := stoch_signal_sum + 1
        
stoch_cond_b = if stoch_signal_sum > 0
    if k > 80 and d > 80
        false
    else
        true
else
    false


sup_cond_b = buySignal

buy_sig = (rsi_cond_b and macd_cond_b and ema_cond_b and stoch_cond_b and sup_cond_b)

tp_b = close + (ta.atr(14) * 3)
sl_b = close - (ta.atr(14) * 1.5)

if (buy_sig)
    strategy.entry("long", strategy.long)
    strategy.exit("exit", "long", stop = sl_b, limit = tp_b)
plot(tp_b)
plot(sl_b)



Plus de