En la carga de los recursos... Cargando...

El importe de las operaciones de negociación en el mercado de divisas se calculará en función de las operaciones de negociación en el mercado de divisas.

El autor:¿ Qué pasa?, Fecha: 2024-12-27 15:49:16
Las etiquetas:Obstetrícia- ¿ Qué?- ¿Qué es?El ATR

img

Resumen general

Esta estrategia es un sistema de negociación adaptativo basado en la teoría fractal y el análisis de bloques de órdenes. Captura oportunidades comerciales de alta probabilidad mediante la identificación de niveles clave de soporte y resistencia en la estructura del mercado, combinando señales de ruptura fractal con confirmación de bloques de órdenes. La estrategia integra múltiples indicadores técnicos, incluidos indicadores fractal, bloques de órdenes dinámicos y sistemas de confirmación de ruptura de precios, logrando un posicionamiento preciso de los puntos de inflexión del mercado y un tiempo preciso de las operaciones.

Principios de estrategia

La lógica central de la estrategia se basa en tres pilares principales: primero, monitorear continuamente los máximos y mínimos del mercado a través del módulo de cálculo fractal para identificar áreas potenciales de inversión de tendencia; segundo, establecer zonas de oferta y demanda en los niveles clave de precios a través del análisis de bloques de órdenes; y finalmente, verificar la validez de las rupturas de precios a través del sistema de confirmación de ruptura. Cuando el precio se rompe por encima de un fractal y confirma la validez, el sistema crea un bloque de orden de zona de demanda en el área de la vela roja reciente y abre una posición larga; cuando el precio se rompe por debajo de un fractal y confirma la validez, el sistema crea un pedido de zona de suministro en el área de la vela verde reciente y abre una posición corta.

Ventajas estratégicas

  1. Gran adaptabilidad: La estrategia puede ajustar dinámicamente la posición y el tamaño del bloque de pedidos de acuerdo con las condiciones del mercado.
  2. Mecanismos de confirmación múltiples: Combina las rupturas fractales, la confirmación del bloque de órdenes y el análisis de la acción del precio para reducir el riesgo de señal falsa.
  3. Gestión integral del riesgo: ayuda a los operadores a monitorear el estado de la estrategia en tiempo real a través de una clara retroalimentación visual y una lista de verificación de estado.
  4. Excelente visualización: Proporciona una interfaz gráfica intuitiva que incluye marcadores fractales, visualización de bloques de orden y lista de verificación de estado.
  5. Parámetros flexibles: permite a los usuarios ajustar parámetros clave como el período fractal y el tipo de ruptura de acuerdo con el estilo de negociación personal.

Riesgos estratégicos

  1. Riesgo de volatilidad del mercado: puede generar falsas señales de ruptura en mercados altamente volátiles, lo que requiere mecanismos de filtrado adicionales.
  2. Riesgo de deslizamiento: los precios de ejecución de órdenes pueden desviarse de los puntos de entrada ideales en mercados con liquidez insuficiente.
  3. Dependencia de tendencia: el rendimiento de la estrategia puede no ser tan ideal en mercados variados como en mercados de tendencia.
  4. Sensibilidad de parámetros: Diferentes ajustes del período fractal pueden dar lugar a resultados comerciales significativamente diferentes.
  5. Consumo de recursos computacionales: las características de visualización complejas y los cálculos en tiempo real pueden aumentar la carga del sistema.

Direcciones de optimización

  1. Introducir filtro de volatilidad: Optimizar las señales de negociación mediante ATR u otros indicadores de volatilidad.
  2. Añadir un mecanismo de confirmación de tendencia: Mejorar la fiabilidad de la señal combinando medias móviles u otros indicadores de tendencia.
  3. Mecanismo de stop-loss perfecto: Diseñar una estrategia de stop-loss dinámica basada en la estructura del bloque de órdenes.
  4. Optimizar el tamaño del bloque de órdenes: ajustar dinámicamente el tamaño del bloque de órdenes según la volatilidad del mercado.
  5. Añadir análisis de volumen: Verificar la validez de la ruptura mediante la incorporación de datos de volumen.

Resumen de las actividades

Esta es una estrategia de trading compuesta que integra múltiples dimensiones de análisis técnico, construyendo un sistema de trading completo con teoría fractal y análisis de bloques de órdenes en su núcleo.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Supply and Demand - Order Block Strategy", format=format.price, precision=0, overlay=true)

// Input options for customization
changeColor = input(false, title="Change Box Colors?")
breakType = input.string("Wick+Body", title="Fractal Break Type:", options=["Wick+Body", "Body"])
n = input.int(title="Periods", defval=2, minval=1, tooltip="Number of periods for fractal lookback")

if n <= 0
    runtime.error("Periods input must be greater than zero.")

transGreenClr = input.color(color.new(color.green, 80), title="Bg:", inline="a_1")
greenClr = input.color(color.new(color.green, 0), title="Border:", inline="a_1")

transRedClr = input.color(color.new(color.red, 80), title="Bg:", inline="b_1")
redClr = input.color(color.new(color.red, 0), title="Border:", inline="b_1")

// --- Fractal Calculation ---
upFractal = high[n] == ta.highest(high, 2 * n + 1)
downFractal = low[n] == ta.lowest(low, 2 * n + 1)
// --- End Fractal Calculation ---

var float topValue = na
var float bottomValue = na
var int lastRedIndex = na
var float lastRedLow = na
var float lastRedHigh = na
var int lastGreenIndex = na
var float lastGreenLow = na
var float lastGreenHigh = na
var line topLine = na
var line bottomLine = na
var box demandBox = na
var box supplyBox = na
var topBreakBlock = false
var bottomBreakBlock = false
var isLongBreak = false
var isShortBreak = false
topBreakCheckSource = breakType == "Wick+Body" ? high : close
bottomBreakCheckSource = breakType == "Wick+Body" ? low : close

// Last Red Check
if close < open
    lastRedIndex := bar_index
    lastRedLow := low
    lastRedHigh := high

// Last Green Check
if close > open
    lastGreenIndex := bar_index
    lastGreenLow := low
    lastGreenHigh := high

// Top break
if ta.crossover(topBreakCheckSource, topValue) and not topBreakBlock
    topBreakBlock := true
    isLongBreak := true
    // line.set_x2(topLine, bar_index)
    // demandBox := box.new(lastRedIndex - 1, lastRedHigh, lastRedIndex + 1, lastRedLow, bgcolor=transGreenClr, border_color=greenClr)
    if strategy.position_size <= 0
        strategy.entry("Long", strategy.long)

// Bottom break
if ta.crossunder(bottomBreakCheckSource, bottomValue) and not bottomBreakBlock
    bottomBreakBlock := true
    isShortBreak := true
    // line.set_x2(bottomLine, bar_index)
    // supplyBox := box.new(lastGreenIndex - 1, lastGreenHigh, lastGreenIndex + 1, lastGreenLow, bgcolor=transRedClr, border_color=redClr)
    if strategy.position_size >= 0
        strategy.entry("Short", strategy.short)

// New up fractal
if upFractal
    topBreakBlock := false
    isLongBreak := false
    topValue := high[n]
    // topLine := line.new(bar_index[n], topValue, bar_index, topValue, color=color.teal, style=line.style_dotted, width=2)
    // if not isLongBreak[1]
    //     line.delete(topLine[1])

// New down fractal
if downFractal
    bottomBreakBlock := false
    isShortBreak := false
    bottomValue := low[n]
    // bottomLine := line.new(bar_index[n], bottomValue, bar_index, bottomValue, color=color.maroon, style=line.style_dotted, width=2)
    // if not isShortBreak[1]
    //     line.delete(bottomLine[1])

// Box state update
// activeBoxes = box.all
// if array.size(activeBoxes) > 0 and changeColor
//     for i = 0 to array.size(activeBoxes) - 1
//         boxId = array.get(activeBoxes, i)
//         bVal = box.get_bottom(boxId)
//         tVal = box.get_top(boxId)
//         if close < bVal
//             box.set_bgcolor(boxId, transRedClr)
//             box.set_border_color(boxId, redClr)
//         if close > tVal
//             box.set_bgcolor(boxId, transGreenClr)
//             box.set_border_color(boxId, greenClr)

//PLOTS
plotshape(downFractal ,style=shape.triangleup, location=location.belowbar, offset=-n, color=color.new(color.gray,80), size = size.tiny)
plotshape(upFractal, style=shape.triangledown,   location=location.abovebar, offset=-n, color=color.new(color.gray,80), size = size.tiny)

// --- Checklist Table ---
// var table checklistTable = table.new(position.bottom_right, 2, 8, bgcolor=color.new(color.gray, 80), border_width=1)

// if barstate.islast
//     table.cell(checklistTable, 0, 0, "Condition", text_color=color.white, text_size=size.small, bgcolor=color.teal)
//     table.cell(checklistTable, 1, 0, "Status", text_color=color.white, text_size=size.small, bgcolor=color.teal)

//     table.cell(checklistTable, 0, 1, "Up Fractal", text_size=size.small)
//     table.cell(checklistTable, 1, 1, upFractal ? "✅" : "❌", text_color=upFractal ? color.green : color.red, text_size=size.small)

//     table.cell(checklistTable, 0, 2, "Down Fractal", text_size=size.small)
//     table.cell(checklistTable, 1, 2, downFractal ? "✅" : "❌", text_color=downFractal ? color.green : color.red, text_size=size.small)

//     table.cell(checklistTable, 0, 3, "Top Break", text_size=size.small)
//     table.cell(checklistTable, 1, 3, isLongBreak ? "✅" : "❌", text_color=isLongBreak ? color.green : color.red, text_size=size.small)

//     table.cell(checklistTable, 0, 4, "Bottom Break", text_size=size.small)
//     table.cell(checklistTable, 1, 4, isShortBreak ? "✅" : "❌", text_color=isShortBreak ? color.green : color.red, text_size=size.small)

//     table.cell(checklistTable, 0, 5, "Last Red Candle", text_size=size.small)
//     table.cell(checklistTable, 1, 5, close < open ? "✅" : "❌", text_color=close < open ? color.green : color.red, text_size=size.small)

//     table.cell(checklistTable, 0, 6, "Last Green Candle", text_size=size.small)
//     table.cell(checklistTable, 1, 6, close > open ? "✅" : "❌", text_color=close > open ? color.green : color.red, text_size=size.small)

//     table.cell(checklistTable, 0, 7, "Box Color Change Active", text_size=size.small)
//     table.cell(checklistTable, 1, 7, changeColor ? "✅" : "❌", text_color=changeColor ? color.green : color.red, text_size=size.small)

Relacionados

Más.