Estrategia de referencia para ruptura de tendencia alcista


Fecha de creación: 2024-02-21 10:58:01 Última modificación: 2024-02-21 10:58:01
Copiar: 0 Número de Visitas: 610
1
Seguir
1617
Seguidores

Estrategia de referencia para ruptura de tendencia alcista

Descripción general

La estrategia es una estrategia de mantenimiento de la línea larga basada en una simple media móvil para determinar la dirección de la tendencia, combinada con una línea de soporte de resistencia para formar una señal de ruptura. Mediante el cálculo de los puntos altos y bajos del pivote del precio, se traza una línea de resistencia y una línea de soporte.

Principio de estrategia

  1. Calcular el promedio móvil simple de 20 días como una línea de referencia para juzgar la tendencia
  2. Calcula los puntos altos y bajos de Pivot de acuerdo con los parámetros de entrada del usuario
  3. Trazar líneas de resistencia y de soporte según los puntos altos y bajos del pivote
  4. Cuando el precio de cierre esté por encima de la línea de resistencia, haga una entrada adicional
  5. Cuando la línea de soporte atraviesa la línea de resistencia, la posición se estabiliza

Esta estrategia utiliza una simple media móvil para determinar la dirección de la tendencia general, y luego utiliza brechas en puntos clave para formar señales de negociación, y es una estrategia típica de tipo brecha. A través de los puntos clave y la tendencia, se puede filtrar eficazmente las brechas falsas.

Análisis de las ventajas

  1. Las oportunidades de estrategia son abundantes, adecuadas para acciones con alta volatilidad y fáciles de capturar tendencias
  2. El control de riesgos es más alto que los beneficios
  3. El uso de señales de penetración para evitar el riesgo de una falsa penetración
  4. Parámetros personalizables y adaptabilidad

Análisis de riesgos

  1. Depende de la optimización de los parámetros, los parámetros incorrectos aumentan la probabilidad de una falsa brecha
  2. La señal de ruptura se retrasó y se perdieron algunas oportunidades.
  3. Se puede detener fácilmente en situaciones de crisis.
  4. La falta de ajuste de las líneas de soporte puede generar pérdidas

Se puede reducir el riesgo mediante la optimización de parámetros en el disco duro, en combinación con una estrategia de stop loss.

Dirección de optimización

  1. Optimización de los parámetros de la media móvil
  2. Optimización de los parámetros de la línea de resistencia de soporte
  3. Aumentar las estrategias de detención de pérdidas
  4. Mecanismo de confirmación de brecha
  5. Indicadores de filtración combinados con volúmenes de transacción

Resumir

El conjunto de la estrategia es una estrategia de tipo rompedor, que se basa en la optimización de parámetros y la liquidez, adecuada para los comerciantes que siguen la tendencia. Como un marco de referencia, se puede ampliar el módulo según la necesidad real, para reducir el riesgo y mejorar la estabilidad a través de mecanismos como el stop loss, el filtro de señales y otros.

Código Fuente de la Estrategia
/*backtest
start: 2023-02-14 00:00:00
end: 2024-02-20 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/
// © CheatCode1

//@version=5
strategy("Quantitative Trend Strategy- Uptrend long", 'Steady Uptrend Strategy', overlay=true, initial_capital = 1500, default_qty_value = 100, commission_type = strategy.commission.percent, commission_value = 0.01, default_qty_type = strategy.percent_of_equity)


length = input.int(20, minval=1)
src = input(close, title="Source")
basis = ta.sma(src, length)
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)

inp1 = input.int(46, 'LookbackLeft')
inp2 = input.int(32, 'LookbackRight')

l1 = ta.pivothigh(close, inp1, inp2)
S1 = ta.pivotlow(close, inp1, inp2)

// plot(l1, 'Pivothigh', color.red, 1)
// // plot(S1, 'Pivot Low', color.red)

l1V = ta.valuewhen(l1, close, 0)
S1V = ta.valuewhen(S1, close, 0)

Plotl1 = not na(l1) ? l1V : na
PlotS1 = not na(S1) ? S1V : na

plot(Plotl1, 'Resistance', color.green, 1, plot.style_stepline, true)
plot(PlotS1, 'Support', color.red, 1, plot.style_stepline, true)

Priceforlong = close > l1V ? true : na
Priceforshort = close < S1V ? true : na

plotshape(Priceforlong ? high : na, 'p', shape.arrowup, location.abovebar, color.green, size = size.small)
plotshape(Priceforshort ? low : na, 's', shape.arrowdown, location.belowbar, color.red, size = size.small)

vol = volume
volma = ta.sma(vol, 20)

Plotl1C = ta.valuewhen(na(Plotl1), l1V, 0)
PlotS1C = ta.valuewhen(na(PlotS1), S1V, 0)
//Strategy Execution
volc = volume > volma 

Lc1 = Priceforlong 

Sc1 = Priceforshort

sL = Plotl1 < PlotS1 ? close : na
sS = PlotS1 > Plotl1 ? close : na


if Lc1 
    strategy.entry('Long', strategy.long)
// if Sc1 and C2
//     strategy.entry('Short', strategy.short)

if Priceforshort
    strategy.cancel('Long')
if Priceforlong   
    strategy.cancel('Short')


// Stp1 = ta.crossover(k, d)
// Ltp1 = ta.crossunder(k, d)
// Ltp = d > 70  ? Ltp1 : na
// Stp = d < 30  ? Stp1 : na


if strategy.openprofit >= 0 and sL
    strategy.close('Long')
if strategy.openprofit >= 0 and sS
    strategy.close('Short')
takeP = input.float(2, title='Take Profit') / 100
stopL = input.float(1.75, title='Stop Loss') / 100


// // Pre Directionality

Stop_L = strategy.position_avg_price * (1 - stopL)

Stop_S = strategy.position_avg_price * (1 + stopL)

Take_S= strategy.position_avg_price * (1 - takeP)

Take_L = strategy.position_avg_price * (1 + takeP)
     
// sL = Plotl1 < PlotS1 ? close : na
// sS = PlotS1 < Plotl1 ? close : na
     
// //Post Excecution
if strategy.position_size > 0 and not (Lc1)
    strategy.exit("Close Long", stop = Stop_L, limit = Take_L)

if strategy.position_size < 0 and not (Sc1)
    strategy.exit("Close Short", stop = Stop_S, limit = Take_S)