Estrategia de línea de plata con ruptura de impulso


Fecha de creación: 2024-02-01 15:01:55 Última modificación: 2024-02-01 15:01:55
Copiar: 2 Número de Visitas: 622
1
Seguir
1617
Seguidores

Estrategia de línea de plata con ruptura de impulso

Descripción general

La estrategia es una estrategia de compra-venta de ruptura basada en el indicador de movimiento de precios MACD y la línea media, que se aplica a un período de tiempo de 1 hora para la plata (XAG/USD, XAG/EUR). El punto clave es el momento en que se combina la tendencia de precios y el indicador de movimiento para determinar la reversión de la tendencia.

Principio de estrategia

Cuando la columna MACD se corrige negativamente y sube continuamente para romper la línea de señal, indica una fuerte tendencia alcista a corto plazo; al mismo tiempo, si el precio de cierre se rompe la línea media de la tendencia alcista, se produce una señal de múltiples cabezas. De manera similar, la columna MACD se corrige negativamente y cae por encima de la línea de señal, y cuando el precio de cierre cae por encima de la línea media de la tendencia descendente, se produce una señal de cabeza vacía.

En concreto, la estrategia determina que las señales de entrada para las posiciones largas son:

  1. El MACD es positivo
  2. La columna actual es más alta que la anterior
  3. Cierre por encima de la media
  4. El precio de cierre fue más alto que el máximo de casi 3 líneas K.

En el caso de las señales de entrada a corto plazo, las condiciones son exactamente lo contrario.

Una vez abierta la posición, la estrategia no establece un punto de parada para detener la pérdida, sino que busca el punto de inicio para capturar la explosión de la tendencia.

Análisis de las ventajas

Esta estrategia, combinada con indicadores de precio y dinámica, permite determinar con mayor precisión el momento en que la tendencia se invierte, con una mayor probabilidad de éxito. Una forma incondicional de cerrar una posición en la línea K puede evitar de manera efectiva la pérdida de nuevo después de la reversión.

No se establecen paradas de pérdidas, se abren todas las posiciones para satisfacer las necesidades de los inversores que buscan altos rendimientos.

Análisis de riesgos

La configuración sin pérdidas es fácil de encerrar y el riesgo de pérdidas es alto. Si la señal de retorno falla, no se puede detener la pérdida a tiempo y se puede enfrentar una gran pérdida de fondos.

Es difícil seguir capturando ganancias de una tendencia si una línea K se cierra incondicionalmente y se cierra de la misma manera.

Dirección de optimización

Se puede considerar la adición de una estrategia de stop loss adecuada para reducir el riesgo de pérdidas sobre la base de compras de ruptura con una mayor probabilidad de victoria.

También se puede combinar técnicas avanzadas para establecer mecanismos de reapertura de posiciones después de la liquidación de la posición, para tratar de capturar continuamente las ganancias de la tendencia.

Resumir

La estrategia en general es una estrategia de alto riesgo de tipo agresivo y activo, que requiere que los inversores asuman un mayor riesgo de pérdidas debido a la configuración sin pérdidas. Pero, en comparación, la apertura total de la posición en el primer momento después de una inversión exitosa también puede obtener un alto rendimiento.

Código Fuente de la Estrategia
/*backtest
start: 2023-01-31 00:00:00
end: 2024-01-13 05:20: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/
// © SoftKill21

//@version=4
strategy("XAG strategy 1h",overlay=true)
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
var gica = 0
var marcel = gica+2
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
len = input(10, minval=1, title="Length")
src = input(close, title="Source")
out = sma(src, len)

//distanta = input(1.004)

fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)
// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00
// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

option1=input(true)
option2=input(true)

long2 =  close > open  and time_cond and close > out and hist > 0 and hist > hist[1] 
short2 =  close < open  and time_cond and close < out and hist < 0 and hist < hist[1] 

long1 = (close > open ) and time_cond and close > out and hist > 0 and  hist > hist[1] and high > high[1] and high[1] > high[2] and close > high[1] and close > high[2] and close > high[3] 
short1 = (close < open)  and time_cond and close < out and hist < 0 and  hist < hist[1] and low < low[1] and low[1] < low[2]  and close < low[1] and close < low[2] and close < low[3] 

if(option1)
    strategy.entry("long",1,when= short1)
    strategy.entry("short",0,when=long1)
    strategy.close_all()

if(option2)

    strategy.entry("long",1,when= short2)
    strategy.entry("short",0,when=long2)
    strategy.close_all()

// if(strategy.openprofit < 0)
//     strategy.close_all()
// if(strategy.openprofit>0)
//     strategy.close("long",when = close < open )
//     strategy.close("short",when = close > open)
//     strategy.close("long",when= close < open)
//     strategy.close("short",when= close> open)


// tp = input(0.0003)
// sl = input(0.005)
// strategy.exit("closelong", "long" , profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick, alert_message = "closelong")
// strategy.exit("closeshort", "short" , profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick, alert_message = "closeshort")