Estrategia de negociación de media móvil de arco iris


Fecha de creación: 2023-09-28 11:01:59 Última modificación: 2023-09-28 11:01:59
Copiar: 0 Número de Visitas: 757
1
Seguir
1617
Seguidores

Descripción general

La estrategia de trading de las medias móviles del arco iris se basa en el diseño de los indicadores de las medias móviles del arco iris. La estrategia determina la dirección de la tendencia mediante la construcción de un sistema de medias móviles del arco iris que contiene 7 medias móviles, en combinación con el indicador RSI para filtrar las señales falsas y permitir la entrada de operaciones de bajo riesgo.

Principio de estrategia

La estrategia consiste en generar señales de negociación a través de los siguientes pasos:

  1. Construir un sistema de promedios móviles de arco iris. El sistema contiene 7 promedios móviles, de los cuales el primer promedio móvil tiene un período de 12, el promedio de los datos de origen es el valor del precio de cierre. Los otros 6 promedios móviles tienen un período de 3 ciclos decrecientes, el valor del promedio móvil anterior es el dato de origen.

  2. Determina la dirección de la tendencia. Si la primera media móvil se encuentra en la parte superior de la media móvil del arco iris, se define como una tendencia al alza; si se encuentra en la parte inferior, se define como una tendencia a la baja; si se encuentra en el medio, se define como una recomposición.

  3. Generar señales de negociación. Cuando la tendencia del sistema de medias móviles del arco iris cambia de alza a baja, generar una señal de venta; Cuando la tendencia cambia de alza a baja, generar una señal de compra; Cuando la tendencia cambia de reajuste a alza o a baja, aplanar la posición actual.

  4. El filtro RSI. Sólo se aceptan señales de negociación cuando el indicador RSI muestra una situación normal. El primer indicador RSI requiere que se encuentre entre las zonas de sobrecompra y venta, para evitar falsas rupturas.

Ventajas estratégicas

La estrategia tiene las siguientes ventajas:

  1. El sistema de promedios móviles del arco iris puede determinar con precisión la dirección de la tendencia. La combinación de múltiples promedios móviles puede filtrar eficazmente el ruido del mercado y identificar la reversión de la tendencia.

  2. El indicador RSI tiene un doble mecanismo de filtración, que puede filtrar eficazmente las falsas señales de ruptura y evitar que se bloqueen. El primer RSI asegura que se encuentre en la zona normal, y el segundo RSI asegura que la fuerza de ruptura sea lo suficientemente grande.

  3. La combinación de la tendencia y el indicador de reversión permite entrar en el juego a tiempo cuando la tendencia se vuelve y evitar la caída de la caída.

  4. El riesgo de que una selección de regiones liquide el mercado se puede evitar con la eliminación activa de la posición en la fase de liquidación.

  5. La estrategia tiene mucho espacio para optimizar los parámetros y puede obtener mejores resultados ajustando los parámetros del promedio móvil, la proporción de longitud, el RSI, etc., para diferentes variedades y períodos.

Riesgo estratégico

El principal riesgo de esta estrategia es:

  1. Cuando la reversión de la tendencia no es obvia, puede producirse una falsa señal de reversión, lo que provoca pérdidas comerciales. Se puede ajustar adecuadamente el ciclo de las medias móviles para que la señal de reversión sea más clara.

  2. La aparición de indicadores durante la liquidación de zonas de largo tiempo, abre con frecuencia posiciones de paz, lo que aumenta los costos de transacción y la pérdida de puntos de deslizamiento. Se puede aumentar la intensidad de filtración de la fase de liquidación optimizando los parámetros RSI.

  3. Cuando la inversión es lenta, la pérdida de tiempo y espacio se expande después de que se emite la señal de inversión. Se puede aumentar la diferencia de ciclo de la media móvil para que la señal se emita más a tiempo.

  4. Si los parámetros no se establecen en ese momento, pueden filtrar parte de la señal correcta o generar un retraso en la señal. Es necesario ajustar los parámetros según las características de las diferentes variedades.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Optimización de los parámetros de las medias móviles. Se pueden optimizar los parámetros como la longitud de los períodos de las medias móviles, la proporción de diferencias periódicas y el modo en que se mueven las medias móviles (SMA o EMA) para obtener un juicio de tendencias más preciso.

  2. Optimización de los parámetros del RSI. Optimización de los parámetros del RSI, como la longitud del ciclo, las zonas de sobreventa, las zonas de sobreventa y las zonas neutrales, para que el filtrado sea más preciso y eficaz.

  3. Optimización del ciclo de tiempo. Se pueden probar diferentes ciclos de tiempo para seleccionar el ciclo de tiempo que mejor se adapte a la estrategia para obtener los mejores resultados.

  4. Optimización de variedades. Se pueden ajustar parámetros o reglas según las características de las diferentes variedades para que la estrategia tenga el mejor efecto para esa variedad.

  5. Aumentar el mecanismo de detención de pérdidas. De acuerdo con los resultados de la retroalimentación, se puede establecer un nivel razonable de detención de pérdidas para controlar el riesgo y la ganancia de una sola operación.

Resumir

La estrategia de comercio de media móvil de arco iris utiliza la combinación de la determinación de la tendencia y la filtración de la señal para lograr el efecto de la captura de señales en el punto de inflexión de la tendencia. La estrategia tiene características de precisión de juicio, control de riesgo, y puede ser una estrategia de comercio cuantitativa muy práctica a través de la optimización de parámetros y la perfección de reglas. En general, la estrategia merece un estudio y una aplicación más profundos.

Código Fuente de la Estrategia
/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//╔════════════════════════════════════════════════════════════════════════════╗
//║Rainbow Backtesting base on "Rainbow Moving Average" Strategy as below:     ║
//║1.Rainbow Moving Average setup                                              ║
//║- Source: source of 1st MA                                                  ║
//║- Type: SMA/EMA                                                             ║
//║- Period: period of 1st MA                                                  ║
//║- Displacement: period of 2nd MA to 7th MA with source is previous MA       ║
//║2.Trend Define                                                              ║
//║- Up Trend: Main MA moving at the top of Rainbow                            ║
//║- Down Trend: Main MA moving at the bottom of Rainbow                       ║
//║- Sideway: Main MA moving between the top and the bottom of Rainbow         ║
//║3.Signal                                                                    ║
//║- Buy Signal: When Rainbow change to Up Trend.                              ║
//║- Sell Signal: When Rainbow change to Down Trend.                           ║
//║- Exit: When Rainbow change to Sideway.                                     ║
//║4.RSI Filter                                                                ║
//║- "Enable": Only signals have 1st RSI moving between Overbought and Oversold║
//║and 2nd RSI moving outside Middle Channel are accepted.                     ║
//║- The filter may help trader avoid bull trap, bear trap and choppy market.  ║
//╚════════════════════════════════════════════════════════════════════════════╝

//@version=4
strategy("Rainbow Strategy Backtesting",overlay=false)
//++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++ Rainbow Moving Average +++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++
rainbow_tt="=== Rainbow Moving Average ==="
ma1_source=input(hlc3,title="Source",type=input.source, inline="set1", group=rainbow_tt)
rb_type=input("SMA",title="Type",options=["SMA","EMA"], inline="set1", group=rainbow_tt)
ma1_len=input(12,title="Period", inline="set2", group=rainbow_tt)
dis_len=input(3,title="Displacement", inline="set2", group=rainbow_tt,minval=2)
trend_tt="=== Trend Color ==="
up_col=input(color.new(color.blue,0),title="Up",inline="Color",group=trend_tt)
dn_col=input(color.new(color.red,0),title="Down",inline="Color",group=trend_tt)
sw_col=input(color.new(color.yellow,0),title="No",inline="Color",group=trend_tt)
//1st
ma1=rb_type=="SMA"?sma(ma1_source,ma1_len):ema(ma1_source,ma1_len)
//2nd
ma2=rb_type=="SMA"?sma(ma1,dis_len):ema(ma1,dis_len)
//3rd
ma3=rb_type=="SMA"?sma(ma2,dis_len):ema(ma2,dis_len)
//4
ma4=rb_type=="SMA"?sma(ma3,dis_len):ema(ma3,dis_len)
//5
ma5=rb_type=="SMA"?sma(ma4,dis_len):ema(ma4,dis_len)
//6
ma6=rb_type=="SMA"?sma(ma5,dis_len):ema(ma5,dis_len)
//7
ma7=rb_type=="SMA"?sma(ma6,dis_len):ema(ma6,dis_len)
//MinMax
rb_max=max(ma1,ma2,ma3,ma4,ma5,ma6,ma7)
rb_min=min(ma1,ma2,ma3,ma4,ma5,ma6,ma7)
dir_col=
       ma1==rb_max?up_col:
       ma1==rb_min?dn_col:
       sw_col
dir_style=shape.circle
plotshape(dir_col[1]==dir_col?0:na,title="Trend",style=dir_style,color=dir_col,location=location.absolute)
//++++++++++++++++++++++++++++++++++++++
//+++++++++++++ RSI Filter +++++++++++++
//++++++++++++++++++++++++++++++++++++++
rsi_tt="=== RSI Filter ==="
rsi_filter=input("Enable",title="Filter",options=["Enable","Disable"],inline="set",group=rsi_tt)
over_tt="Over Filter"
rsi_len_1=input(12,title="Period",inline="set",group=over_tt)
rsi_ovb=input(65,title="Overbought",inline="set",group=over_tt)
rsi_ovs=input(35,title="Oversold",inline="set",group=over_tt)
rsi_1=rsi(close,rsi_len_1)
mid_tt="Middle Filter"
rsi_len_2=input(9,title="Period",inline="set",group=mid_tt)
rsi_mid_top=input(56,title="Upper",inline="set",group=mid_tt)
rsi_mid_bot=input(44,title="Lower",inline="set",group=mid_tt)
rsi_2=rsi(close,rsi_len_2)
//Status
var rsi_status="None"
if (rsi_1>rsi_ovs and rsi_1<rsi_ovb) and (rsi_2[1]<rsi_mid_bot or rsi_2[1]>rsi_mid_top)
    rsi_status:="Normal"
else
    rsi_status:="None"
//Signal
BuySignal= 
       rsi_filter=="Disable"?
       dir_col[1]!=up_col
       and
       dir_col[0]==up_col
       :
       dir_col[1]!=up_col
       and
       dir_col[0]==up_col
       and
       rsi_status=="Normal"
       
SellSignal= 
       rsi_filter=="Disable"?
       dir_col[1]!=dn_col
       and
       dir_col[0]==dn_col
       :
       dir_col[1]!=dn_col
       and
       dir_col[0]==dn_col
       and
       rsi_status=="Normal"
       
exit=
       (dir_col[1]!=sw_col
       and
       dir_col[0]==sw_col)
buycol =
       BuySignal?
       up_col: na

sellcol =
       SellSignal?
       dn_col: na

exitcol =
       exit?
       sw_col: na

buy_style=shape.arrowup
sell_style=shape.arrowdown
exit_style=shape.square
plotshape(BuySignal?0:na,title="Buy",text="Buy",style=buy_style,color=buycol,location=location.absolute)
plotshape(SellSignal?0:na,title="Sell",text="Sell",style=sell_style,color=sellcol,location=location.absolute)
plotshape(exit?0:na,title="Exit",text="Exit",style=exit_style,color=exitcol,location=location.absolute)

filter=
       rsi_filter=="Enable"?
       dir_col[1]!=dir_col 
       and BuySignal==false 
       and SellSignal==false 
       and exit==false:
       na
filter_style=shape.xcross
filtercol=
       filter?
       dir_col:na
plotshape(filter?0:na,title="Filter",text="Filter",style=filter_style,color=filtercol,location=location.absolute)

//+++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++ Backtesting ++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++
strategy.entry("Long", strategy.long, when=BuySignal)
strategy.close("Long", when=exit or filter)
strategy.entry("Short", strategy.short, when=SellSignal)
strategy.close("Short", when=exit or filter)
//EOF