Estrategia cuantitativa de línea discontinua


Fecha de creación: 2023-11-21 13:43:24 Última modificación: 2023-12-01 15:01:07
Copiar: 1 Número de Visitas: 622
1
Seguir
1617
Seguidores

Estrategia cuantitativa de línea discontinua

Descripción general

El objetivo de esta estrategia es probar si diferentes variables de entrada, como el color de la línea K, el volumen de intercambio y el método aleatorio, pueden predecir el cambio de precio en forma de ondas positivas. La estrategia convierte estas variables en la forma de ondas positivas para tomar decisiones de compra o venta cuando el pico o el valle de la onda alcanzan una cantidad de veces.

Principio de estrategia

La estrategia se divide en tres partes, la primera en la detección de los cambios de color de las líneas K. Cuando se producen varias líneas K de un mismo color, las ondas sonoras se convierten. La segunda en la detección de si el volumen de transacción es superior o inferior a la media, y las ondas se convierten cuando se rompe la media.

El código controla el funcionamiento de las ondas siguiendo la dirección actual de las tres ondas, el pico de la onda y el estado de la línea K superior. Cuando el pico de la onda alcanza el parámetro establecido, cambia la dirección de funcionamiento. Simula el funcionamiento de las ondas de resonancia a través de este ciclo.

Análisis de las ventajas

Esta teoría de la onda de la sinfonía parece ser muy razonable, y las ondas simuladas también tienen una cierta relación con el mercado real. Sin embargo, mediante la prueba de esta estrategia, se puede descubrir que en realidad son resultados aleatorios.

Por lo tanto, una ventaja de esta estrategia es refutar la idea errónea de que el mercado de las monedas puede predecir las monedas. Las variables en el mercado realmente influyen en los precios, pero son impredecibles y las decisiones aleatorias pueden obtener resultados similares.

Análisis de riesgos

El mayor riesgo de esta estrategia es la dificultad de determinar la ganancia y la pérdida en operaciones aleatorias. El resultado de los diferentes parámetros es difícil de predecir y no se puede determinar de antemano si es rentable.

Además, la teoría de la predicción de la onda de la sinfonía es errónea en sí misma. Los cambios en el mercado son demasiado complejos para ser simulados con una simple simulación periódica. Por lo tanto, la estrategia no puede aplicarse realmente a las operaciones en el mercado real.

Para reducir el riesgo, se necesita un análisis adicional de los resultados aleatorios para determinar el rango de parámetros; o en combinación con otros métodos de análisis para validar las señales de negociación.

Dirección de optimización

Esta estrategia puede ser optimizada en las siguientes direcciones:

  1. Añadir más variables para convertirlas en ondas y ampliar el espacio de muestra
  2. Combinación de las tres ondas actuales para encontrar la combinación de recorrido óptima
  3. Configuración de un modo de detener el daño, como el detener el porcentaje de pérdidas
  4. Optimización de la lógica de entrada y salida, para realizar retroalimentación y encontrar los mejores parámetros

Resumir

Esta estrategia muestra la naturaleza de la imprevisibilidad del mercado mediante la prueba de diferentes ondas de resonancia. Al mismo tiempo, refuta la teoría errónea de que se puede predecir con un ciclo de ondas.

En el siguiente paso, se puede mejorar la disponibilidad de la estrategia en el terreno mediante la adición de variables, la combinación de ondas, la configuración de parámetros de stop loss y optimización. Pero la clave es entender que los cambios en el mercado son complejos y cambiantes y no son fáciles de predecir. Lo que queremos hacer es reducir el riesgo aleatorio, no predecir el mercado.

Código Fuente de la Estrategia
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 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/
// © Gentleman-Goat

//@version=5
strategy("Sine Wave Theory",overlay=false, precision = 2, initial_capital = 1000,shorttitle = "SINE_W_T")

var bar_change_wave_direction = input.int(defval=1,title="Starting Wave Direction",group="Bar Change")
bar_change_sine_wave_number = input.int(defval=28,title="Sine Wave #",group="Bar Change")
bar_change_sine_wave_res = input.timeframe(defval="D",title="Resolution",group="Bar Change")
bar_change_trade = input.bool(defval=true,title="Trade",group="Bar Change")

var volume_wave_direction = input.int(defval=1,title="Starting Wave Direction",group="Volume")
avg_volume_length = input.int(7,title="Lookback Length",group="Volume")
volume_sine_wave_number = input.int(defval=28,title="Sine Wave #",group="Volume")
volume_sine_wave_res = input.timeframe(defval="D",title="Resolution",group="Volume")
volume_trade = input.bool(defval=false,title="Trade",group="Volume")

var coin_flip_wave_direction = input.int(defval=1,title="Starting Wave Direction",group="Coin Flip")
coin_flip_sine_wave_number = input.int(defval=28,title="Sine Wave #",group="Coin Flip")
coin_flip_seed = input.int(defval=1,title="Seed #",group="Coin Flip")
coin_flip_trade = input.bool(defval=false,title="Trade",group="Coin Flip")

avg_volume = ta.sma(volume,avg_volume_length)

//Green or Red Candle
bar_color = close>open ? color.green : color.red
bar_color_time_adj = request.security(syminfo.tickerid, bar_change_sine_wave_res, bar_color)

//Above or Below Average
volume_state = (volume>avg_volume) ? color.blue : color.purple
volume_state_time_adj = request.security(syminfo.tickerid, volume_sine_wave_res, volume_state)
 
//Coinflip
coin_flip = math.random(0,100,coin_flip_seed)>=50 ? color.teal : color.yellow

var bar_change_wave_count = 0
var volume_wave_count = 0
var coin_flip_wave_count = 0

//Wave Counters
if(volume_state_time_adj[1] != volume_state_time_adj)
    volume_wave_count := volume_wave_count + volume_wave_direction

if(bar_color_time_adj[1] != bar_color_time_adj)
    bar_change_wave_count := bar_change_wave_count + bar_change_wave_direction

if(coin_flip[1] != coin_flip)
    coin_flip_wave_count := coin_flip_wave_count + coin_flip_wave_direction

//Direction changers
if(math.abs(bar_change_wave_count) == bar_change_sine_wave_number and bar_color_time_adj[1] != bar_color_time_adj)
    bar_change_wave_direction := bar_change_wave_direction * -1

if(math.abs(volume_wave_count) == volume_sine_wave_number and volume_state_time_adj[1] != volume_state_time_adj)
    volume_wave_direction := volume_wave_direction * -1

if(math.abs(coin_flip_wave_count) == coin_flip_sine_wave_number and coin_flip[1] != coin_flip)
    coin_flip_wave_direction := coin_flip_wave_direction * -1

//Entry positions
if(bar_change_wave_count==bar_change_sine_wave_number and bar_change_trade==true)
    strategy.entry(id="short",direction=strategy.short)
if(bar_change_wave_count==bar_change_sine_wave_number*-1 and bar_change_trade==true)
    strategy.entry(id="long",direction=strategy.long)

if(volume_wave_count==volume_sine_wave_number and volume_trade==true)
    strategy.entry(id="short-volume",direction=strategy.short)
if(volume_wave_count==volume_sine_wave_number*-1 and volume_trade==true)
    strategy.entry(id="long-volume",direction=strategy.long)

if(coin_flip_wave_count==coin_flip_sine_wave_number and coin_flip_trade==true)
    strategy.entry(id="short-coinflip",direction=strategy.short)
if(coin_flip_wave_count==coin_flip_sine_wave_number*-1 and coin_flip_trade==true)
    strategy.entry(id="long-coinflip",direction=strategy.long)

hline(0, title='Center', color=color.white, linestyle=hline.style_dashed, linewidth=1)
plot(bar_change_wave_count,title="Bar Change", color=bar_color, linewidth=2)
plot(volume_wave_count,title="Volume Average Change", color=volume_state, linewidth=2)
plot(coin_flip_wave_count,title="Coin Flip Change", color=coin_flip, linewidth=2)