En la carga de los recursos... Cargando...

Movimiento de la estrategia de stop loss basada en puntos de tomar ganancias y stop loss

El autor:¿ Qué pasa?, Fecha: 2024-01-11 11:04:57
Las etiquetas:

img

Resumen general

La idea central de esta estrategia es utilizar el cruce de EMA y WMA como señales de entrada, e incorporar take profit y stop loss basados en el cálculo de puntos para la negociación.

Principio de la estrategia

Cuando la EMA cruza la WMA hacia arriba, se genera una señal larga. Cuando la EMA cruza la WMA hacia abajo, se genera una señal corta. Después de ingresar posiciones, el precio de entrada se calculará en tiempo real, y se establecerán stop loss y take profit en función de eso. Por ejemplo, si se establece stop loss a 20 puntos y take profit a 100 puntos, entonces el precio específico de stop loss será precio de entrada menos 20 puntos * valor del contrato, y el precio de take profit será precio de entrada más 100 puntos * valor del contrato. Así es como se controlan el riesgo y la ganancia.

Al mismo tiempo, la estrategia también combinará los precios actuales de mercado con los valores históricos de stop loss para ajustar la posición de stop loss móvil y realizar un stop loss de trailing.

Análisis de ventajas

En comparación con los puntos fijos o el porcentaje de stop loss, la mayor ventaja de esta estrategia es que puede controlar los riesgos de manera muy flexible y precisa. Al ajustar el número de puntos, la amplitud de stop loss puede verse directamente afectada. Esto se aplica muy bien a diferentes variedades, y los parámetros pueden ajustarse en función de la frecuencia y amplitud de las fluctuaciones del mercado.

Además, el trailing stop loss también es una función muy práctica. Puede rastrear y ajustar la posición de stop loss en función de los cambios del mercado en tiempo real, al tiempo que garantiza el control de riesgos y maximiza las posibles ganancias.

Análisis de riesgos

Los principales riesgos de esta estrategia provienen de los propios indicadores EMA y WMA. Cuando hay un movimiento violento del mercado, a menudo emiten señales erróneas, lo que conduce fácilmente a un stop loss.

Otro punto de riesgo es que es difícil equilibrar el stop loss y el take profit. Perseguir un mayor take profit a menudo requiere asumir riesgos más grandes, lo que puede llevar fácilmente a un stop loss cuando el mercado gira. Por lo tanto, la configuración del stop loss y el take profit necesita pruebas y evaluaciones cuidadosas.

Direcciones de optimización

Esta estrategia puede optimizarse en los siguientes aspectos:

  1. Prueba de diferentes combinaciones de parámetros de EMA y WMA para encontrar el óptimo;
  2. Pruebe otros indicadores como MACD, KDJ, etc. para reemplazarlos o combinarlos, y vea si se puede mejorar la tasa de ganancia;
  3. Evaluar la rentabilidad del riesgo de diferentes configuraciones de puntos para el stop loss y el take profit y encontrar la configuración óptima;
  4. Estudiar las características de las diferentes variedades y ajustar los parámetros para adaptarse a los diferentes mercados;
  5. Incorporar algoritmos de aprendizaje automático para realizar la optimización dinámica de parámetros.

Conclusión

La idea central de esta estrategia es simple y clara, utilizando EMA y WMA como base, y empleando un mecanismo de stop loss basado en puntos y take profit para controlar el riesgo. La ventaja de la estrategia radica en un control de riesgo preciso y flexible, que se puede ajustar en consecuencia para diferentes mercados. Se pueden hacer optimizaciones de seguimiento en las señales de entrada, selección de parámetros, mecanismo de stop loss, etc., para hacer que la estrategia se adapte mejor a los entornos de mercado complejos y en constante cambio.


/*backtest
start: 2024-01-03 00:00:00
end: 2024-01-10 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// inspiration script from: @ahmad_naquib
// inspiration script link: https://www.tradingview.com/script/tGTV8MkY-Two-Take-Profits-and-Two-Stop-Loss/
// inspiration strategy script name: Two Take Profits and Two Stop Loss


////////////
// Do not use this strategy, it's just an exmaple !! The goal from this script is to show you TP and SL based on PIPS
////////////


//@version=5
strategy('SL & TP based on Pips', "PIP SL & TP", overlay=true, initial_capital=1000)

// MA
ema_period = input(title='EMA period', defval=10)
wma_period = input(title='WMA period', defval=20)
ema = ta.ema(close, ema_period)
wma = ta.wma(close, wma_period)

// Entry Conditions
long = ta.crossover(ema, wma) and nz(strategy.position_size) == 0
short = ta.crossunder(ema, wma) and nz(strategy.position_size) == 0

// Pips Calculation
pip1 = input(20, title = "TP PIP", group = "PIP CALCULATION") * 10 * syminfo.mintick
pip2 = input(20, title = "SL PIP", group = "PIP CALCULATION") * 10 * syminfo.mintick

// Trading parameters 
var bool LS = na
var bool SS = na

var float EP = na // Entry Position
var float TVL = na
var float TVS = na
var float TSL = na
var float TSS = na

var float TP1 = na
//var float TP2 = na
var float SL1 = na
///var float SL2 = na

// SL & TP Values
// there's also SL2 and TP2 in case you want to add them to your script, 
//also you can add a break event in the strategy.entry section.

if short or long and strategy.position_size == 0
    EP := close
    SL1 := EP - pip2 * (short ? -1 : 1)
    //SL2 := EP - pip2 * (short ? -1 : 1)
    
    TP1 := EP + pip1 * (short ? -1 : 1)
    //TP2 := EP + pip1 * 2 * (short ? -1 : 1)


// current trade direction    
LS := long or strategy.position_size > 0
SS := short or strategy.position_size < 0

// adjust trade parameters and trailing stop calculations
TVL := math.max(TP1, open) - pip1[1]
TVS := math.min(TP1, open) + pip1[1]
TSL := open[1] > TSL[1] ? math.max(TVL, TSL[1]) : TVL
TSS := open[1] < TSS[1] ? math.min(TVS, TSS[1]) : TVS

//if LS and high > TP1
    //if open <= TP1
        //SL2 := math.min(EP, TSL)

//if SS and low < TP1
    //if open >= TP1
        //SL2 := math.max(EP, TSS)


// Closing conditions
// and those are a closing conditions in case you want to add them.

//close_long = LS and open < SL2
//close_short = SS and open > SL2

// Buy
if (long and not SS)
    strategy.entry('buy', strategy.long)
strategy.exit('exit1', from_entry='buy', stop=SL1, limit=TP1, qty_percent=100)
//strategy.exit('exit2', from_entry='buy', stop=SL2, limit=TP2)

// Sell
if (short and not LS)
    strategy.entry('sell', strategy.short)
strategy.exit('exit3', from_entry='sell', stop=SL1, limit=TP1, qty_percent=100)
//strategy.exit('exit4', from_entry='sell', stop=SL2, limit=TP2)

// Plots
// those are plots for the lines of The tp and sl. they are really useful, and in the next update I will use a filling option.

a = plot(strategy.position_size > 0 ? SL1 : na, color=color.new(#af0829, 30), linewidth = 2, style=plot.style_linebr)
b = plot(strategy.position_size < 0 ? SL1 : na, color=color.new(#af0829, 30), linewidth = 2, style=plot.style_linebr)

c = plot(strategy.position_size > 0 ? TP1 : na, color=color.new(#2e7e00, 30), linewidth = 2, style=plot.style_linebr)
d = plot(strategy.position_size < 0 ? TP1 : na, color=color.new(#2e7e00, 30), linewidth = 2, style=plot.style_linebr)

g = plot(strategy.position_size >= 0 ? na : EP, color=color.new(#ffffff, 50), style=plot.style_linebr)
h = plot(strategy.position_size <= 0 ? na : EP, color=color.new(#ffffff, 50), style=plot.style_linebr)


// those are plot for the TP2 and SL2, they are optional if you want to add them.

//e = plot(strategy.position_size > 0 ? TP2 : na, color=color.new(#00ced1, 0), style=plot.style_linebr)
//f = plot(strategy.position_size < 0 ? TP2 : na, color=color.new(#00ced1, 0), style=plot.style_linebr)


//those are the plot for the ema and wma strategy for short and long signal. they are not really a good strategy, I just used them as an example
//but you have the option to plot them or not.
// do not use this strategy, it's just an exmaple !! The goal from this script is to show you TP and SL based on PIPS

//plot(ema, title='ema', color=color.new(#fff176, 0))
//plot(wma, title='wma', color=color.new(#00ced1, 0))

Más.