
La idea principal de esta estrategia es combinar el indicador percentrank y la optimización de los parámetros para permitir el juicio y el seguimiento de la tendencia de los precios. La estrategia genera señales de negociación mediante la comparación del precio actual con el porcentaje de tamaño de los precios en un período histórico determinado, para capturar el efecto de espejo intermedio, seguir la tendencia y obtener ganancias adicionales.
La estrategia utiliza el indicador percentrank para determinar la tendencia de los precios. El percentrank indica la fuerza relativa de los precios actuales en el período de observación. El parámetro len indica la longitud del período histórico de observación.
El porcentaje de rango está entre 0 y 100. Cuando el porcentaje de rango está cerca de 0, el precio actual está cerca del precio más bajo del período de revisión y está en la zona de subestimación. Cuando está cerca de 100, el precio actual está cerca del precio más alto del período de revisión y está en la zona de subestimación.
La estrategia también introdujo el parámetro de escala como desplazamiento. Hacía que el rango de 0 a 100 se moviera a escala hasta el rango de escala 100+. Al mismo tiempo, se establecieron dos líneas de señal level_1 y level_2 .
Cuando el indicador de porcentaje de precio atraviesa el nivel_1 desde abajo, se genera una señal de compra; cuando atraviesa el nivel_2 desde arriba, se genera una señal de compra. Las condiciones de posición cerrada son opuestas a las de entrada.
Para los riesgos anteriores, se puede optimizar mediante el ajuste de la configuración de los parámetros len, scale y level; al mismo tiempo, se puede combinar con otros indicadores como confirmación y evitar transacciones erróneas.
La estrategia tiene espacio para ser optimizada aún más:
La estrategia tiene una concepción clara, utiliza métodos cuantitativos de optimización de parámetros para determinar y rastrear las tendencias de los precios. Tiene cierto valor en la práctica, pero aún necesita ser probado y optimizado para reducir el riesgo en la práctica y mejorar la estabilidad de la rentabilidad.
/*backtest
start: 2023-12-02 00:00:00
end: 2024-01-01 00:00:00
period: 4h
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/
// © Alex_Dyuk
//@version=4
strategy(title="percentrank", shorttitle="percentrank")
src = input(close, title="Source")
len = input(title="lookback - Период сравнения", type=input.integer, defval=10, minval=2)
scale = input(title="scale offset - смещение шкалы", type=input.integer, defval=50, minval=0, maxval=100)
level_1 = input(title="sygnal line 1", type=input.integer, defval=30)
level_2 = input(title="sygnal line 2", type=input.integer, defval=-30)
prank = percentrank(src,len)-scale
plot(prank, style = plot.style_columns)
plot(level_2, style = plot.style_line, color = color.red)
plot(level_1, style = plot.style_line, color = color.green)
longCondition = (crossunder(level_1, prank) == true)
if (longCondition)
strategy.entry("Long", strategy.long)
longExitCondition = (crossover(level_2, prank) == true)
if (longExitCondition)
strategy.close("Long")
shortCondition = (crossover(level_2, prank) == true)
if (shortCondition)
strategy.entry("Short", strategy.short)
shortexitCondition = (crossunder(level_1, prank) == true)
if (shortexitCondition)
strategy.close("Short")