La estrategia de la línea de plata de impulso

El autor:¿ Qué pasa?, Fecha: 2024-02-01 15:01:55
Las etiquetas:

img

Resumen general

Esta estrategia es una estrategia de ruptura basada en el indicador de impulso de precios MACD y la media móvil, adecuada para un marco de tiempo de 1 hora en plata (XAG/USD, XAG/EUR).

Estrategia lógica

Cuando el histograma MACD cambia de negativo a positivo y continuamente rompe la línea de señal, indica que la tendencia alcista a corto plazo es más fuerte. Al mismo tiempo, si el precio de cierre rompe la tendencia al alza del promedio móvil, genera una señal larga. Del mismo modo, cuando el histograma MACD cambia de positivo a negativo y cae por debajo de la línea de señal, y el precio de cierre cae por debajo de la tendencia a la baja del promedio móvil, genera una señal corta.

En concreto, las condiciones para determinar la señal de entrada larga de esta estrategia son las siguientes:

  1. El histograma MACD es positivo
  2. La barra del histograma actual es más alta que la anterior
  3. El precio de cierre es superior al promedio móvil
  4. El precio de cierre es más alto que el precio más alto de las últimas 3 líneas K.

Las condiciones para determinar la señal de entrada corta son exactamente lo contrario.

Una vez que la posición se abre, se cierra incondicionalmente cuando se cierra la siguiente línea K. Esta estrategia no establece puntos de toma de ganancias o de parada de pérdidas, con el objetivo de capturar el punto de partida de los brotes de tendencia.

Análisis de ventajas

Esta estrategia combina los indicadores de precio e impulso para determinar el momento de las inversiones de tendencia con mayor precisión con una mayor tasa de ganancia.

Ningún establecimiento de la toma de ganancias y la parada de pérdidas satisface las necesidades de los inversores que buscan altos rendimientos.

Análisis de riesgos

La falta de stop loss puede llevar fácilmente a la fijación de pérdidas y un mayor riesgo de pérdida.

La forma de cierre incondicional en la siguiente línea K dificulta la captura continua de las ganancias de tendencia.

Sugerencias para optimizar

Es posible considerar la adición de estrategias de stop-loss apropiadas basadas en compras de ruptura de alto beneficio para reducir el riesgo de pérdida.

También es posible combinar técnicas avanzadas para volver a entrar en posiciones después del cierre, tratando de capturar continuamente las ganancias de tendencia.

Resumen de las actividades

En general, esta estrategia pertenece a una estrategia agresiva de alto riesgo. Debido a que no hay un ajuste de stop loss, los inversores necesitan asumir un mayor riesgo de pérdida. Pero si la inversión es exitosa, la oportunidad de abrir posiciones con lotes completos en primer lugar también puede resultar en altos rendimientos. Es adecuado para inversores agresivos con una resistencia psicológica relativamente fuerte.


/*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")


Más.