Estrategia de captura de tendencias con ruptura de línea horizontal

El autor:¿ Qué pasa?, Fecha: 2024-04-26 15:22:06
Las etiquetas:

img

Resumen general

Esta estrategia utiliza líneas horizontales como niveles de soporte y resistencia, y genera señales comerciales cuando el precio rompe estas líneas. La idea principal es: primero, dibujar líneas horizontales basadas en ciertas condiciones, ir largo cuando el precio rompe por encima de la línea, y cerrar posiciones cuando el precio rompe por debajo de la línea. Al mismo tiempo, hay condiciones correspondientes para generar líneas horizontales, como el precio bajo de la vela anterior es mayor que el precio de cierre actual.

Principio de la estrategia

  1. Basándose en la condición de que el precio bajo de la vela anterior sea mayor que el precio de cierre actual, dibuje una línea horizontal con una longitud de 20 en el precio bajo de la vela anterior, y siempre mantenga solo las últimas 10 líneas.
  2. Si el precio actual se rompe por encima de la última línea horizontal, cierre todas las posiciones largas anteriores y abra nuevas posiciones largas.
  3. Cuando se dibuje una nueva línea horizontal, si existe una posición, cerrarla primero y luego abrir una nueva posición larga.

Ventajas estratégicas

  1. La lógica de la estrategia es simple y clara, fácil de entender e implementar.
  2. Al utilizar el avance de los niveles de soporte y resistencia de la línea horizontal para generar señales, puede capturar bien las tendencias.
  3. Cuando se genera una nueva línea horizontal, primero se cierran las posiciones anteriores y luego se abren otras nuevas, lo que puede reducir el riesgo que pueden presentar las posiciones anteriores.
  4. La estrategia se puede optimizar ajustando la longitud y el número de líneas horizontales.

Riesgos estratégicos

  1. Para los mercados oscilantes, las frecuentes rupturas horizontales pueden llevar a una sobreventa, lo que resulta en grandes deslizamientos y comisiones de transacción.
  2. La definición de líneas horizontales de la estrategia es relativamente simple y carece de verificación con otros indicadores, lo que puede generar algunas señales falsas.
  3. Solo es largo y no corto, y no puede aprovechar plenamente las tendencias a la baja.

Direcciones para la optimización de la estrategia

  1. Se pueden combinar otros indicadores para confirmar la validez de las líneas horizontales, como los cambios en el volumen de operaciones, para reducir las señales falsas.
  2. Para los mercados oscilantes, la frecuencia de negociación puede reducirse aumentando la magnitud de las rupturas horizontales.
  3. Añadir un mecanismo de venta corta para beneficiarse de las tendencias a la baja.
  4. Considerar el ajuste dinámico de la longitud y el número de líneas horizontales para adaptarse a las diferentes condiciones del mercado.

Resumen de las actividades

Esta estrategia utiliza líneas horizontales como niveles de soporte y resistencia importantes, y genera señales de negociación a través de avances de línea. La ventaja es que la lógica es simple y fácil de implementar, y puede capturar bien las tendencias. Sin embargo, la desventaja es que puede sobre-negociar, generar señales falsas, y solo puede ir largo pero no corto. En el futuro, se puede optimizar y mejorar combinando otros indicadores, reduciendo la frecuencia de negociación, agregando mecanismos de venta corta y ajustando dinámicamente los parámetros.


/*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 Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Traderxprox

//@version=5
strategy("Alarm Trader_ALL", overlay=true)

// Yatay çizgi oluşum
yatayc = low[1] > close[0]

if yatayc
    if strategy.opentrades > 0
        strategy.close("AL", comment = "Fiyat:" + str.tostring(low[1], "#.##") + "\n" + timeframe.period +"\n Yatay Direnç Oluştu")
    else
        strategy.entry("AL", strategy.long, comment = "Fiyat:" + str.tostring(low[1], "#.##") + "\n" + timeframe.period +"\n Yatay Direnç Oluştu")


//YATAY ÇİZGİ
int cizgilen = input.int(20, "Çizgi uzunluğu?", group = "Yatay Çizgi Ayarları")
var array<line> lines = array.new<line>()
int numberOfLines = input.int(10, "Son Kaç Çizgi?", 0, group = "Yatay Çizgi Ayarları")
kural22 = low[1] > close[0]
// if kural22
//     newLine = line.new(bar_index-2, low[1], bar_index+cizgilen, low[1] ,color=color.red, width=1, style=line.style_solid)
//     // Push the `newLine` into the `lines` array.
//     lines.push(newLine)
//     // Delete the oldest line when the size of the array exceeds the specified `numberOfLines`.
//     if array.size(lines) > numberOfLines
//         line.delete(lines.shift())
    
// Alarm kırılım için koşul

var float lastLinePrice = na
if not na(close) and array.size(lines) > 0 
    lastLinePrice := line.get_price(array.get(lines, array.size(lines) - 1), bar_index)
if open < lastLinePrice and close > lastLinePrice
    if strategy.opentrades > 0
        strategy.close("AL", comment = "Fiyat:" + str.tostring(lastLinePrice, "#.##") + "\n" + timeframe.period +" \n Yatay çizgi yukarı kırılımı")
    else
        strategy.entry("AL", strategy.long, comment = "Fiyat:" + str.tostring(lastLinePrice, "#.##") + "\n" + timeframe.period +" \n Yatay çizgi yukarı kırılımı")



Más.