Estrategia comercial cuantitativa de ruptura de rango de precios dinámicos basada en niveles de soporte y resistencia


Fecha de creación: 2024-12-11 15:03:50 Última modificación: 2024-12-11 15:03:50
Copiar: 3 Número de Visitas: 378
1
Seguir
1617
Seguidores

Estrategia comercial cuantitativa de ruptura de rango de precios dinámicos basada en niveles de soporte y resistencia

Descripción general

La estrategia es un sistema de comercio cuantitativo basado en brechas de precios. Establece dinámicamente los límites superiores y inferiores de los rangos de precios y opera cuando los precios superan estos niveles clave. La idea central de la estrategia es capturar oportunidades de tendencia cuando el mercado rompe los rangos de precios establecidos y, al mismo tiempo, ajustar dinámicamente los rangos de precios para adaptarse a los cambios en el mercado.

Principio de estrategia

El funcionamiento de la estrategia se basa en el siguiente mecanismo central: En primer lugar, se establece un paso correspondiente (step_size) según las características de las diferentes variedades de transacciones, que se basa en aproximadamente el 1.5% del precio de la variedad. El sistema establece una franja de precios por encima y por debajo del precio actual, que se activa cuando el precio supera el límite superior y se activa cuando el precio supera el límite inferior.

Ventajas estratégicas

  1. Adaptabilidad dinámica: los rangos de precios se ajustan automáticamente a los cambios en el mercado, lo que permite que las estrategias se adapten a diferentes entornos del mercado.
  2. La capacidad de seguimiento de tendencias es destacada: la estrategia puede capturar las tendencias más fuertes al permitir la subida de posiciones simultáneas.
  3. El control de riesgo es perfecto: establece condiciones de stop loss claras y cierra automáticamente las posiciones cuando el precio cae por debajo de la franja.
  4. Amplia aplicabilidad: La estrategia puede aplicarse a varios mercados mediante la configuración de parámetros de longitud de paso correspondientes a diferentes variedades de operaciones.
  5. Alta eficiencia de cálculo: se adopta un método de cálculo de persistencia y eficiencia de las variables para garantizar que la estrategia funcione sin problemas.

Riesgo estratégico

  1. Riesgo de mercado de temblor: puede desencadenar brechas falsas frecuentes en mercados de temblor intermedia, lo que provoca pérdidas continuas.
  2. Riesgo de gestión de fondos: la acumulación de posiciones simultáneas puede conducir a una concentración excesiva de las posiciones, lo que requiere un control razonable de la apertura de riesgos en una sola dirección.
  3. Riesgo de deslizamiento: En caso de fluctuaciones agudas, se puede enfrentar un deslizamiento mayor que afecte el rendimiento de la estrategia.
  4. Sensibilidad de los parámetros: La racionalidad de la configuración de la longitud de paso afecta directamente a la eficacia de la estrategia y requiere una prueba adecuada.

Dirección de optimización de la estrategia

  1. Introducción de indicadores de volatilidad: se puede ajustar la longitud de paso en función de la dinámica de la volatilidad del mercado, para mejorar la adaptabilidad de la estrategia.
  2. Mecanismos de filtración: añadir indicadores de confirmación de tendencias y reducir las pérdidas de brechas falsas.
  3. Mejorar la gestión de posiciones: diseñar un mecanismo de control de posiciones más detallado, que equilibre los beneficios y los riesgos.
  4. Optimización de la ejecución de pedidos: Se puede agregar un enrutamiento inteligente de pedidos para reducir el impacto de los puntos de deslizamiento.
  5. Aumentar la dimensión temporal: considera las características del tiempo del mercado y ajusta los parámetros de la estrategia en diferentes períodos de tiempo.

Resumir

Esta es una estrategia de seguimiento de tendencias diseñada de manera lógica y clara. A través de la configuración y ajuste de intervalos de precios dinámicos, combinados con una gestión de posiciones flexible, la estrategia puede capturar efectivamente oportunidades de tendencias en el mercado. Aunque hay algunos espacios que necesitan optimización, en general, la estrategia ofrece un marco de comercio cuantitativo sólido.

Código Fuente de la Estrategia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=5
// 每个图表上画对应间隔的横线,自己手画吧
// 同方向追加20单,订单成交后重新计算,每个tick重新计算,变量保存1000个周期,k线结束后再处理一次订单,按照代码顺序来绘制plot
strategy("Price Level Breakout Strategy", overlay=true, pyramiding=200, calc_on_order_fills=true, calc_on_every_tick=true, max_bars_back=1000, process_orders_on_close=true, explicit_plot_zorder=true)
// var创建持久性变量,:=是更新变量,不重新声明
// 这个是全局变量
// a = array.new<string>(200)
// array.push(a, "a")
// plot(close, color = array.get(a, close > open ? 1 : 0))
string ticker = syminfo.ticker
var float step_size = 1000
// label.new(x=bar_index, y=close, text="当前品种代码: " + ticker)
// 根据定值画1.5的平行线
if ticker == "000300"
    step_size := 4000 * 0.015
if ticker == "XAUUSD"
    step_size := 3000 * 0.016
if ticker == "BTCUSD"
    step_size := 60000 * 0.015
if ticker == "SILVER"
    step_size := 50 * 0.015
if ticker == "UKOIL"
    step_size := 150 * 0.015
if ticker == "GBPUSD"
    step_size := 1.6 * 0.015
if ticker == "EURUSD"
    step_size := 1.1 * 0.015
    // 从0开始画200条间隔线
if ticker == "USDJPY"
    step_size := 100 * 0.015
var float start_value = close
var float up_number = close + step_size
var float low_number = close - step_size
// hline(3.14, title='Pi', color=color.blue, linestyle=hline.style_dotted, linewidth=2)
// plot(1)
// 当价格突破上限,产生买入信号
if close > up_number
    // 生成买入信号
    strategy.entry(id = "Buy", direction = strategy.long)
    // 更新新的价格区间
    start_value := start_value + step_size
    up_number := start_value + step_size
    low_number := start_value - step_size
    strategy.close(id = "Sell")
// 当价格跌破下限,产生卖出信号
if close < low_number
    // 生成卖出信号
    strategy.entry("Sell", strategy.short)
    // 更新新的价格区间
    start_value := start_value - step_size
    up_number := start_value + step_size
    low_number := start_value - step_size
    strategy.close(id = "Buy")