
La estrategia es una estrategia de negociación de ruptura basada en indicadores de canal. Utiliza las características de oscilación de la subida y bajada del canal, haciendo más cuando el precio rompe la subida del canal y se vacía cuando rompe la subida del canal, y pertenece al tipo de estrategia de seguimiento de tendencias.
La estrategia utiliza primero el eje medio de la vía calculada por el SMA, para agregar un valor de parámetro para la vía ascendente y un valor de parámetro para la vía descendente, formando una vía de precios. Luego, se determina si el precio ha roto la vía ascendente y descendente, y se combina con el aumento de la cantidad de transacciones como señal de apertura de posición. Cuando el precio vuelve a entrar en la vía, como señal de posición plana.
En concreto, la lógica de negociación de la estrategia es la siguiente:
Cálculo del eje medio de la vía: SMA (precio de cierre, N)
Línea de la órbita en el canal: eje central + valor de parámetro
Orbital bajo el canal: eje central - valor de parámetro
Cuando se rompe la línea de subida, se hace una entrada adicional si se cumple la condición de que el volumen de transacciones sea mayor que el doble del ciclo anterior.
El retorno a la entrada del canal, con una posición de cabeza plana
Al romper la línea de bajada, se hace una entrada en blanco si se cumple la condición de que el volumen de operaciones sea mayor que el doble del ciclo anterior.
En la entrada de la entrada, la posición de la cabeza vacía.
La estrategia tiene las siguientes ventajas:
El indicador de canal permite un seguimiento eficaz de las tendencias de los precios.
La combinación de estas condiciones con un aumento en el volumen de transacciones puede filtrar eficazmente las brechas falsas.
El back-in channel es un mecanismo de salida de pérdidas que permite limitar las pérdidas de una sola transacción.
Las características de la oscilación son adecuadas para capturar tendencias en líneas cortas.
La lógica de implementación es simple, fácil de entender y de implementar.
La estrategia también tiene sus riesgos:
Cuando el precio está en el lado de la corredor durante mucho tiempo, se activan continuamente las posiciones de apertura de la misma dirección y se enfrenta al riesgo de pérdidas.
La configuración incorrecta de los parámetros de la vía puede causar demasiadas señales erróneas.
El criterio para juzgar el incremento de la transacción puede ser inadecuado o puede haber perdido la señal de una verdadera ruptura.
El mecanismo de suspensión de pérdidas podría ser demasiado conservador y perderse un gran evento.
La estrategia puede ser optimizada en los siguientes aspectos:
Optimización de los parámetros de canal para adaptarlos a las características de los diferentes mercados.
Optimización o aumento de las condiciones de apertura de posición, como considerar la línea promedio con más vacío, o la forma de Kline, etc., para evitar falsas rupturas.
Optimizar el mecanismo de suspensión y salida, relajar adecuadamente la suspensión y evitar el abandono prematuro.
Aumentar el mecanismo de gestión de posiciones y ajustar las posiciones y la tasa de utilización de los fondos según las condiciones del mercado.
Combinando más indicadores para determinar la dirección de las tendencias a gran escala, se evita hacer frente a las grandes tendencias.
La estrategia en general es una estrategia de seguimiento de tendencias más simple y práctica. Utiliza las características de la oscilación de los canales de precios para capturar eficazmente las tendencias de la línea media. Pero también debe tener en cuenta la configuración de los parámetros de optimización y la prevención de los riesgos que existen para obtener un mejor efecto de la estrategia.
/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Copyright, 2022, Cache_that_pass. You are free to use this script however you see fit and reproduce it in any manner.
//@version=5
////// Name the strategy between the 2 quotation marks. Consider setting commission type and value in strategy header to match exchanges rates. //////
strategy("Oscillating SSL Channel Strategy", "O-SSL Strat", overlay=true, pyramiding=1, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 100, calc_on_order_fills=true)
////// Inputs and calculations used by script //////
period = input(title='Period', defval=25)
len = input(title='Period', defval=25)
smaHigh = ta.sma(high, len)
smaLow = ta.sma(low, len)
Hlv = int(na)
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? smaHigh : smaLow
sslUp = Hlv < 0 ? smaLow : smaHigh
////// Show me the money //////
plot(sslDown, linewidth=2, color=color.new(color.red, 0))
plot(sslUp, linewidth=2, color=color.new(color.lime, 0))
////// Trade execution logic //////
//pseudo-code//
//Go long when high (or maybe close) breaks above the sslUp and volume is 2x or > Volume[1] and sslUp > sslDown
//Close the above longs when sslUp crosses under sslDown (or set takeprofit and stop loss exits)
//
//Go short when low is lower than the sslUp and volume is 2x or > Volume[1] and sslDown > sslUp
//Close shorts when sslDown crosses under sslUp
longCondition1 = (sslUp > sslDown)
longCondition2 = ta.crossover(high, sslUp)
//longCondition3 = (volume >= (volume[1]*1.89))
longCondition = ((longCondition1) and (longCondition2))// and (longCondition3))
longExit = ta.crossunder(sslUp, sslDown)
////// Bring It //////
if (longCondition)
strategy.entry("Bring It", strategy.long)
////// Sling It //////
if (longExit)
strategy.close("Bring It", comment="Sling It")
shortCondition1 = (sslDown) > (sslUp)
shortCondition2 = ta.crossunder(low, sslUp)
//shortCondition3 = (volume >= (volume[1]*1.89))
shortCondition = ((shortCondition1) and (shortCondition2))// and (shortCondition3))
shortExit = ta.crossunder(sslDown, sslUp)
////// Bring It //////
if (shortCondition)
strategy.entry("Bring It", strategy.long)
////// Sling It //////
if (shortExit)
strategy.close("Bring It", comment="Sling It")
////// Sling It //////
if (shortCondition)
strategy.entry("Sling It", strategy.short)
////// Bling It //////
if (shortExit)
strategy.close("Sling It", comment="Bring It")