Esta estrategia combina el uso de gráficos de líneas de equilibrio y el indicador PSAR para determinar tendencias y generar señales de negociación. La estrategia utiliza la característica de reducción de ruido de la línea de equilibrio, junto con el indicador PSAR para determinar el punto de inflexión de la tendencia y capturar la tendencia de la línea media y larga.
Principio de la estrategia:
Calcular el precio de apertura, el precio de cierre, el precio máximo y el precio mínimo de la línea de equilibrio.
Tendencias de la cabeza y la cabeza vacía según el color de la entidad de la línea de equilibrio.
Calcula el indicador PSAR para determinar la reversión de la tendencia cuando se rompe de arriba hacia abajo o de abajo hacia arriba.
Cuando la línea de equilibrio es múltiple, el PSAR hace más para romper hacia abajo; cuando la línea de equilibrio está vacía, el PSAR hace más para romper hacia arriba.
El PSAR se ajusta por sí mismo a los nuevos altos, bajos y factores de aceleración.
Las ventajas de esta estrategia:
La línea de equilibrio filtra el ruido, el PSAR capta la inversión. La combinación mejora la precisión.
Los parámetros PSAR se adaptan a los cambios en el mercado.
Las reglas son claras y fáciles de usar, lo que facilita la optimización de los parámetros.
El riesgo de esta estrategia:
Hay problemas de retraso tanto en la línea de equilibrio como en el PSAR, y es posible que se pierda el mejor punto de entrada.
La tendencia de los temblores hace que los PSAR sean propensos a generar señales erróneas.
Se requiere una gestión estricta de los fondos para cubrir el riesgo de inversiones.
En resumen, la estrategia determina las tendencias generales a través de la línea de equilibrio, identifica los puntos de entrada específicos de los PSAR y realiza operaciones de seguimiento de tendencias. Los problemas de retraso y el riesgo de falsos reveses requieren vigilancia, pero se puede obtener un rendimiento estable a largo plazo mediante la optimización.
/*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)