Une stratégie de trading basée sur Ichimoku Kinko Hyo

Auteur:ChaoZhang est là., Date: 2023-12-20 13:34:08 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie s'appelle Ichimoku Kinko Hyo Strategy. C'est une stratégie de trading BTC basée sur le système Ichimoku Kinko Hyo combiné à d'autres indicateurs techniques.

La logique de la stratégie

La stratégie est principalement basée sur le système Ichimoku Kinko Hyo, qui intègre plusieurs indicateurs techniques pour le trading de tendance.

Kijun Sen: représente la direction de la tendance du marché. C'est le point médian du prix le plus élevé et le plus bas au cours des 26 derniers jours, agit comme des lignes de support et de résistance. Les signaux d'achat et de vente sont générés lorsque le prix de clôture traverse Kijun Sen.

Tenkan Sen: représente la dynamique du prix. C'est le point médian du prix le plus élevé et le plus bas au cours des 9 derniers jours, aide à déterminer les meilleurs points d'entrée et de sortie.

Senkou Span A: représente la ligne intermédiaire d'Ichimoku. C'est la moyenne de Kijun Sen et Tenkan Sen, qui sert de ligne d'avertissement d'Ichimoku.

Senkou Span B: représente la ligne de tendance à long terme. C'est le point médian des 52 derniers jours. Forme le nuage Ichimoku pour déterminer les tendances à long et à court terme.

En outre, la stratégie intègre également l'indicateur RSI pour générer des signaux de négociation dans les zones de surachat et de survente.

Les signaux d'achat sont générés lorsque le prix de clôture dépasse Kijun Sen et se situe au-dessus du nuage. Les signaux de vente sont générés lorsque le prix de clôture dépasse Kijun Sen et se situe en dessous du nuage.

Les avantages

  1. Le système Ichimoku détermine avec précision les tendances avec un taux de gain relativement élevé.

  2. L'intégration de plusieurs indicateurs permet d'éviter de manquer des opportunités.

  3. Le RSI détermine efficacement les points d'inversion.

  4. Le Cloud présente intuitivement les tendances à long et à court terme.

Analyse des risques

  1. Le système Ichimoku a un certain retard, il faut intégrer d'autres indicateurs.

  2. Il fonctionne très bien sur les marchés tendance mais modestement sur les marchés variés.

  3. Les paramètres RSI doivent être ajustés en fonction des marchés.

  4. La construction des nuages est complexe et nécessite une manipulation habile.

Les paramètres d'Ichimoku peuvent être optimisés ou plus d'indicateurs peuvent être ajoutés.

Directions d'optimisation

  1. Optimisez les paramètres d'Ichimoku pour déterminer les tendances plus rapidement.

  2. Ajouter plus d'indicateurs comme les moyennes mobiles pour améliorer la précision du signal.

  3. Ajustez le paramètre RSI en fonction des différents marchés.

  4. Envisager d'ajouter des mécanismes de stop loss pour contrôler les risques.

Conclusion

L'Ichimoku combiné à des indicateurs tels que le RSI a une grande précision dans la capture des tendances haussières. Le retard de l'Ichimoku et l'inadaptabilité dans les marchés variés sont des risques majeurs.


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

//@version=3
strategy("My Ichimoku Strat v2", overlay=true,default_qty_type=strategy.fixed, default_qty_value=1, initial_capital=1000, currency=currency.EUR,commission_type=strategy.commission.percent,commission_value=0.05)
// === BACKTEST RANGE ===
FromMonth = input(defval = 3, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2018, 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



//RSI
src = close, len = input(14, minval=1, title="RSI Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
buyRSI = crossover(rsi,40) and close > TenkanSen and rsi[5]<30 and (rsi-rsi[1])>5
sellRSI = crossunder(rsi,60) and close < TenkanSen and rsi[5]>70 and (rsi[1]-rsi)>5
plotshape(buyRSI,style=shape.triangleup,color=lime,transp=0,location=location.belowbar,size=size.small)

sell= sell2 and sell3 or (sell1 and buyCompteur <= 8) or sellRSI
buy=buy2 and buy3 or (buy1 and sellCompteur <=8) or buyRSI
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