La stratégie de croisement des moyennes mobiles Ichimoku identifie les signaux longs et courts en calculant un ensemble de moyennes mobiles et en détectant les croisements de prix.
La stratégie Ichimoku utilise un système spécialisé composé de 5 lignes moyennes mobiles, à savoir la ligne de conversion, la ligne de base, le lead span 1, le lead span 2 et le lagging span. Plus précisément, la ligne de conversion dépeint l'élan des prix récents, la ligne de base montre la tendance à moyen et long terme, les lignes de conversion et la base sont combinées pour prédire les mouvements futurs, et la lagging span affiche les prix passés pour référence.
La stratégie Ichimoku amalgame les forces de divers indicateurs techniques en un seul système. Elle fusionne les concepts de moyennes mobiles, de canaux de prix, de confirmation de volume, etc., formant une méthodologie systématique. Cela garantit l'exactitude et la directionnalité des signaux de trading.
En tant que système de suivi des tendances, la stratégie Ichimoku a des intervalles de négociation relativement longs. Cela signifie que les oscillations de prix à court terme ne peuvent pas être capturées. De plus, les moyennes mobiles échouent lorsque les prix fluctuent violemment. De telles situations peuvent entraîner de mauvais signaux et des transactions perdantes. Il est conseillé d'utiliser des arrêts pour contrôler les risques.
La stratégie Ichimoku peut être améliorée dans des domaines tels que: 1) l'ajustement des paramètres moyens pour différentes périodes et produits; 2) l'intégration d'indicateurs de volume pour confirmer les relations prix-volume; 3) l'introduction de modèles d'apprentissage automatique pour affiner la détermination du signal; 4) l'ajout de plus de filtres pour réduire la probabilité d'une transaction incorrecte.
La stratégie de croisement de moyenne mobile Ichimoku stable et fiable convient comme stratégie de base combinée à d'autres algorithmes.
/*backtest start: 2023-11-18 00:00:00 end: 2023-12-18 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's Ichimoku Strategy v1.0", shorttitle = "Ichimoku str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") conversionPeriods = input(9, minval = 1, title = "Conversion Periods") basePeriods = input(26, minval = 1, title = "Base Periods") laggingSpan2Periods = input(52, minval = 1, title = "Lagging Span") usebf = input(true, defval = true, title = "Use body filter") usecf = input(true, defval = true, title = "Use color filter") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Ichimoku donchian(len) => avg(lowest(len), highest(len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods) //Lines plot(conversionLine, color=red, title="Conversion Line") plot(baseLine, color=blue, title="Base Line") plot(close, offset = -basePeriods, color=green, title="Lagging Span") p1 = plot(leadLine1, offset = basePeriods, color=green, title="Lead 1") p2 = plot(leadLine2, offset = basePeriods, color=red, title="Lead 2") fill(p1, p2) //Body Filter nbody = abs(close - open) abody = sma(nbody, 10) body = nbody > abody / 3 or usebf == false //Color Filter bar = close > open ? 1 : close < open ? -1 : 0 gb = bar == 1 or usecf == false rb = bar == -1 or usecf == false //Signals up = low > baseLine and rb and body dn = high < baseLine and gb and body //Trading if up //if strategy.position_size < 0 // strategy.close_all() strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn //if strategy.position_size > 0 // strategy.close_all() strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()