Ichimoku tendance à suivre la stratégie

Auteur:ChaoZhang est là., Date: 2023-12-11 à 15h29
Les étiquettes:

img

Résumé

Cette stratégie est conçue sur la base de l'indicateur Ichimoku pour le suivi des tendances et le trading de rupture d'équilibre, visant à capturer les tendances des prix à moyen et long terme pour des bénéfices stables.

La logique de la stratégie

La stratégie utilise les cinq lignes d'Ichimoku - Tenkan-sen, Kijun-sen, Senkou Span A, Senkou Span B et Chikou Span pour déterminer la tendance des prix et les niveaux de support / résistance.

  1. Lorsque le croisement entre Kijun-sen et Kijun-sen n'est pas plat, un signal d'achat est déclenché.
  2. Quand le croisement entre Kijun-sen et Kijun-sen n'est pas plat, un signal de vente est déclenché.
  3. Lorsque la clôture est au-dessus du nuage, la liquidité est bonne pour prendre des positions.
  4. Lorsque la clôture est inférieure à la moyenne, la liquidité est faible et il convient d'éviter de prendre des positions.
  5. Quand Chikou Span franchit la clôture, un signal d'achat est déclenché.
  6. Quand le Chikou Span passe sous la clôture, un signal de vente est déclenché.

Les signaux de négociation ci-dessus sont combinés pour déterminer le moment de l'entrée finale.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. Utiliser Ichimoku pour déterminer la tendance peut filtrer le bruit du marché et capturer les tendances à moyen et long terme.
  2. L'inclusion de la condition nuageuse permet d'éviter de prendre des positions dans des conditions de faible liquidité.
  3. Chikou Span agit comme une confirmation pour éviter une fausse fuite.
  4. Les règles sont simples et claires pour la mise en œuvre.

Analyse des risques

Les risques liés à cette stratégie sont les suivants:

  1. Des paramètres mal réglés peuvent entraîner une perte d'opportunités de négociation.
  2. Le jugement de tendance peut être retardé lorsque la tendance change, incapable de réduire les pertes à temps.
  3. Risque de perte plus élevé pour les positions longues.

Ces risques peuvent être résolus en optimisant les paramètres, en les combinant avec d'autres indicateurs pour déterminer les changements de tendance et en appliquant un stop loss strict.

Directions d'optimisation

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

  1. Optimisez les paramètres Ichimoku pour trouver la meilleure combinaison.
  2. Ajoutez des filtres de prix et de volume pour éviter les écarts de tendance.
  3. Incorporer des indicateurs de volatilité pour identifier les points d'inversion.
  4. Ajoutez des modèles d'apprentissage automatique pour déterminer l'état de la tendance.

Résumé

Cette stratégie tire parti d'Ichimoku pour déterminer la tendance des prix et les conditions de liquidité pour suivre la tendance, ce qui peut filtrer efficacement le bruit et capturer les tendances à moyen et long terme avec de plus petits drawdowns.


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

//@version=3
strategy("My Ichimoku Strat", overlay=true,default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=1000, currency=currency.EUR)
// === BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2017, title = "From Year", minval = 2014)
ToMonth   = input(defval = 1, title = "To Month", minval = 1)
ToDay     = input(defval = 1, title = "To Day", minval = 1)
ToYear    = input(defval = 9999, title = "To Year", minval = 2014)

// === SERIES SETUP ===
//**** Inputs *******
KijunSenLag = input(6,title="KijunSen Lag",minval=1)

//Kijun-sen
//Support resistance line, buy signal when price crosses it
KijunSen = sma((high+low)/2,26)
buy2 = crossover(close,KijunSen) and (rising(KijunSen,KijunSenLag) or falling(KijunSen,KijunSenLag))
sell2= crossunder(close,KijunSen) and (rising(KijunSen,KijunSenLag) or falling(KijunSen,KijunSenLag))


//Tenkan-Sen
TenkanSen = sma((high+low)/2,9)

//Senkou Span A 
SenkouSpanA = (KijunSen + TenkanSen)/2

//Senkou Span B 
SenkouSpanB = sma((high+low)/2,52)

//Cloud conditions : ignore buy if price is under the cloud
// Huge cloud means safe support and resistance. Little cloud means danger.
buy3 = close > SenkouSpanA and close > SenkouSpanB
sell3 = close < SenkouSpanA and close < SenkouSpanB


//Chikou Span
//Buy signal : crossover(ChikouSpan,close)
//Sell Signal : crossunder(ChikouSpan,close)
ChikouSpan = close
buy1=crossover(ChikouSpan,close[26])
sell1=crossunder(ChikouSpan,close[26])

plotshape(buy1,style=shape.diamond,color=lime,size=size.small)
plotshape(sell1,style=shape.diamond,color=orange,size=size.small)

//Alerts

buyCompteur = -1
buyCompteur := nz(buyCompteur[1],-1)
buyCompteur := buy2 or buy3 ? 1 : buyCompteur
buyCompteur := buyCompteur > 0 ? buyCompteur + 1 : buyCompteur
buyCompteur := sell2 or sell3 ? -1 : buyCompteur

sellCompteur = -1
sellCompteur := nz(sellCompteur[1],-1)
sellCompteur := sell2 or sell3 ? 1 : sellCompteur
sellCompteur := sellCompteur > 0 ? sellCompteur + 1 : sellCompteur
sellCompteur := buy2 or buy3 ? -1 : sellCompteur

sell= sell2 and sell3 or (sell1 and buyCompteur <= 8)
buy=buy2 and buy3 or (buy1 and sellCompteur <=8)
plotchar(buy,char='B',size=size.small,color=lime)
plotchar(sell,char='S',size=size.small,color=orange)

//plots
plot(KijunSen,title="Kijun-Sen",color=blue,linewidth=4)
plot(TenkanSen,title="Tenkan-Sen",color=red,linewidth=2)
cloudA = plot(SenkouSpanA,title="cloud A", color=lime,offset=26,linewidth=2)
cloudB = plot(SenkouSpanB,title="cloud B", color=orange,offset=26,linewidth=2)
plot(ChikouSpan,title="lag span",color=fuchsia, linewidth=2,offset=-26)
//plot()
fill(cloudA,cloudB,color=SenkouSpanA>SenkouSpanB?lime:orange)
//plot(close,color=silver,linewidth=4)

// === ALERTS ===
strategy.entry("L", strategy.long, when=(buy and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))
strategy.close("L", when=(sell and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))

Plus de