Estrategia de entrada de medias móviles de Fibonacci

El autor:¿ Qué pasa?, fecha: 2023-11-01 16:42:41
Las etiquetas:

img

Resumen general

La estrategia de entrada de promedios móviles de Fibonacci se basa en señales de cruce de promedios móviles o crossunder para generar señales comerciales. Cuando el promedio móvil a corto plazo cruza por encima del promedio móvil a largo plazo, se genera una señal de cruce dorada alcista. Cuando el promedio móvil a corto plazo cruza por debajo del promedio móvil a largo plazo, se genera una señal de cruce de muerte bajista.

La estrategia de entrada de promedios móviles de Fibonacci (FibMAI) le permite elegir cualquier valor para sus cruces alcistas o bajistas. Para su visualización visual, he trazado promedios móviles de Fibonacci que incluyen 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987 mientras oculto los candelabros. Pero para usar este indicador, solo habilito a un par de MAs para verificar si hay un patrón de cruce o cruce notable, luego vuelvo a probar esos valores en la entrada de configuración de estrategia FibMAI Larga o Corta.

Por ejemplo, la entrada de configuración Larga o Corta para este gráfico de días NQ1! es:

Alza = FibEMA34 el cruce FibEMA144

Bajista = FibEMA55 el transversal FibSMA144

Como puede ver, puede mezclar y combinar 4 valores diferentes de MA, ya sea exponencial o simple.

Configuración de color por defecto: Valor creciente = color verde Bajo el valor = color rojo

Configuración predeterminada de FibMA visual: FibEMA 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181 El tratamiento con FibEMA se ha realizado en:

Configuración predeterminada de MA visual: Las tasas de interés de los activos de inversión se calcularán de acuerdo con el método de cálculo.

Configuración predeterminada de largo o corto: Alza = FibEMA34 el cruce FibEMA144

Bajista = FibEMA55 el transversal FibSMA144

Principio

La lógica central de esta estrategia se basa en señales de cruce entre dos promedios móviles para generar señales de negociación.

Los promedios móviles son indicadores técnicos utilizados para analizar las tendencias del mercado. Calculan el precio de cierre promedio durante un cierto período y pueden filtrar eficazmente las fluctuaciones del mercado. Hay dos tipos de promedios móviles: promedio móvil simple (SMA) y promedio móvil exponencial (EMA).

El SMA es el promedio aritmético simple de los precios de cierre durante un período.

Cuando el promedio móvil a corto plazo cruza por encima del promedio móvil a largo plazo, señala un cambio de tendencia alcista y genera una señal de compra. Esto se llama una cruz dorada. Por el contrario, cuando el promedio móvil a corto plazo cruza por debajo del promedio móvil a largo plazo, señala un cambio de tendencia bajista y genera una señal de venta. Esto se llama una cruz de muerte.

La flexibilidad de esta estrategia radica en la capacidad de establecer manualmente los parámetros para los 4 promedios móviles. Los parámetros predeterminados son cruce de EMA de 34 períodos por encima de EMA de 144 períodos para señal alcista y cruce de SMA de 55 períodos por debajo de EMA de 144 períodos para señal bajista. Estos parámetros se pueden ajustar libremente en las cajas de entrada.

Además, la estrategia traza múltiples promedios móviles de secuencia de Fibonacci en diferentes marcos de tiempo. También se trazan promedios móviles comunes como de 50 días, 100 días, 150 días y 200 días. Estos sirven como referencias, mientras que la clave es la media móvil cruzada ingresada en la configuración Larga / Corta.

Ventajas

Las ventajas de esta estrategia de cruce de medias móviles incluyen:

  1. El uso de medias móviles filtra el ruido del mercado e identifica la dirección de la tendencia

  2. Las señales cruzadas tienen cierto grado de fiabilidad

  3. Combinaciones personalizables de medias móviles largas y cortas para la optimización de parámetros

  4. Incorpora múltiples marcos de tiempo para identificar las tendencias

  5. Puede utilizar tanto la EMA como la SMA en función de las características del instrumento

  6. Visualmente intuitivo con cruces de medias móviles de colores

  7. Sencillo de entender y adecuado para principiantes

  8. Aplicación flexible en diferentes instrumentos con universalidad

Los riesgos

Esta estrategia también presenta algunos riesgos:

  1. Demasiadas señales durante los mercados agitados, lo que lleva a un exceso de operaciones

  2. Señales incorrectas si se utilizan combinaciones de medias móviles inadecuadas

  3. Retraso en las señales durante las inversiones de tendencia extremas, incapaz de reflejar los cambios de precios en el tiempo

  4. Las medias móviles no evitan completamente las pérdidas, necesitan un stop loss razonable

  5. La sobre-optimización que causa el ajuste de la curva. Los parámetros deben ser robustos a través de los ciclos del mercado.

  6. Los parámetros pueden necesitar ajustes precisos para diferentes instrumentos

Direcciones de optimización

Algunas maneras de optimizar esta estrategia:

  1. Prueba diferentes combinaciones de medias móviles largas y cortas para encontrar parámetros óptimos utilizando backtesting

  2. Trate de ajustar los tipos de promedios móviles, comparar el desempeño de SMA y EMA. Use SMA para instrumentos con tendencias más claras y EMA para instrumentos más volátiles.

  3. Incorporar otros indicadores como KDJ, MACD para filtrar señales falsas y mejorar la calidad

  4. Añadir estrategias de stop loss para controlar la pérdida en operaciones individuales, como el stop loss de seguimiento

  5. Optimizar las estrategias de gestión de fondos, como ajustar el tamaño de las posiciones en función de la retirada

  6. Estabilidad del parámetro de ensayo en diferentes instrumentos y plazos para evaluar la robustez

Conclusión

En general, la estrategia de entrada de promedios móviles de Fibonacci es un sistema de seguimiento de tendencias confiable. Utiliza cruces de promedios móviles simples e intuitivos para las señales comerciales, y se puede adaptar a diferentes instrumentos a través de la optimización de parámetros. Con un stop loss y una gestión de dinero adecuados, los riesgos se pueden controlar. Se deben evitar la sobre-optimización y las señales de inversión de tendencias rezagadas. Con parámetros bien elegidos y disciplina comercial, esta puede ser una estrategia eficiente y estable para generar ganancias.


/*backtest
start: 2022-10-25 00:00:00
end: 2023-10-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Options360 : Fibonacci MAI (Moving Averages Input) beta 10/15/22
// © Options360 original public release = 2/25/23
// * This script uses altered pieces of code from my @Options360 "Fibonacci MA7" indicator*
// 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811
////
strategy(title="Fibonacci Moving Averages Input", shorttitle = "FibMAI", overlay=true)

src = input(ohlc4, 'source')
//
string  GRP = "Long or Short Settings"
exponential1 = input(true, title="long EMA or SMA", tooltip="EMA checked or SMA unchecked", group = GRP)
long = input.int(34, minval=1, title="long", tooltip="Signal Moving average long input")
long1 = exponential1 ? ta.ema(src, long) : ta.sma(src, long)

exponential2 = input(true, title="crossover EMA or SMA", tooltip="EMA checked or SMA unchecked")
longer = input.int(144, minval=1, title="crossover", tooltip="Crossed over Moving average long input")
long2 = exponential2 ? ta.ema(src, longer) : ta.sma(src, longer)

exponential3 = input(true, title="short EMA or SMA", tooltip="EMA checked or SMA unchecked")
short = input.int(55, minval=1, title="short", tooltip="Signal Moving average short input")
short1 = exponential3 ? ta.ema(src, short) : ta.sma(src, short)

exponential4 = input(false, title="crossunder EMA or SMA", tooltip="EMA checked or SMA unchecked")
shorter = input.int(144, minval=1, title="crossunder", tooltip="Crossed under Moving average short input")
short2 = exponential4 ? ta.ema(src, shorter) : ta.sma(src, shorter)
//
string  GRP2 = "Visual FibMA Settings"
exponential = input(true, title="Fib EMA or SMA", tooltip="EMA checked or SMA unchecked", group = GRP2)
//
smaplot11 = input (true, title="MA1")
len11 = input.int(1, minval=1, title="ma Length")
out11 = exponential ? ta.ema(src, len11) : ta.sma(src, len11)
up11 = out11 > out11[1]
down11 = out11 < out11[1]
mycolor11 = up11 ? #3cfe12 : down11 ? #ff0202 : #008eff
plot(out11 and smaplot11 ? out11 :na, title="1", color=mycolor11, linewidth=1)

smaplot18 = input (true, title="MA2")
len18 = input.int(2, minval=1, title="ma Length")
out18 = exponential ? ta.ema(src, len18) : ta.sma(src, len18)
up18 = out18 > out18[1]
down18 = out18 < out18[1]
mycolor18 = up18 ? #3cfe12 : down18 ? #ff0202 : #008eff
plot(out18 and smaplot18 ? out18 :na , title="2", color=mycolor18, linewidth=1)

smaplot13 = input (true, title="MA3")
len13 = input.int(3, minval=1, title="ma Length")
out13 = exponential ? ta.ema(src, len13) : ta.sma(src, len13)
up13 = out13 > out13[1]
down13 = out13 < out13[1]
mycolor13 = up13 ? #3cfe12 : down13 ? #ff0202 : #008eff
plot(out13 and smaplot13 ? out13 :na , title="3", color=mycolor11, linewidth=1)

smaplot9 = input (true, title="MA5")
len9 = input.int(5, minval=1, title="ma Length")
out9 = exponential ? ta.ema(src, len9) : ta.sma(src, len9)
up9 = out9 > out9[1]
down9 = out9 < out9[1]
mycolor9 = up9 ? #3cfe12 : down9 ? #ff0202 : #008eff
plot(out9 and smaplot9 ? out9 :na , title="5", color=mycolor9, linewidth=1)

smaplot8 = input (true, title="MA8")
len8 = input.int(8, minval=1, title="ma Length")
out8 = exponential ? ta.ema(src, len8) : ta.sma(src, len8)
up8 = out8 > out8[1]
down8 = out8 < out8[1]
mycolor8 = up8 ? #3cfe12 : down8 ? #ff0202 : #008eff
plot(out8 and smaplot8 ? out8 :na , title="8", color=mycolor8, linewidth=1)

smaplot7 = input (true, title="MA13")
len7 = input.int(13, minval=1, title="ma Length")
out7 = exponential ? ta.ema(src, len7) : ta.sma(src, len7)
up7 = out7 > out7[1]
down7 = out7 < out7[1]
mycolor7 = up7 ? #3cfe12 : down7 ? #ff0202 : #008eff
plot(out7 and smaplot7 ? out7 :na , title="13", color=mycolor7, linewidth=1)

smaplot = input (true, title="MA21")
len = input.int(21, minval=1, title="ma Length")
out = exponential ? ta.ema(src, len) : ta.sma(src, len)
up = out > out[1]
down = out < out[1]
mycolor = up ? #3cfe12 : down ? #ff0202 : #008eff
plot(out and smaplot ? out :na, title="21", color=mycolor, linewidth=1)

smaplot2 = input (true, title="MA34")
len2 = input.int(34, minval=1, title="ma Length")
out2 = exponential ? ta.ema(src, len2) : ta.sma(src, len2)
up2 = out2 > out2[1]
down2 = out2 < out2[1]
mycolor2 = up2 ? #3cfe12 : down2 ? #ff0202 : #008eff
plot(out2 and smaplot2 ? out2 :na , title="34", color=mycolor2, linewidth=1)

smaplot3 = input (true, title="MA55")
len3 = input.int(55, minval=1, title="ma Length")
out3 = exponential ? ta.ema(src, len3) : ta.sma(src, len3)
up3 = out3 > out3[1]
down3 = out3 < out3[1]
mycolor3 = up3 ? #3cfe12 : down3 ? #ff0202 : #008eff
plot(out3 and smaplot3 ? out3 :na, title="55", color=mycolor3, linewidth=1)

smaplot4 = input (true, title="MA89")
len4 = input.int(89, minval=1, title="ma Length")
out4 = exponential ? ta.ema(src, len4) : ta.sma(src, len4)
up4 = out4 > out4[1]
down4 = out4 < out4[1]
mycolor4 = up4 ? #3cfe12 : down4 ? #ff0202 : #008eff
plot(out4 and smaplot4 ? out4 :na , title="89", color=mycolor4, linewidth=1)

smaplot5 = input (true, title="MA144")
len5 = input.int(144, minval=1, title="ma Length")
out5 = exponential ? ta.ema(src, len5) : ta.sma(src, len5)
up5 = out5 > out5[1]
down5 = out5 < out5[1]
mycolor5 = up5 ? #3cfe12 : down5 ? #ff0202 : #008eff
plot(out5 and smaplot5 ? out5 :na, title="144", color=mycolor5, linewidth=1)

smaplot6 = input (true, title="MA233")
len6 = input.int(233, minval=1, title="ma Length")
out6 = exponential ? ta.ema(src, len6) : ta.sma(src, len6)
up6 = out6 > out6[1]
down6 = out6 < out6[1]
mycolor6 = up6 ? #3cfe12 : down6 ? #ff0202 : #008eff
plot(out6 and smaplot6 ? out6 :na , title="233", color=mycolor6, linewidth=1)

smaplot10 = input (true, title="MA377")
len10 = input.int(377, minval=1, title="ma Length")
out10 = exponential ? ta.ema(src, len10) : ta.sma(src, len10)
up10 = out10 > out10[1]
down10 = out10 < out10[1]
mycolor10 = up10 ? #3cfe12 : down10 ? #ff0202 : #008eff
plot(out10 and smaplot10 ? out10 :na , title="377", color=mycolor10, linewidth=1)

smaplot14 = input (true, title="MA610")
len14 = input.int(610, minval=1, title="ma Length")
out14 = exponential ? ta.ema(src, len14) : ta.sma(src, len14)
up14 = out14 > out14[1]
down14 = out14 < out14[1]
mycolor14 = up14 ? #3cfe12 : down14 ? #ff0202 : #008eff
plot(out14 and smaplot14 ? out14 :na , title="610", color=mycolor14, linewidth=1)

smaplot15 = input (true, title="MA987")
len15 = input.int(987, minval=1, title="ma Length")
out15 = exponential ? ta.ema(src, len15) : ta.sma(src, len15)
up15 = out15 > out15[1]
down15 = out15 < out15[1]
mycolor15 = up15 ? #3cfe12 : down15 ? #ff0202 : #008eff
plot(out15 and smaplot15 ? out15 :na , title="987", color=mycolor15, linewidth=1)

smaplot16 = input (true, title="MA1597")
len16 = input.int(1597, minval=1, title="ma Length")
out16 = exponential ? ta.ema(src, len16) : ta.sma(src, len16)
up16 = out16 > out16[1]
down16 = out16 < out16[1]
mycolor16 = up16 ? #3cfe12 : down16 ? #ff0202 : #008eff
plot(out16 and smaplot16 ? out16 :na , title="1597", color=mycolor16, linewidth=1)

smaplot17 = input (true, title="MA2584")
len17 = input.int(2584, minval=1, title="ma Length")
out17 = exponential ? ta.ema(src, len17) : ta.sma(src, len17)
up17 = out17 > out17[1]
down17 = out17 < out17[1]
mycolor17 = up17 ? #3cfe12 : down17 ? #ff0202 : #008eff
plot(out17 and smaplot17 ? out17 :na , title="2584", color=mycolor17, linewidth=1)

smaplot19 = input (true, title="MA4181")
len19 = input.int(4181, minval=1, title="ma Length")
out19 = exponential ? ta.ema(src, len19) : ta.sma(src, len19)
up19 = out19 > out19[1]
down19 = out19 < out19[1]
mycolor19 = up19 ? #3cfe12 : down19 ? #ff0202 : #008eff
plot(out19 and smaplot19 ? out19 :na , title="4181", color=mycolor19, linewidth=1)
//
string  GRP3 = "Visual MA Settings"
exponential5 = input(false, title="EMA or SMA", tooltip="EMA checked or SMA unchecked", group = GRP3)

smaplot50 = input (true, title="MA50")
len50 = input.int(50, minval=1, title="ma Length")
ma50 = exponential5 ? ta.ema(src, len50) : ta.sma(src, len50)
up50 = ma50 > ma50[1]
down50 = ma50 < ma50[1]
mycolor50 = up50 ? #3cfe12 : down50 ? #ff0202 : #008eff
plot(ma50 and smaplot50 ? ma50 :na , title="50", color=mycolor50, linewidth=1)

smaplot100 = input (true, title="MA100")
len100 = input.int(100, minval=1, title="ma Length")
ma100 = exponential5 ? ta.ema(src, len100) : ta.sma(src, len100)
up100 = ma100 > ma100[1]
down100 = ma100 < ma100[1]
mycolor100 = up100 ? #3cfe12 : down100 ? #ff0202 : #008eff
plot(ma100 and smaplot100 ? ma100 :na , title="100", color=mycolor100, linewidth=1)

smaplot150 = input (true, title="MA150")
len150 = input.int(150, minval=1, title="ma Length")
ma150 = exponential5 ? ta.ema(src, len150) : ta.sma(src, len150)
up150 = ma150 > ma150[1]
down150 = ma150 < ma150[1]
mycolor150 = up150 ? #3cfe12 : down150 ? #ff0202 : #008eff
plot(ma150 and smaplot150 ? ma150 :na , title="150", color=mycolor150, linewidth=1)

smaplot200 = input (true, title="MA200")
len200 = input.int(200, minval=1, title="ma Length")
ma200 = exponential5 ? ta.ema(src, len200) : ta.sma(src, len200)
up200 = ma200 > ma200[1]
down200 = ma200 < ma200[1]
mycolor200 = up200 ? #3cfe12 : down200 ? #ff0202 : #008eff
plot(ma200 and smaplot200 ? ma200 :na , title="200", color=mycolor200, linewidth=1)
//
if (ta.crossover(long1, long2))
	strategy.entry("maL", strategy.long, comment="maLong")
if (ta.crossunder(short1, short2))
	strategy.entry("maS", strategy.short, comment="maShort")
////

Más.