La estrategia de captura de tendencias es una estrategia que detecta las formaciones de tendencia utilizando su propio método único y abre posiciones en la dirección de la tendencia. Cálcula un valor porcentual llamado
La estrategia de captura de tendencias utiliza un método único para detectar formaciones de tendencia y abrir posiciones en la dirección de la tendencia. Cálcula el valor límite para determinar la fuerza de la tendencia y utiliza el cruce de la media móvil para determinar el final de la tendencia. La estrategia controla el riesgo cerrando una parte de la posición y moviendo el nivel de stop loss después de abrir una posición. Sin embargo, la estrategia puede enfrentar ciertos riesgos al abrir posiciones al comienzo de la tendencia, el uso de niveles fijos de take profit y stop loss puede no ser lo suficientemente flexible, y solo el uso de la media móvil para determinar tendencias puede perder algunas oportunidades. En el futuro, podemos considerar la introducción de otros indicadores, ajustar dinámicamente los niveles de take profit y stop loss y abrir posiciones solo después de que se confirme la tendencia para optimizar la estrategia.
/*backtest start: 2023-04-20 00:00:00 end: 2024-04-25 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/ // © faytterro //@version=5 strategy("Trend Catcher Strategy", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) len = input.int(10) tp = input.float(2.5, step = 0.1) sl = input.float(2.5, step = 0.1) malen = input.int(5) limit = input.int(50) ma = ta.sma(close,malen) sum = 0.0 for i = 0 to len-1 sum := sum + high[i]-low[i] frs = 100*(ta.highest(high,len)-ta.lowest(low,len))/sum //hline(50) //plot(frs, color = color.white) l = ta.crossover(frs,limit) and ma>ma[1] s = ta.crossover(frs,limit) and ma<ma[1] cl = ma<ma[1] cs = ma>ma[1] qty_balance=input.int(50, maxval = 100) if (l) strategy.entry("My Long Entry Id", strategy.long) strategy.exit("exit long", "My Long Entry Id", qty_percent = qty_balance, limit = close*(100+tp)/100, stop = close*(100-sl)/100) if (s) strategy.entry("My Short Entry Id", strategy.short) strategy.exit("exit short", "My Short Entry Id", qty_percent = qty_balance, limit = close*(100-tp)/100, stop = close*(100+sl)/100) if (cl) strategy.close("My Long Entry Id") if (cs) strategy.close("My Short Entry Id") l:= l and strategy.opentrades<1 s:= s and strategy.opentrades<1 transp = strategy.opentrades>0? 0 : 100 pma=plot(ma, color = ma<ma[1]? color.rgb(255, 82, 82, transp) : color.rgb(76, 175, 79, transp)) price = open/2+close/2 pprice = plot(price, display = display.none) fill(pma,pprice, color = ma<ma[1]? color.rgb(255, 82, 82, transp+90) : color.rgb(76, 175, 79, transp+90)) spm=plot(ta.valuewhen(s,close,0), color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.white : color.rgb(1,1,1,100), offset=1) lpm=plot(ta.valuewhen(l,close,0), color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.white : color.rgb(1,1,1,100), offset=1) ltp=plot(ta.valuewhen(l,close,0)*(100+ta.valuewhen(l,tp,0))/100, color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.green : color.rgb(1,1,1,100), offset=1) lsl=plot(ta.valuewhen(l,close,0)*(100-ta.valuewhen(l,sl,0))/100, color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.red : color.rgb(1,1,1,100), offset=1) stp=plot(ta.valuewhen(s,close,0)*(100-ta.valuewhen(s,tp,0))/100, color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.green : color.rgb(1,1,1,100), offset=1) ssl=plot(ta.valuewhen(s,close,0)*(100+ta.valuewhen(s,sl,0))/100, color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.red : color.rgb(1,1,1,100), offset=1) fill(stp,spm, color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.rgb(76, 175, 79, 90) : color.rgb(1,1,1,100)) fill(ssl,spm, color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.rgb(255, 82, 82, 90) : color.rgb(1,1,1,100)) fill(ltp,lpm, color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.rgb(76, 175, 79, 90) : color.rgb(1,1,1,100)) fill(lsl,lpm, color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.rgb(255, 82, 82, 90) : color.rgb(1,1,1,100))