La estrategia es una estrategia de negociación basada en la señal de comercio de Faytterro Estimator. Faytterro Estimator es un indicador para juzgar la tendencia mediante el cálculo de la convergencia dispersa de los precios. La estrategia combina la señal de comercio de Faytterro Estimator, y algunas condiciones adicionales, para emitir diferentes tamaños de compra y venta en el punto ideal.
El núcleo de esta estrategia es el Estimador de Faytterro. Su método de cálculo es: primero, calcular la dispersión de convergencia de los precios, CR, y luego construir una función secundaria que, mediante el establecimiento de diferentes coeficientes, pueda reflejar las características de la curva de CR. Observando los puntos de inflexión de la curva de la función secundaria, juzgue el cambio en la tendencia de los precios.
Concretamente, la estrategia primero calcula la dispersión de convergencia de los precios (CR) y luego construye una longitud de 2*En el conjunto dizi de len, rellena los valores de la función secundaria. El coeficiente de la función secundaria refleja el valor de CR. Luego, observa los valores de len + 1 + 5 y len + 1 + 4 para determinar si la función secundaria tiene un punto de inflexión.
Sobre esta base, la estrategia también establece algunas condiciones adicionales, como establecer el mínimo intervalo de ruptura de precios para evitar el comercio frecuente; establecer señales de entrada de diferentes tamaños, etc. Estas condiciones son para filtrar algunos puntos de comercio no deseados.
La estrategia tiene las siguientes ventajas:
El indicador Faytterro Estimator es un indicador de tendencias que es sensible a las fluctuaciones de los precios y capta los cambios de tendencia con anticipación.
Construir una función secundaria que refleje las características de la curva CR, buscar señales de punto de inflexión, y evaluar la eficacia de los métodos intuitivos.
La configuración de señales de entrada de diferentes tamaños permite realizar operaciones piramidales en los puntos ideales para aumentar el espacio de ganancias.
Se añade una configuración de mínimo intervalo para filtrar eficazmente las señales y evitar el uso frecuente de transacciones no válidas.
Tiene muchos parámetros ajustables, se puede optimizar para diferentes variedades, y es muy adaptable.
La estrategia es clara y fácil de entender, el código es fácil de leer y fácil de aprender.
La estrategia también tiene algunos riesgos a tener en cuenta:
El Faytterro Estimator tiene riesgos de ajuste curvo y puede no funcionar bien en algunas variedades.
La señal puede ser demasiado amplia para juzgar sólo en función de la curvatura de la función secundaria, lo que puede conducir a un error de juicio.
La frecuencia de las transacciones piramidales aumenta la carga de las comisiones.
La gran cantidad de parámetros ajustables aumenta la dificultad de ajuste.
La falta de capacidad para manejar eficazmente los errores de juicio durante los períodos de fluctuación de los precios.
La falta de un mecanismo de suspensión de pérdidas puede provocar que las pérdidas aumenten.
Las soluciones para los riesgos son:
Optimización de parámetros para diferentes variedades, mejora de la robustez.
Se añaden filtros de otros indicadores para evitar errores de cálculo por el solo hecho de los puntos de inflexión.
Establezca un stop loss razonable y controle las pérdidas individuales.
Ajuste automático de los parámetros a través de métodos de Big Data.
El sistema de detección de temblores se ha mejorado para evitar la fase de temblor.
Establezca una lógica de stop loss razonable.
La estrategia de optimización incluye:
Se añade la lógica de stop loss para controlar las pérdidas individuales. Se puede configurar el stop loss móvil o el stop loss temporal.
Añadir una combinación de otros indicadores para evitar el riesgo de error en el cálculo de un solo indicador de Faytterro Estimator. Por ejemplo, se filtra en combinación con indicadores como MACD, KDJ.
Aumentar el mecanismo de confirmación para evitar la salida de stop loss debido a la corta reorientación de los precios. Se puede considerar una segunda confirmación de entrada.
Optimización de parámetros ajustables, estableciendo parámetros razonables para diferentes variedades. Se pueden utilizar métodos como algoritmos genéticos, optimización de Bayes y otros.
Aumentar la identificación de situaciones de crisis y evitar el comercio durante el período de crisis. Se puede identificar con indicadores como ATR, DMI.
Optimización de la lógica de la pirámide para evitar la caída de la caída. Por ejemplo, ajuste dinámico de la subida de la posición según la intensidad de la tendencia.
Prueba los ajustes de parámetros de diferentes períodos de tiempo para encontrar el ciclo óptimo.
Esta estrategia se basa en la señal de comercio de Faytterro Estimator para tomar decisiones, a partir de la cual se agrega un juicio lógico y se configura una señal de entrada de diferentes tamaños, formando una estrategia de seguimiento de tendencias con características de pirámide. Esta estrategia es intuitiva, fácil de entender y tiene una mayor capacidad de captura de tendencias.
/*backtest
start: 2022-09-21 00:00:00
end: 2023-08-10 00:00:00
period: 1d
basePeriod: 1h
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/
// © faytterro
//@version=5
// strategy("Faytterro Estimator Strategy", overlay=true, pyramiding=100)
src=input(hlc3,title="source")
len=input.int(10,title="faytterro estimator lenght", maxval=500)
len2=100
len3=input.float(500,title="minumum enrty-close gap (different direction)")
len4=input.float(500,title="minumum entry-entry gap (same direction)")
cr(x, y) =>
z = 0.0
weight = 0.0
for i = 0 to y-1
z:=z + x[i]*((y-1)/2+1-math.abs(i-(y-1)/2))
z/(((y+1)/2)*(y+1)/2)
cr= cr(src,2*len-1)
width=input.int(10, title="strong entry size", minval=1)
dizi = array.new_float(500)
// var line=array.new_line()
//if barstate.islast
for i=0 to len*2
array.set(dizi,i,(i*(i-1)*(cr-2*cr[1]+cr[2])/2+i*(cr[1]-cr[2])+cr[2]))
buy = array.get(dizi,len+1+5)>array.get(dizi,len+1+4) and array.get(dizi,len+1+5)<cr[len]
sell = array.get(dizi,len+1+5)<array.get(dizi,len+1+4) and array.get(dizi,len+1+5)>cr[len]
bb=buy? hlc3 : na
ss=sell? hlc3 : na
sbuy= buy and close<(close[ta.barssince(buy or sell)])[1]-len4 and close<ta.highest(fixnan(ss),len2)-len3*3
ssell= sell and close>(close[ta.barssince(buy or sell)])[1]+len4 and close>ta.lowest(fixnan(bb),len2)+len3*3
buy:= buy and close<(close[ta.barssince(buy or sell)])[1]-len4 and close<ta.highest(fixnan(ss),len2)-len3 //and close>ta.highest(fixnan(ss),len2)-len3*3
sell:= sell and close>(close[ta.barssince(buy or sell)])[1]+len4 and close>ta.lowest(fixnan(bb),len2)+len3 //and close<ta.lowest(fixnan(bb),len2)+len3*3
alertcondition(buy or sell)
if (sbuy)
strategy.entry("strong buy", strategy.long,width)
if (ssell)
strategy.entry("strong sell", strategy.short,width)
if (buy)
strategy.entry("buy", strategy.long)
if (sell)
strategy.entry("sell", strategy.short)