
Cette stratégie est une stratégie de négociation en nuage d’Ichimoku qui ne fonctionne qu’avec plusieurs têtes. Elle ouvre une position sur la ligne de conversion en traversant la ligne de référence et est en position de plage en traversant la ligne de conversion en dessous de la ligne de référence.
Cette stratégie utilise quelques lignes de l’indicateur technique Ichimoku:
Ligne de conversion: moyenne des plus hauts et des plus bas des 9 derniers jours, représentant une conversion de tendance sur une période donnée.
Ligne de référence: moyenne des plus hauts et des plus bas des 26 derniers jours, représentant la variation moyenne des prix sur une période donnée.
Avant-garde A: moyenne de la ligne de conversion et de la ligne de référence
Marge B: moyenne des plus hauts et des plus bas des 52 derniers jours, représentant un indicateur préliminaire de tendance à moyen et long terme.
La durée de la traînée: la durée de la clôture actuelle, avec un décalage de 26 jours.
Lors de l’ouverture d’une position, il faut satisfaire à la fois à la condition de traverser la ligne de référence sur la ligne de conversion et à la condition de la durée de retard supérieure au niveau du nuage. Cela signifie que les tendances à court et à moyen terme sont des signaux à la hausse.
Lors d’une position de plage, il faut satisfaire à la fois à la condition de traverser la ligne de conversion sous la ligne de référence et de traîner la Span en dessous de la couche de nuages. Cela signifie que la tendance s’est inversée et qu’il faut sortir de la position.
L’utilisation de l’indicateur de nuage d’Ichimoku pour déterminer les tendances est plus précise.
Il est également possible de combiner plusieurs lignes de jugement afin d’éviter de produire de faux signaux.
Il s’agit d’une tendance à la hausse en longues lignes pour la plupart des monnaies numériques.
Le filtrage conditionnel est relativement strict pour obtenir un signal de meilleure qualité.
Les positions peuvent être remplies ou vides, et il n’est pas possible d’ajuster la taille des positions.
Le risque de perte est élevé en période de hausse, mais le risque de perte est élevé en période de baisse.
Les paramètres sont définis par défaut pour les crypto-monnaies et doivent être ajustés pour s’adapter à d’autres variétés.
Il y a moins de signaux et il est facile de rater certaines opportunités.
Ajout d’une fonction d’ajustement de position, qui permet de fermer une partie de la position lorsque la perte atteint un certain pourcentage.
Ajouter des signaux de vente, se stabiliser au-dessous du support critique et réduire les pertes.
Optimisation des paramètres pour permettre l’adaptation à plus de variétés et améliorer la stabilité.
L’augmentation de la fonction d’arrêt des pertes, qui s’arrête lorsque les pertes atteignent leur seuil.
Cette stratégie est une stratégie de négociation en nuage d’Ichimoku à plusieurs têtes, avec une plus grande précision dans la détermination des tendances. Elle combine plusieurs lignes d’Ichimoku comme conditions de filtrage, permettant de déterminer de manière plus fiable les points de basculement de la tendance.
/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Simple long-only Ichimoku Cloud Strategy
// Enter position when conversion line crosses base line up, and close it when the opposite happens.
// Additional condition for open / close the trade is lagging span, it should be higher than cloud to open position and below - to close it.
//@version=4
strategy("Ichimoku Cloud Strategy Long Only", shorttitle="Ichimoku Cloud Strategy (long only)", overlay=true )
conversion_length = input(9, minval=1, title="Conversion Line Periods"),
base_length = input(26, minval=1, title="Base Line Periods")
lagging_length = input(52, minval=1, title="Lagging Span 2 Periods"),
delta = input(26, minval=1, title="Delta")
average(len) => avg(lowest(len), highest(len))
conversion_line = average(conversion_length) // tenkan sen - trend
base_line = average(base_length) // kijun sen - movement
lead_line_a = avg(conversion_line, base_line) // senkou span A
lead_line_b = average(lagging_length) // senkou span B
lagging_span = close // chikou span - trend / move power
plot(conversion_line, color=color.blue, linewidth=2, title="Conversion Line")
plot(base_line, color=color.white, linewidth=2, title="Base Line")
plot(lagging_span, offset = -delta, color=color.purple, linewidth=2, title="Lagging Span")
lead_line_a_plot = plot(lead_line_a, offset = delta, color=color.green, title="Lead 1")
lead_line_b_plot = plot(lead_line_b, offset = delta, color=color.red, title="Lead 2")
fill(lead_line_a_plot, lead_line_b_plot, color = lead_line_a > lead_line_b ? color.green : color.red)
// Strategy logic
long_signal = crossover(conversion_line,base_line) and ((lagging_span) > (lead_line_a)) and ((lagging_span) > (lead_line_b))
short_signal = crossover(base_line, conversion_line) and ((lagging_span) < (lead_line_a)) and ((lagging_span) < (lead_line_b))
strategy.entry("LONG", strategy.long, when=strategy.opentrades == 0 and long_signal, alert_message='BUY')
strategy.close("LONG", when=strategy.opentrades > 0 and short_signal, alert_message='SELL')
// === Backtesting Dates === thanks to Trost
testPeriodSwitch = input(true, "Custom Backtesting Dates")
testStartYear = input(2021, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, 0)
testStopYear = input(2021, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testStopHour = input(0, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, testStopHour, 0)
testPeriod() => true
testPeriod_1 = testPeriod()
isPeriod = testPeriodSwitch == true ? testPeriod_1 : true
// === /END
if not isPeriod
strategy.cancel_all()
strategy.close_all()