
Esta estrategia utiliza una media móvil como señal de negociación, combinada con un índice de stop-loss personalizado por el usuario, para lograr una estrategia de stop-loss de tipo stop-loss completamente dirigida por indicadores. La estrategia puede iniciar, detener y detenerse automáticamente, sin necesidad de intervención humana, y es adecuada para el comercio automático.
La lógica central de esta estrategia es la siguiente:
Utiliza el SMA de 3 ciclos como señal de negociación, haciendo más cuando el SMA está encima de 0 y vacío cuando el SMA está debajo de 0;
Una vez ingresado, el usuario puede personalizar el Stop Loss Ratio y el Stop Stop Ratio.
Establecer automáticamente una línea de stop-loss en función de la proporción entre el precio de entrada y la configuración del usuario;
El precio de entrada y la proporción de paradas establecidas por el usuario, para establecer automáticamente las líneas de paradas;
Se detiene automáticamente cuando el precio toca la línea de parada; se detiene automáticamente cuando el precio toca la línea de parada;
La cancelación automática de la orden de suspensión de pérdidas después de la liquidación de la posición.
Concretamente, la estrategia calcula el promedio móvil de 3 períodos a través de la función sma y asigna su valor a la variable ma.
Luego se calcula la línea de entrada múltiple long, cuyo valor es ma más el porcentaje de ma en lo. Lo es un parámetro ajustable por el usuario, que representa el desplazamiento de la línea de entrada cuando se hace más.
Cuando ma se pone encima de 0, se inicia la operación de venta, la cual se inicia a través de la función strategy.entry, cuyo precio de entrada es long。
Al mismo tiempo, configure el precio de parada y el precio de parada. El precio de parada es el precio de entrada menos el sl% del precio de entrada. El sl es un parámetro ajustable por el usuario, que representa el porcentaje de parada. El precio de parada es el precio de entrada más el tp% del precio de entrada.
La función strategy.entry configura las órdenes de stop loss y las órdenes de stop stop. Cuando el precio toca la línea de stop loss, se detiene automáticamente; cuando el precio toca la línea de stop stop, se detiene automáticamente.
Después de la liquidación de la posición, la orden de parada de pérdidas se cancela automáticamente mediante la función strategy.cancel.
La estrategia tiene las siguientes ventajas:
El nivel de automatización es alto, no requiere intervención humana y es adecuado para operaciones automáticas.
El sistema de control de riesgo tiene una proporción de parada de pérdidas personalizada.
Las señales de trading provienen de los indicadores para evitar falsos breaks.
El problema es que el sistema de control de la velocidad de la máquina no está funcionando correctamente.
La lógica de la estrategia es clara, simple y fácil de entender.
La estrategia también tiene sus riesgos:
La solución es optimizar los parámetros para asegurar que el indicador sea estable y fiable.
La configuración de los parámetros de stop loss no es razonable y puede ser demasiado flexible o demasiado radical. La solución es ajustar los parámetros de stop loss para diferentes mercados.
La brecha de entrada es fácil de encajar. La solución es la combinación de tendencias, indicadores de precio y otras señales de entrada de filtro.
El retiro puede ser mayor. La solución es reducir los estándares de posición, o seguir el stop loss.
Esta estrategia puede ser optimizada en los siguientes aspectos:
Optimizar los parámetros de las medias móviles para que sean más fiables.
Optimización de las condiciones de entrada para evitar falsas brechas y confirmación de precios adicionales;
Optimización de las estrategias de stop loss, que pueden utilizar stop loss dinámico, stop loss de seguimiento, etc.
Optimizar la gestión de fondos, ajustar los criterios de posicionamiento y reducir el riesgo individual;
Optimizar el momento de entrada del filtro, combinado con indicadores como tendencia, soporte de resistencia.
Unirse a Pyramiding para una estrategia de acumulación de reservas para mejorar la rentabilidad.
Optimización de parámetros para variedades específicas.
Esta estrategia es una estrategia de stop loss de tipo indicador-driven, con ventajas de automatización de la negociación, control de riesgo, adecuado para el comercio de la cantidad. Pero también hay algunas direcciones que requieren optimización, como la optimización de los parámetros de indicadores, filtración de entrada, estrategia de stop loss, gestión de fondos, etc. En general, esta estrategia ofrece un marco técnico de comercio simple y fiable, sobre la base de la cual se puede ampliar y optimizar para que sea una estrategia más fuerte.
/*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])