Estrategia de la bala de plata basada en el escape de la caja

El autor:¿ Qué pasa?, Fecha: 2024-01-15 12:06:32
Las etiquetas:

img

Resumen general

La estrategia detecta principalmente la ruptura de la caja formada por los puntos altos y bajos de la línea K para juzgar la dirección y la fuerza del mercado. Cuando hay una ruptura de caja ascendente, la estrategia establecerá una posición larga alrededor del punto de ruptura. Cuando hay una ruptura de caja descendente, la estrategia establecerá una posición corta alrededor del punto de ruptura. Una vez que se genera una señal comercial, la estrategia colocará órdenes para abrir posiciones y establecerá stop loss y tomar ganancias para controlar los riesgos.

Estrategia lógica

  1. La estrategia define un período de tiempo de negociación y sólo busca oportunidades comerciales durante ese período.

  2. Después de que se forme cada línea K, la estrategia juzga si hay un avance significativo entre los precios más altos y más bajos de las dos líneas K anteriores.

    2.1 Si el precio más bajo de la segunda línea K es mayor que el precio más alto de la primera línea K, se produce una ruptura de caja al alza.

    2.2 Si el precio más alto de la 2a línea K es inferior al precio más bajo de la 1a línea K, se produce una ruptura a la baja.

  3. Después de confirmar la señal de ruptura de la caja, la estrategia establece un punto de entrada largo o corto alrededor del precio más alto o más bajo de la línea K actual.

  4. Una vez abierta la posición, la estrategia establece el beneficio basado en el doble del rango de ruptura para capturar la aceleración de la tendencia.

  5. La estrategia también establece el stop loss en el precio más bajo o más alto de la segunda línea K para reducir el riesgo de pérdida.

Análisis de ventajas

La estrategia tiene las siguientes ventajas:

  1. La lógica es simple y fácil de implementar.

  2. El uso de las rupturas de la caja de la línea K para juzgar la dirección y la fuerza del mercado tiene una alta precisión.

  3. La configuración de take profit captura las oportunidades de la aceleración de la tendencia.

  4. Hay una lógica de stop loss clara para controlar una sola pérdida.

  5. La idea de la estrategia es flexible y se puede personalizar de acuerdo con el estilo personal.

Análisis de riesgos

Sin embargo, la estrategia presenta algunos riesgos:

  1. Las señales de ruptura pueden ser falsas rupturas, las pérdidas no se pueden evitar por completo.

  2. El stop loss cerca del punto de entrada puede desencadenarse fácilmente por mercados agresivos.

  3. No puede juzgar la estructura de la tendencia y las paradas pueden desencadenarse con frecuencia en mercados de rango.

  4. No tiene en cuenta el impacto de diferentes productos y períodos de tiempo.

Direcciones de optimización

Para optimizar aún más la estrategia, podemos mejorar los siguientes aspectos:

  1. Establecer parámetros de stop loss y take profit adaptativos para diferentes productos y períodos de tiempo.

  2. Añadir indicadores técnicos para juzgar la tendencia para evitar quedar atrapados en mercados de rango.

  3. Establezca oportunidades adicionales para seguir tendencias.

  4. Combinar indicadores de volumen para juzgar la autenticidad de las señales de fuga y filtro.

  5. Añadir algoritmos de aprendizaje automático para ayudar a determinar la dirección de la tendencia.

Resumen de las actividades

La estrategia está diseñada basándose en el principio de breakout simple para capturar corridas aceleradas después de los breakouts para obtener rendimientos excesivos.


/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 3m
basePeriod: 1m
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/
// © Dvitash

//@version=5
strategy("Casper SMC Silver Bullet", shorttitle = "Casper SB", overlay=true, calc_on_order_fills = true)

startTime = input(defval = "1000", title = "Start Time")
endTime = input(defval = "1600", title = "End Time")
contractAmt = input.int(defval = 2, title = "Contract Amount")
fvgCol = input.color(defval = color.rgb(63, 61, 179, 41), title = "FVG Color")
borderCol = input.color(defval = color.rgb(35, 33, 172, 41), title = "FVG Border Color")
fvgExtendLength = input.int(defval = 0, minval = 0, title = "FVG Extend Length")

allowedTime = not na(time(timeframe.period, startTime + "-" + endTime +":23456", "America/New_York"))
newDay = bool(ta.change(time('D')))
h = hour(time('1'), "America/New_York")

var bool fvgDrawn = na
var float entryPrice = na 
var float stopPrice = na 
var float tpPrice = na 

if newDay
    fvgDrawn := false
    // a_allBoxes = box.all
    // if array.size(a_allBoxes) > 0
    //     for i = 0 to array.size(a_allBoxes) - 1
    //         box.delete(array.get(a_allBoxes, i))

if allowedTime and barstate.isconfirmed and h <= 16
    //Long FVG
    if high[2] < low and not fvgDrawn
        // box.new(bar_index[2], low, bar_index + fvgExtendLength, high[2], bgcolor = fvgCol, border_color = borderCol)
        stopPrice := low[2]
        entryPrice := low
        tpPrice := entryPrice + (math.abs(low[2] - entryPrice) * 2)
        // log.info("SL: " + str.tostring(stopPrice) + " Entry: " + str.tostring(entryPrice) + " TP: " + str.tostring(tpPrice))
        strategy.entry("long", strategy.long, contractAmt, limit = entryPrice, comment = "Long Entry")
        fvgDrawn := true

    if low[2] > high and not fvgDrawn
        // box.new(bar_index[2], high, bar_index + fvgExtendLength, low[2], bgcolor = fvgCol, border_color = borderCol)
        stopPrice := high[2]
        entryPrice := high
        tpPrice := entryPrice - (math.abs(high[2] - entryPrice) * 2)
        // log.info("SL: " + str.tostring(stopPrice) + " Entry: " + str.tostring(entryPrice) + " TP: " + str.tostring(tpPrice))
        strategy.entry("short", strategy.short, contractAmt, limit = entryPrice, comment = "Short Entry")
        fvgDrawn := true
if h >= 16
    strategy.close_all()
    strategy.cancel_all()

strategy.exit("long exit", from_entry = "long", qty = contractAmt, limit = tpPrice, stop = stopPrice, comment = "Long Exit")
strategy.exit("short exit", from_entry = "short", qty = contractAmt, limit = tpPrice, stop = stopPrice, comment = "Short Exit")

Más.