Stratégie de croisement de la moyenne mobile Ichimoku

Auteur:ChaoZhang est là., Date: 2023-12-19 15:40:53 Je vous en prie.
Les étiquettes:

img

Résumé

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 logique de la stratégie

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.

Les avantages

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.

Les risques

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.

Des possibilités d'amélioration

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.

Conclusion

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()

Plus de