Una estrategia de Stop Loss y Take Profit basada en indicadores

El autor:¿ Qué pasa?, Fecha: 2023-11-10 11:28:06
Las etiquetas:

img

Resumen general

Esta estrategia utiliza un promedio móvil como señales de negociación y lo combina con los índices de stop loss y take profit definidos por el usuario para implementar una estrategia de stop loss y take profit completa impulsada por indicadores.

Estrategia lógica

La lógica central de esta estrategia es la siguiente:

  1. Utilice la SMA de 3 períodos como señales de negociación, vaya largo cuando la SMA cruce por encima de 0, y vaya corto cuando la SMA cruce por debajo de 0.

  2. Después de ingresar a una operación, los usuarios pueden personalizar el stop loss y tomar ratios de ganancia.

  3. Basado en el precio de entrada y la relación de stop loss establecida por el usuario, se establece automáticamente la línea de stop loss.

  4. Basado en el precio de entrada y la relación de ganancias establecidas por el usuario, se establece automáticamente la línea de ganancias.

  5. Cuando el precio toca la línea de stop loss, se detiene automáticamente.

  6. Después de cerrar las posiciones, cancele automáticamente las órdenes de stop loss y tome ganancias.

Específicamente, la estrategia calcula la SMA de 3 períodos utilizando la función sma y la asigna a la variable ma.

Luego calcula la longitud de la línea de entrada larga, que es ma más ma% de lo. lo es un parámetro ajustable por el usuario para el desplazamiento de la línea de entrada larga.

Cuando ma cruza por encima de 0, indica una entrada larga.

Al mismo tiempo, se establecen los precios de stop loss y take profit. El precio de stop loss es el precio de entrada menos el precio de entrada% de sl. sl es el parámetro de relación de stop loss ajustable por el usuario. El precio de take profit es el precio de entrada más el precio de entrada% de tp. tp es el parámetro de relación de take profit ajustable por el usuario.

Cuando el precio toca la línea de stop loss, se detendrá automáticamente. Cuando el precio toca la línea de profit, se obtendrá beneficio automáticamente.

Después de cerrar posiciones, las órdenes de stop loss y take profit se cancelarán automáticamente mediante la función strategy.cancel.

Ventajas

Las ventajas de esta estrategia:

  1. Alto grado de automatización, sin necesidad de interferencia manual, adecuado para el comercio algorítmico.

  2. Las tasas de stop loss y take profit personalizadas controlan el riesgo.

  3. Las señales comerciales provienen del indicador, evitando una falsa ruptura.

  4. Visualizar el stop loss y tomar ganancias, intuitivo.

  5. Una lógica estratégica simple y clara, fácil de entender e implementar.

Riesgos y soluciones

También hay algunos riesgos con esta estrategia:

  1. La solución consiste en optimizar los parámetros para garantizar un indicador fiable.

  2. La solución es ajustar las proporciones para diferentes mercados.

  3. La solución es filtrar las señales de entrada con tendencia, volumen, etc.

  4. La solución es reducir el tamaño de la posición o usar un stop loss de trailing.

Direcciones de optimización

Algunas direcciones para optimizar la estrategia:

  1. Optimizar los parámetros de la media móvil para la confiabilidad.

  2. Optimizar las condiciones de entrada para evitar una falsa ruptura, agregar confirmación de volumen, etc.

  3. Optimizar el stop loss y obtener ganancias, utilizar el stop loss dinámico o posterior, etc.

  4. Optimizar la gestión del riesgo, ajustar el tamaño de las posiciones, reducir el riesgo de una sola operación.

  5. Optimizar el tiempo de entrada, combinar con tendencia, soporte/resistencia, etc.

  6. Agregue la pirámide para obtener ganancias compuestas.

  7. Optimización de parámetros para productos específicos.

Conclusión

Esta estrategia proporciona un marco técnico simple y confiable para el stop loss impulsado por indicadores y obtener ganancias con ventajas como la automatización y el control de riesgos. Es adecuado para el comercio algorítmico. También hay muchos aspectos que se pueden mejorar y optimizar, como parámetros de indicadores, filtros de entrada, estrategias de stop loss / take profit, gestión de riesgos, etc. Con nuevas extensiones y optimizaciones, puede convertirse en una estrategia comercial aún más poderosa.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-11-09 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("example for panel signals", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//https://www.tradingview.com/script/m2a04xmb-noro-s-shiftma-tp-sl-strategy/
//Settings
lo = input(-5.0, title = "Long-line, %")
tp = input(5.0, title = "Take-profit")
sl = input(2.0, title = "Stop-loss")

//SMA
ma = sma(ohlc4, 3)
long = ma + ((ma / 100) * lo)

//Orders
avg = strategy.position_avg_price
if ma > 0
    strategy.entry("Long", strategy.long, limit = long)
    strategy.entry("Take", strategy.short, 0, limit = avg + ((avg / 100) * tp))
    strategy.entry("Stop", strategy.short, 0, stop = avg - ((avg / 100) * sl))
    
//Cancel order
if strategy.position_size == 0
    strategy.cancel("Take")
    strategy.cancel("Stop")

//Lines
plot(long, offset = 1, color = color.black, transp = 0)
take = avg != 0 ? avg + ((avg / 100) * tp) : long + ((long / 100) * tp)
stop = avg != 0 ? avg - ((avg / 100) * sl) : long - ((long / 100) * sl)
takelinecolor = avg == avg[1] and avg != 0 ? color.lime : na
stoplinecolor = avg == avg[1] and avg != 0 ? color.red : na
plot(take, offset = 1, color = takelinecolor, linewidth = 3, transp = 0)
plot(stop, offset = 1, color = stoplinecolor, linewidth = 3, transp = 0)
//
disp_panels = input(true, title="Display info panels?")
h=high
info_label_off = input(20, title="Info panel offset")
info_label_size = input(size.large, options=[size.tiny, size.small, size.normal, size.large, size.huge], title="Info panel label size")
info_panel_x = timenow + round(change(time)*info_label_off)
info_panel_y = h

info_title= "-=-=-=-=- Info Panel -=-=-=-=-"
info_div = "\n\n------------------------------"
a = "\n\ Long : " + tostring(long)
b = "\n\ Stop loss : " + tostring(stop)
c = "\n\ TP : " + tostring(take)
// info_text = a+c+b
// info_panel = disp_panels ? label.new(x=info_panel_x, y=info_panel_y, text=info_text, xloc=xloc.bar_time, yloc=yloc.price, color=color.yellow, style=label.style_labelup, textcolor=color.black, size=info_label_size) : na
// label.delete(info_panel[1])




Más.