Cette stratégie est combinée à l’utilisation d’un graphique de ligne d’équilibre et d’un indicateur PSAR pour la détermination de la tendance et la génération de signaux de négociation. La stratégie utilise la fonction de réduction du bruit de la ligne d’équilibre, en combinaison avec l’indicateur PSAR pour déterminer le point de retournement de la tendance, afin de capturer la tendance de la ligne moyenne et longue.
Le principe de la stratégie:
Calculer le prix d’ouverture, le prix de clôture, le prix le plus élevé et le prix le plus bas de la ligne d’équilibre.
Les tendances à l’équilibre de la couleur de l’entité de la ligne d’équilibre sont les tendances à l’équilibre de plusieurs têtes et de têtes vides.
Calculer l’indicateur PSAR pour déterminer le renversement de tendance lorsqu’il est dépassé par une hausse ou une baisse.
Lorsque la ligne d’équilibre est plurielle, le PSAR fait plus de percée vers le bas; lorsque la ligne d’équilibre est vide, le PSAR fait plus de percée vers le haut.
Le PSAR s’adapte aux hauts et aux bas et aux facteurs d’accélération.
Les avantages de cette stratégie:
Ligne d’équilibrage pour filtrer le bruit, capture et inversion du PSAR. Combinaison pour une meilleure précision.
Les paramètres du PSAR s’adaptent à l’évolution du marché.
Les règles sont claires et faciles à utiliser, ce qui facilite l’optimisation des paramètres.
Le risque de cette stratégie:
Il y a un problème de retard sur la Ligne d’Équilibre et sur le PSAR, ce qui pourrait entraîner la perte du meilleur point d’entrée.
Les PSAR sont sujettes à des signaux erronés dans le cas de tendances sismiques.
Une gestion rigoureuse des fonds est nécessaire pour couvrir le risque de transaction inversée.
En résumé, la stratégie juge les grandes tendances par l’équilibre des lignes, identifie les points d’entrée spécifiques et effectue des opérations de suivi des tendances. Les problèmes de retard et les risques de faux retournements nécessitent une vigilance, mais des rendements stables à long terme peuvent être obtenus par l’optimisation.
/*backtest
start: 2023-08-12 00:00:00
end: 2023-09-11 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("QuantNomad - Heikin-Ashi PSAR Strategy", shorttitle = "HA-PSAR[QN]", overlay = false)
////////////
// INPUTS //
start = input(0.02, title = "PSAR Start")
increment = input(0.02, title = "PSAR Increment")
maximum = input(0.2, title = "PSAR Max")
start_year = input(2018, 'Start Year', input.integer)
start_month = input(1, 'Start Month', input.integer)
start_day = input(1, 'Start Day', input.integer)
end_year = input(2100, 'End Year', input.integer)
end_month = input(1, 'End Month', input.integer)
end_day = input(1, 'End Day', input.integer)
date_start = timestamp(start_year, start_month, start_day, 00, 00)
date_end = timestamp(end_year, end_month, end_day, 00, 00)
// if time is in correct period
time_cond = time >= date_start and time <= date_end
// Calculation HA Values
haopen = 0.0
haclose = (open + high + low + close) / 4
haopen := na(haopen[1]) ? (open + close) / 2 : (haopen[1] + haclose[1]) / 2
hahigh = max(high, max(haopen, haclose))
halow = min(low, min(haopen, haclose))
// HA colors
hacolor = haclose > haopen ? color.green : color.red
psar = 0.0 // PSAR
af = 0.0 // Acceleration Factor
trend_dir = 0 // Current direction of PSAR
ep = 0.0 // Extreme point
trend_bars = 0
sar_long_to_short = trend_dir[1] == 1 and haclose <= psar[1] // PSAR switches from long to short
sar_short_to_long = trend_dir[1] == -1 and haclose >= psar[1] // PSAR switches from short to long
trend_change = barstate.isfirst[1] or sar_long_to_short or sar_short_to_long
// Calculate trend direction
trend_dir := barstate.isfirst[1] and haclose[1] > haopen[1] ? 1 :
barstate.isfirst[1] and haclose[1] <= haopen[1] ? -1 :
sar_long_to_short ? -1 :
sar_short_to_long ? 1 : nz(trend_dir[1])
trend_bars := sar_long_to_short ? -1 :
sar_short_to_long ? 1 :
trend_dir == 1 ? nz(trend_bars[1]) + 1 :
trend_dir == -1 ? nz(trend_bars[1]) - 1 :
nz(trend_bars[1])
// Calculate Acceleration Factor
af := trend_change ? start :
(trend_dir == 1 and hahigh > ep[1]) or
(trend_dir == -1 and low < ep[1]) ?
min(maximum, af[1] + increment) :
af[1]
// Calculate extreme point
ep := trend_change and trend_dir == 1 ? hahigh :
trend_change and trend_dir == -1 ? halow :
trend_dir == 1 ? max(ep[1], hahigh) :
min(ep[1], halow)
// Calculate PSAR
psar := barstate.isfirst[1] and haclose[1] > haopen[1] ? halow[1] :
barstate.isfirst[1] and haclose[1] <= haopen[1] ? hahigh[1] :
trend_change ? ep[1] :
trend_dir == 1 ? psar[1] + af * (ep - psar[1]) : psar[1] - af * (psar[1] - ep)
plotcandle(haopen, hahigh, halow, haclose, title = "HA", color = hacolor)
plot(psar, style=plot.style_cross, color=trend_dir == 1 ? color.green : color.red, linewidth = 2)
// Strategy
strategy.entry("long", true, when = sar_short_to_long and time_cond)
strategy.entry("short", false, when = sar_long_to_short and time_cond)