Esta estrategia utiliza una variedad de indicadores, como líneas de promedio, bandas de Bryn y períodos de tiempo, para identificar el inicio y el final de las tendencias de precios y realizar operaciones de seguimiento de tendencias. La estrategia se confirma a través de una variedad de indicadores y puede filtrar eficazmente las brechas falsas.
La estrategia incluye los siguientes pasos clave:
Calculación de la línea media rápida y la línea media lenta. La línea media se calcula utilizando el VWAP en lugar del precio de cierre, para reflejar con mayor precisión el precio real de la transacción.
Calcule el promedio de la línea de medición y trace una banda de Brin sobre la base de ese promedio. La banda de Brin puede determinar si la fluctuación de los precios se ha ampliado y indicar el inicio de la tendencia.
Introducir el indicador de la cantidad de períodos de tiempo (TSV) para determinar si el volumen de transacciones se está expandiendo, lo que confirma la existencia de una tendencia.
Cuando la línea de promedio rápido atraviesa la línea de promedio lento, el precio es más alto que el de Brin y el TSV es mayor que 0, generando una señal de compra; por el contrario, aparece una señal de venta.
Utiliza el retiro de la línea media y la baja de Brin como señal de parada de pérdida.
El uso de varios indicadores de confirmación para filtrar efectivamente las brechas falsas y identificar el inicio de la tendencia
El método de cálculo de la línea media refleja con mayor precisión el precio real de la transacción
Si existe una tendencia combinada con un indicador de volatilidad
Aumento de indicadores de volumen de transacciones, confirmación de tendencias en desarrollo
Establecer normas razonables para detener y detener el riesgo
Los parámetros son configurables y se pueden ajustar con flexibilidad a su estado óptimo
El análisis de la combinación de varios indicadores presenta problemas de optimización de parámetros
Hay problemas de retraso tanto en la línea de medición como en la banda de Brin, lo que puede provocar que el deterioro no se produzca a tiempo.
Los indicadores de cantidad de tiempo son sensibles a la configuración de parámetros y necesitan ajustes en diferentes mercados
En el balance de los mercados, existe la posibilidad de generar más señales falsas
Sin tomar en cuenta el impacto de los costos de transacción, las ganancias y pérdidas reales serán menores que los resultados de la retrospectiva
Intentar optimizar automáticamente el conjunto de parámetros con métodos de aprendizaje automático
Configuración de un stop móvil dinámico o un stop de seguimiento para un mejor bloqueo de ganancias
Introducción de indicadores de energía del volumen de transacciones para evitar que el volumen se desvíe de las transacciones erróneas
Combinación de la teoría de la onda para determinar si la tendencia se encuentra actualmente en una etapa temprana, media o tardía, y para ajustar dinámicamente los parámetros de la estrategia
Tener en cuenta el impacto de los costos reales de las transacciones y establecer un límite mínimo de fluctuación para controlar la rentabilidad
La estrategia tiene en cuenta una variedad de indicadores que ofrecen una buena capacidad de identificación de tendencias, lo que ayuda a determinar el inicio y el final de las tendencias reales. La estabilidad de la estrategia se puede mejorar aún más a través de la optimización de parámetros, la optimización de pérdidas y la optimización de filtros. Sin embargo, en general, como estrategia de seguimiento de tendencias, su retroceso y la proporción de pérdidas aún requieren un cierto riesgo.
/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// @version=4
// Credits
// "Vwap with period" code which used in this strategy to calculate the leadLine was written by "neolao" active on https://tr.tradingview.com/u/neolao/
// "TSV" code which used in this strategy was written by "liw0" active on https://www.tradingview.com/u/liw0. The code is corrected by "vitelot" December 2018.
strategy("HYE Trend Hunter [Strategy]", overlay = true, initial_capital = 1000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_value = 0.025, pyramiding = 0)
// Strategy inputs
slowtenkansenPeriod = input(9, minval=1, title="Slow Tenkan Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
slowkijunsenPeriod = input(26, minval=1, title="Slow Kijun Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
fasttenkansenPeriod = input(5, minval=1, title="Fast Tenkan Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
fastkijunsenPeriod = input(13, minval=1, title="Fast Kijun Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
BBlength = input(20, minval=1, title= "Bollinger Band Length", group = "Bollinger Bands")
BBmult = input(2.0, minval=0.001, maxval=50, title="Bollinger Band StdDev", group = "Bollinger Bands")
tsvlength = input(13, minval=1, title="TSV Length", group = "Tıme Segmented Volume")
tsvemaperiod = input(7, minval=1, title="TSV Ema Length", group = "Tıme Segmented Volume")
// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
defval=1, minval=1, maxval=31, group = "Backtest Range")
startMonth = input(title="Start Month", type=input.integer,
defval=1, minval=1, maxval=12, group = "Backtest Range")
startYear = input(title="Start Year", type=input.integer,
defval=2000, minval=1800, maxval=2100, group = "Backtest Range")
endDate = input(title="End Date", type=input.integer,
defval=31, minval=1, maxval=31, group = "Backtest Range")
endMonth = input(title="End Month", type=input.integer,
defval=12, minval=1, maxval=12, group = "Backtest Range")
endYear = input(title="End Year", type=input.integer,
defval=2021, minval=1800, maxval=2100, group = "Backtest Range")
inDateRange = true
//Slow Tenkan Sen Calculation
typicalPriceTS = (high + low + close) / 3
typicalPriceVolumeTS = typicalPriceTS * volume
cumulativeTypicalPriceVolumeTS = sum(typicalPriceVolumeTS, slowtenkansenPeriod)
cumulativeVolumeTS = sum(volume, slowtenkansenPeriod)
slowtenkansenvwapValue = cumulativeTypicalPriceVolumeTS / cumulativeVolumeTS
//Slow Kijun Sen Calculation
typicalPriceKS = (high + low + close) / 3
typicalPriceVolumeKS = typicalPriceKS * volume
cumulativeTypicalPriceVolumeKS = sum(typicalPriceVolumeKS, slowkijunsenPeriod)
cumulativeVolumeKS = sum(volume, slowkijunsenPeriod)
slowkijunsenvwapValue = cumulativeTypicalPriceVolumeKS / cumulativeVolumeKS
//Fast Tenkan Sen Calculation
typicalPriceTF = (high + low + close) / 3
typicalPriceVolumeTF = typicalPriceTF * volume
cumulativeTypicalPriceVolumeTF = sum(typicalPriceVolumeTF, fasttenkansenPeriod)
cumulativeVolumeTF = sum(volume, fasttenkansenPeriod)
fasttenkansenvwapValue = cumulativeTypicalPriceVolumeTF / cumulativeVolumeTF
//Fast Kijun Sen Calculation
typicalPriceKF = (high + low + close) / 3
typicalPriceVolumeKF = typicalPriceKS * volume
cumulativeTypicalPriceVolumeKF = sum(typicalPriceVolumeKF, fastkijunsenPeriod)
cumulativeVolumeKF = sum(volume, fastkijunsenPeriod)
fastkijunsenvwapValue = cumulativeTypicalPriceVolumeKF / cumulativeVolumeKF
//Slow LeadLine Calculation
lowesttenkansen_s = lowest(slowtenkansenvwapValue, slowtenkansenPeriod)
highesttenkansen_s = highest(slowtenkansenvwapValue, slowtenkansenPeriod)
lowestkijunsen_s = lowest(slowkijunsenvwapValue, slowkijunsenPeriod)
highestkijunsen_s = highest(slowkijunsenvwapValue, slowkijunsenPeriod)
slowtenkansen = avg(lowesttenkansen_s, highesttenkansen_s)
slowkijunsen = avg(lowestkijunsen_s, highestkijunsen_s)
slowleadLine = avg(slowtenkansen, slowkijunsen)
//Fast LeadLine Calculation
lowesttenkansen_f = lowest(fasttenkansenvwapValue, fasttenkansenPeriod)
highesttenkansen_f = highest(fasttenkansenvwapValue, fasttenkansenPeriod)
lowestkijunsen_f = lowest(fastkijunsenvwapValue, fastkijunsenPeriod)
highestkijunsen_f = highest(fastkijunsenvwapValue, fastkijunsenPeriod)
fasttenkansen = avg(lowesttenkansen_f, highesttenkansen_f)
fastkijunsen = avg(lowestkijunsen_f, highestkijunsen_f)
fastleadLine = avg(fasttenkansen, fastkijunsen)
// BBleadLine Calculation
BBleadLine = avg(fastleadLine, slowleadLine)
// Bollinger Band Calculation
basis = sma(BBleadLine, BBlength)
dev = BBmult * stdev(BBleadLine, BBlength)
upper = basis + dev
lower = basis - dev
// TSV Calculation
tsv = sum(close>close[1]?volume*(close-close[1]):close<close[1]?volume*(close-close[1]):0,tsvlength)
tsvema = ema(tsv, tsvemaperiod)
// Rules for Entry & Exit
if(fastleadLine > fastleadLine[1] and slowleadLine > slowleadLine[1] and tsv > 0 and tsv > tsvema and close > upper and inDateRange)
strategy.entry("BUY", strategy.long)
if(fastleadLine < fastleadLine[1] and slowleadLine < slowleadLine[1])
strategy.close("BUY")
// Plots
colorsettingS = input(title="Solid Color Slow Leadline", defval=false, type=input.bool)
plot(slowleadLine, title = "Slow LeadLine", color = colorsettingS ? color.aqua : slowleadLine > slowleadLine[1] ? color.green : color.red, linewidth=3)
colorsettingF = input(title="Solid Color Fast Leadline", defval=false, type=input.bool)
plot(fastleadLine, title = "Fast LeadLine", color = colorsettingF ? color.orange : fastleadLine > fastleadLine[1] ? color.green : color.red, linewidth=3)
p1 = plot(upper, "Upper BB", color=#2962FF)
p2 = plot(lower, "Lower BB", color=#2962FF)
fill(p1, p2, title = "Background", color=color.blue)