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.
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.
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.
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.
Esta estrategia puede optimizarse en los siguientes aspectos:
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))