Estrategia de francotirador universal

El autor:¿ Qué pasa?, Fecha: 2023-12-20 11:04:15
Las etiquetas:

img

Resumen general

Esta estrategia adopta una combinación de múltiples indicadores técnicos para implementar una estrategia de trading a corto plazo versátil. Tiene seguimiento de tendencias, breakout trading, trading de reversión media y otros métodos de trading, que pueden adaptarse a la mayoría de los entornos de mercado. Pertenece a una estrategia a corto plazo muy universal y práctica.

Principio de la estrategia

  1. La estrategia utiliza primero el indicador del canal del cuerpo de la vela, combinado con el canal de precios más alto y más bajo, para determinar la dirección y la fuerza de la tendencia actual.

  2. La combinación de dos indicadores de EMA se utiliza para filtrar las señales falsas.

  3. A continuación, la estrategia utiliza el indicador Hull MA para determinar si el precio actual está sobrecomprado o sobrevendido.

  4. Por último, la estrategia utiliza la función de seguridad para abrir un ciclo superior para determinar la dirección de la tendencia del ciclo grande y generar señales comerciales.

La combinación de múltiples subestrategias permite que la estrategia capte las tendencias de los ciclos intermedios al tiempo que juzga la dirección general de la tendencia basada en ciclos largos, logrando así una estrategia de negociación universal versátil.

Análisis de ventajas

La mayor ventaja de esta estrategia es que combina múltiples indicadores técnicos para el comercio de carteras, que pueden realizar simultáneamente el seguimiento de tendencias, el comercio de reversión media, el comercio de ruptura y otros métodos de negociación, que es muy versátil y se adapta a la mayoría de los entornos de mercado.

En concreto, las principales ventajas de esta estrategia son:

  1. El uso del indicador del canal del cuerpo de la vela para determinar el escape de la entidad puede identificar eficazmente las señales de escape.

  2. El uso de combinaciones de EMA duales para filtrar señales falsas mejora la precisión de la señal.

  3. El uso del indicador Hull MA para determinar las áreas de sobrecompra y sobreventa permite determinar con mayor precisión los puntos de inflexión.

  4. La adopción del cruce de los precios de apertura y cierre de las líneas K de ciclo superior para generar señales puede evitar ser engañado por el ruido.

  5. La combinación de múltiples métodos de negociación hace que la estrategia sea más versátil y universal.

Análisis de riesgos

Aunque la estrategia combina múltiples indicadores para lograr una estrategia de negociación versátil, todavía existen ciertos riesgos en el comercio, principalmente:

  1. El comercio de breakouts es propenso a ser engañado por breakouts falsos y genera señales erróneas.

  2. El comercio de reversión media tiende a causar pérdidas en los mercados de rango.

  3. La capacidad de filtrado de la combinación EMA dual sigue siendo limitada, lo que puede filtrar las señales normales.

  4. El indicador MA del casco todavía carece de precisión en las curvas de ajuste.

En respuesta a los riesgos anteriores, se pueden realizar optimizaciones en los siguientes aspectos:

  1. Utilice indicadores más estables para ayudar a juzgar y evitar errores.

  2. Aumentar las estrategias de stop loss para controlar las pérdidas individuales.

  3. Ajuste los parámetros de la EMA dual para encontrar la combinación óptima.

  4. Trate de integrar más indicadores para determinar las condiciones de sobrecompra y sobreventa.

Direcciones de optimización

Según el análisis anterior, la estrategia puede optimizarse principalmente en las siguientes direcciones:

  1. Utilice combinaciones de indicadores más convencionales y estables como juicio auxiliar, como líneas de Kalman, bandas de Bollinger, etc.

  2. Aumentar las estrategias de stop loss para controlar estrictamente la pérdida única.

  3. Optimización de parámetros para encontrar la combinación óptima de parámetros.

  4. Aumentar el juicio del modelo de aprendizaje automático para utilizar la IA para determinar las áreas de sobrecompra y sobreventa.

  5. Aumentar el juicio lógico adaptativo para ajustar dinámicamente los métodos de estrategia basados en diferentes entornos de mercado.

Resumen de las actividades

La estrategia combina múltiples indicadores para el comercio de cartera, logrando la integración orgánica de múltiples métodos de negociación como el seguimiento de tendencias, el comercio de ruptura y el comercio de reversión media. Es una estrategia de negociación a corto plazo muy versátil y universal. La mayor ventaja de esta estrategia es su amplia aplicabilidad a la mayoría de los entornos de mercado. Pertenece a una idea de estrategia más universal. Por supuesto, todavía hay ciertos riesgos en el comercio. Podemos optimizar la estrategia desde la introducción de indicadores más estables, el aumento de stop loss, la optimización de parámetros, la aplicación de aprendizaje automático y muchos otros aspectos para mejorar aún más el rendimiento de la estrategia.


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

//@version=2
//╭╮╱╱╭╮╭╮╱╱╭╮
//┃╰╮╭╯┃┃┃╱╱┃┃
//╰╮┃┃╭┻╯┣╮╭┫╰━┳╮╭┳━━╮
//╱┃╰╯┃╭╮┃┃┃┃╭╮┃┃┃┃━━┫
//╱╰╮╭┫╰╯┃╰╯┃╰╯┃╰╯┣━━┃
//╱╱╰╯╰━━┻━━┻━━┻━━┻━━╯
//╭━━━┳╮╱╱╱╱╱╱╱╭╮
//┃╭━╮┃┃╱╱╱╱╱╱╱┃┃
//┃┃╱╰┫╰━┳━━┳━╮╭━╮╭━━┫┃
//┃┃╱╭┫╭╮┃╭╮┃╭╮┫╭╮┫┃━┫┃
//┃╰━╯┃┃┃┃╭╮┃┃┃┃┃┃┃┃━┫╰╮
//╰━━━┻╯╰┻╯╰┻╯╰┻╯╰┻━━┻━╯
//━╯
// http://www.vdubus.co.uk/
strategy(title='Vdub FX SniperVX3 / Strategy  v3', shorttitle='Vdub_FX_SniperVX3_Strategy', overlay=true, pyramiding=0, initial_capital=1000, currency=currency.USD)

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance Channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:',  defval=10) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
plot_color = direction > 0  ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=1, color = plot_color)

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
plot_color2 = direction2 > 0  ? lime: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=1, color = plot_color2)

//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(8, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(5, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=2, title="Hull MA")

//============ signal Generator ==================================//
Piriod=input('720')
ch1 = request.security(syminfo.tickerid, Piriod, open)
ch2 = request.security(syminfo.tickerid, Piriod, close)
longCondition = crossover(request.security(syminfo.tickerid, Piriod, close),request.security(syminfo.tickerid, Piriod, open))
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, Piriod, close),request.security(syminfo.tickerid, Piriod, open))
if (shortCondition)
    strategy.entry("SELL", strategy.short)

///////////////////////////////////////////////////////////////////////////////////////////

Más.