Esta estrategia utiliza bandas de Bollinger, EMA y patrones de velas para el comercio de apuestas de doble línea, que pertenecen a estrategias comerciales a corto plazo.
La estrategia consta de las siguientes partes:
Las bandas de Bollinger Generar rieles superiores e inferiores basados en el precio de cierre y la desviación estándar.
La EMA Calcular la media móvil exponencial de 21 días y generar señales comerciales cuando el precio cruza la EMA.
Patrones de candeleros Identificar los puntos de reversión del precio, como la cubierta de nubes oscuras inferior y el patrón de perforación superior para activar las operaciones.
Juegos de apuestas de doble línea Ir largo y corto simultáneamente basado en señales de Bollinger, EMA cruce y patrones de candlestick.
La lógica es:
Utilice bandas de Bollinger para identificar puntos de reversión potenciales, sea corto en el tren superior y largo en el tren inferior. Calcule la EMA de 21 días y sea largo en la cruz dorada, sea corto en la cruz de la muerte. También use patrones de velas para identificar reversiones, sea largo en la nube oscura inferior y corto en la perforación superior. Combine las tres señales para tomar decisiones comerciales finales de doble dirección.
La estrategia integra múltiples señales de confirmación para mejorar la eficiencia de las decisiones comerciales.
Las principales ventajas de esta estrategia son las siguientes:
El uso de Bollinger, EMA y candlestick juntos mejora la precisión mediante la validación de señales. Esto ayuda a evitar señales falsas y operaciones erróneas.
Las señales combinadas identifican rápidamente los puntos de reversión potenciales para la negociación oportuna antes de que las reversiones se extiendan.
Mantener tanto posiciones largas como cortas se beneficia de grandes movimientos en ambas direcciones, lo que reduce los riesgos en mercados unidireccionales.
Los indicadores Bollinger y EMA de corto plazo permiten captar movimientos a corto plazo, adecuados para operaciones frecuentes y para responder a fluctuaciones de alta frecuencia.
El código completo de la estrategia hace que sea directamente utilizable para el comercio en vivo.
Los riesgos potenciales son:
Las señales de Bollinger, EMA y candlestick pueden causar pérdidas consecutivas. Ajuste los parámetros para garantizar una pérdida de parada razonable.
El mantenimiento tanto largo como corto puede amplificar las pérdidas. Se requiere un capital suficiente para soportar los riesgos. Se recomienda un tamaño de posición más bajo.
El comercio frecuente a corto plazo requiere un seguimiento cercano del mercado.
Bollinger y la EMA tienen un espacio de optimización relativamente pequeño.
Parte de la estrategia se basa en señales de candelero que a veces pueden no ser claras.
La estrategia puede mejorarse en los siguientes aspectos:
Añadiendo otros indicadores como KD, el MACD diversifica las fuentes de señal y mejora la precisión de la decisión.
Utilice algoritmos de aprendizaje automático para analizar datos históricos y aumentar o reemplazar algunas señales de indicadores para reducir la intervención manual.
Introduzca un stop profit adaptativo basado en el rendimiento y un stop loss posterior para reducir el riesgo.
Optimizar la asignación de capital, el tamaño de las posiciones y las estrategias de control de riesgos de acuerdo con las condiciones del mercado.
Utilice backtesting y comercio de papel para optimizar repetidamente los parámetros y ayudar a las decisiones comerciales en vivo.
Parametrizar la estrategia basada en los resultados de backtest e incorporar en el sistema de negociación automatizado para la ejecución de manos libres.
Esta estrategia integra señales de Bollinger, EMA y candlestick para validación múltiple. El comercio de doble línea mejora aún más la rentabilidad. Con una respuesta rápida, es adecuado para el comercio frecuente a corto plazo. Una parada de ganancia / pérdida efectiva y la optimización de parámetros pueden mejorar aún más el rendimiento al tiempo que reducen el riesgo. En general, esta estrategia simple y práctica tiene un fuerte valor práctico.
/*backtest start: 2022-09-30 00:00:00 end: 2023-10-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //Design by MrPhu in August,10,2018 strategy("TrumpShipper_Long_Short V26", overlay=true) filterFractals = input(true, title=" Follow Code #Trump On/Off") dt = 0.0001 confidence=(request.security(syminfo.tickerid, 'D', close)-request.security(syminfo.tickerid, 'D', close[1]))/request.security(syminfo.tickerid, 'D', close[1]) prediction = confidence > dt ? true : confidence < -dt ? false : prediction[1] if (prediction) strategy.exit("Close", "Short ") strategy.entry("Long ", strategy.long) if (not prediction) strategy.exit("Close", "Long ") strategy.entry("Short ", strategy.short) ///////////Bollinger Band/////////////// length = 20 crc = close, title="Source" mult = 2.0 basis = sma(crc, length) dev = mult * stdev(crc, length) upper = basis + dev lower = basis - dev spanColor = prediction ? green : red, transp=90 p1 = plot(upper, title="Short", style=line, linewidth=1, color=spanColor) p2 = plot(lower, title="Long", style=line, linewidth=1, color=spanColor) fill(p1, p2, color=spanColor, transp=90, title="Fill") ///////////// Optional_TimeFrame = 'D' M_HIGH = request.security(syminfo.tickerid, Optional_TimeFrame, high) M_OPEN = request.security(syminfo.tickerid, Optional_TimeFrame, open) M_LOW = request.security(syminfo.tickerid, Optional_TimeFrame, low) H_RANGE = M_HIGH-M_OPEN L_RANGE = M_OPEN-M_LOW H_236 = M_HIGH - H_RANGE * 0.236 H_382 = M_HIGH - H_RANGE * 0.382 H_500 = M_HIGH - H_RANGE * 0.500 H_618 = M_HIGH - H_RANGE * 0.618 H_764 = M_HIGH - H_RANGE * 0.764 L_236 = M_LOW + L_RANGE * 0.236 L_382 = M_LOW + L_RANGE * 0.382 L_500 = M_LOW + L_RANGE * 0.500 L_618 = M_LOW + L_RANGE * 0.618 L_764 = M_LOW + L_RANGE * 0.764 pl1=plot(M_HIGH, color=M_HIGH != M_HIGH[1] ?na:black, style=line, linewidth=1, transp=80) pl2=plot(H_236, color=H_236 != H_236[1] ?na:gray, style=line, linewidth=1, transp=80) pl3=plot(H_382, color=H_382 != H_382[1] ?na:black, style=line, linewidth=1, transp=80) pl4=plot(H_500, color=H_500 != H_500[1] ?na:red, style=line, linewidth=1, transp=80) pl5=plot(H_618, color=H_618 != H_618[1] ?na:gray, style=line, linewidth=1, transp=80) pl6=plot(H_764, color=H_764 != H_764[1] ?na:gray, style=line, linewidth=1, transp=80) pl7=plot(M_OPEN, color=M_OPEN != M_OPEN[1] ?na:blue, style=line, linewidth=2) pl8=plot(L_236, color=L_236 != L_236[1] ?na:gray, style=line, linewidth=1, transp=80) pl9=plot(L_382, color=L_382 != L_382[1] ?na:black, style=line, linewidth=1, transp=80) pl10=plot(L_500, color=L_500 != L_500[1] ?na:red, style=line, linewidth=1, transp=80) pl11=plot(L_618, color=L_618 != L_618[1] ?na:black, style=line, linewidth=1, transp=80) pl12=plot(L_764, color=L_764 != L_764[1] ?na:gray, style=line, linewidth=1, transp=80) pl13=plot(M_LOW, color=M_LOW != M_LOW[1] ?na:black, style=line, linewidth=1, transp=80) SHOW_MA = false MA_SRC = hlc3 MA_LENGTH = 21 _MA = ema(MA_SRC, MA_LENGTH) pl14=plot(not SHOW_MA ? na : _MA, color=teal, linewidth=2) SHOW_SIGNALS = true BUYX(_F) => cross(_F, MA_SRC) and rising(_MA, 1) SELX(_F) => cross(_F, MA_SRC) and falling(_MA, 1) SEL_SIGNAL = SELX(H_236) or SELX(H_382) or SELX(H_500) or SELX(H_618) or SELX(H_764) or SELX(L_236) or SELX(L_382) or SELX(L_500) or SELX(L_618) or SELX(H_764) BUY_SIGNAL = BUYX(H_236) or BUYX(H_382) or BUYX(H_500) or BUYX(H_618) or BUYX(H_764) or BUYX(L_236) or BUYX(L_382) or BUYX(L_500) or BUYX(L_618) or BUYX(H_764) //================= Chart 30m =================///// //Jurij h_left = 10 h_right = 10 //barCount = nz(barCount[1]) + 1 //check history and realtime PTZ h_left_low = lowest(h_left) h_left_high = highest(h_left) newlow = low <= h_left_low newhigh = high >= h_left_high central_bar_low = low[h_right + 1] central_bar_high = high[h_right + 1] full_zone_low = lowest(h_left + h_right + 1) full_zone_high = highest(h_left + h_right + 1) central_bar_is_highest = central_bar_high >= full_zone_high central_bar_is_lowest = central_bar_low <= full_zone_low plotchar(central_bar_is_highest ? -1 : 0, offset=-h_right-1 ,color=red, text="Top") plotchar(central_bar_is_lowest ? 1 : 0, offset=-h_right-1 ,location=location.belowbar, color=green, text="Bottom")