Estrategia de ruptura con el precio más alto de ayer


Fecha de creación: 2023-11-06 10:49:57 Última modificación: 2023-11-06 10:49:57
Copiar: 0 Número de Visitas: 709
1
Seguir
1617
Seguidores

Estrategia de ruptura con el precio más alto de ayer

Descripción general

La estrategia de romper los máximos de ayer es una estrategia de seguimiento de tendencias que abre una posición múltiple al romper los máximos de ayer, incluso si se rompe varias veces durante el día. Se utiliza para seguir una tendencia como característica principal y se aplica a situaciones en las que el mercado presenta una tendencia evidente y una alta volatilidad.

El principio

La estrategia identifica el tiempo de entrada y el tiempo de salida mediante la introducción de una serie de indicadores.

  • Filtrador de la curva ROC - activa la estrategia cuando el precio de cierre del día en comparación con el precio de cierre del día de negociación anterior supera el umbral establecido. Este indicador se utiliza para filtrar los mercados volátiles que no se ajustan a la estrategia.

  • Punto de ruptura - registra el precio más alto, el precio más bajo y el precio de apertura del día. Cuando el precio supera el precio más alto del día, es una señal de entrada.

  • Condiciones de entrada y salida - Establezca el stop loss y el stop loss ratio después de la entrada, y active el stop loss tracking para bloquear las ganancias. También puede haber un stop loss condicional para un EMA específico.

  • Configuración optimizada - Se puede configurar la proporción de la distancia antes de la entrada para personalizar el tiempo de entrada, evitar falsas rupturas. Se pueden configurar paradas, paradas, paradas de seguimiento de los parámetros dinámicos.

En concreto, la estrategia determina el momento de entrada mediante el registro de los precios más altos del día. Cuando los precios superan los precios más altos del día, se hace una entrada múltiple. A partir de entonces, se establecen paros y paros de salida, y se puede activar el seguimiento de los paros. También se puede detener los paros cuando el precio cae por debajo de un EMA específico.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  • El blog de la empresa, que se encuentra en el centro de la ciudad de Nueva York, se centra en las tendencias de la moda y las ganancias de las tendencias.

  • La estrategia de la brecha, la señal de entrada es clara.

  • Tenga en cuenta el precio más alto del día para evitar entradas consecutivas.

  • La configuración de bloqueo de pérdidas ayuda a controlar el riesgo.

  • La configuración de seguimiento de stop loss puede bloquear las ganancias.

  • Se puede ajustar el tiempo de entrada y controlar el riesgo mediante la optimización de parámetros.

  • La aplicación es sencilla, intuitiva y fácil de entender.

  • Se puede usar en dos direcciones.

Análisis de riesgos

La estrategia también tiene los siguientes riesgos:

  • Las estrategias de ruptura son fácilmente atrapadas. Los precios pueden retroceder inmediatamente después de la entrada.

  • La tendencia es la única que funciona, y no funciona en caso de crisis.

  • Se debe establecer una proporción de pérdidas que sea razonable, y la exageración puede aumentar las pérdidas.

  • Se debe establecer una proporción razonable de espacios de entrada, ya que el exceso de radicalización puede aumentar las pérdidas.

  • Las brechas falsas pueden causar pérdidas innecesarias y requieren ajustes y optimizaciones.

  • La atención debe centrarse en si el volumen de transacciones de la ruptura apoyará la tendencia posterior.

  • Hay que prestar atención a la coordinación entre los diferentes parámetros de la configuración de los períodos de tiempo.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  • Añadir otros indicadores técnicos, como el volumen de transacciones, el indicador de la conmoción, etc., para evitar que se encuentre en una situación de conmoción.

  • Aumentar los indicadores de ajuste de la curva para juzgar la calidad de las tendencias y evitar seguir tendencias falsas.

  • Optimización dinámica de la configuración del intervalo de entrada, ajustando el intervalo requerido según la volatilidad del mercado.

  • Optimización dinámica de la configuración del parón de pérdidas, siguiendo los parámetros de ajuste del mercado.

  • Establece diferentes parámetros para diferentes ciclos de diferentes variedades.

  • Utilizando el método de aprendizaje automático TRAINING para probar el impacto de diferentes parámetros en la estrategia.

  • Añadir Opciones Opciones para optimizar la configuración.

  • Investiga cómo aplicar esta estrategia en situaciones de crisis.

  • Estrategias de combinación ampliadas a lo largo de períodos de tiempo y variedades.

Resumir

La estrategia se basa en la idea de seguimiento de tendencias que superan los máximos de ayer y se desempeña bien en las tendencias. Sin embargo, también hay problemas de optimización de parámetros y de riesgo. Se puede optimizar aún más mediante la introducción de más indicadores de juicio, configuración de parámetros de optimización dinámica, extensión a estrategias combinadas, etc. En general, la estrategia es adecuada para el seguimiento de tendencias de línea corta, pero se debe prestar atención al control de riesgos y la optimización de parámetros.

Código Fuente de la Estrategia
/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1h
basePeriod: 15m
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/
// Author: © tumiza 999 
// © TheSocialCryptoClub

//@version=5

strategy("Yesterday's High v.17.07", overlay=true, pyramiding = 1,
         initial_capital=10000, 
         default_qty_type=strategy.percent_of_equity, default_qty_value=10,
         slippage=1, backtest_fill_limits_assumption=1, use_bar_magnifier=true,
         commission_type=strategy.commission.percent, commission_value=0.075
         )

// -----------------------------------------------------------------------------
// ROC Filter
// -----------------------------------------------------------------------------

// f_security function by LucF for PineCoders available here: https://www.tradingview.com/script/cyPWY96u-How-to-avoid-repainting-when-using-security-PineCoders-FAQ/
f_security(_sym, _res, _src, _rep) => request.security(_sym, _res, _src[not _rep and barstate.isrealtime ? 1 : 0])[_rep or barstate.isrealtime ? 0 : 1]
high_daily = f_security(syminfo.tickerid, "D", high, false)

roc_enable = input.bool(false, "", group="ROC Filter from CloseD", inline="roc")
roc_threshold = input.float(1, "Treshold", step=0.5, group="ROC Filter from CloseD", inline="roc")

closed = f_security(syminfo.tickerid,"1D",close, false)
roc_filter= roc_enable ? (close-closed)/closed*100  > roc_threshold  : true


// -----------------------------------------------------------------------------
// Trigger Point 
// -----------------------------------------------------------------------------

open_session = ta.change(time('D'))
price_session = ta.valuewhen(open_session, open, 0)
tf_session = timeframe.multiplier <= 60

bgcolor(open_session and tf_session ?color.new(color.blue,80):na, title = "Session")

first_bar = 0
if open_session
    first_bar := bar_index

var max_today = 0.0
var min_today = 0.0
var high_daily1 = 0.0
var low_daily1 = 0.0
var today_open = 0.0

if first_bar
    high_daily1 := max_today
    low_daily1 := min_today
    today_open := open
    max_today := high
    min_today := low


if high >= max_today
    max_today := high

if low < min_today
    min_today := low


same_day  = today_open == today_open[1]

plot( timeframe.multiplier <= 240 and same_day ? high_daily1 : na, color= color.yellow , style=plot.style_linebr, linewidth=1, title='High line')
plot( timeframe.multiplier <= 240 and same_day ? low_daily1 : na, color= #E8000D , style=plot.style_linebr, linewidth=1, title='Low line')

// -----------------------------------------------------------------------------
// Strategy settings 
// -----------------------------------------------------------------------------

Gap = input.float(1,"Gap%", step=0.5, tooltip="Gap di entrata su entry_price -n anticipa entrata, con +n posticipa entrata", group = "Entry")
Gap2 = (high_daily1 * Gap)/100

sl  = input.float(3, "Stop-loss", step= 0.5,  group = "Entry")
tp  = input.float(9, "Take-profit", step= 0.5, group = "Entry")
stop_loss_price = strategy.position_avg_price * (1-sl/100)
take_price = strategy.position_avg_price * (1+tp/100)

sl_trl = input.float(2, "Trailing-stop", step = 0.5, tooltip = "Attiva trailing stop dopo che ha raggiunto...",group = "Trailing Stop Settings")//group = "Trailing Stop Settings")
Atrl= input.float(1, "Offset Trailing", step=0.5,tooltip = "Distanza dal prezzo", group = "Trailing Stop Settings")
stop_trl_price_cond = sl_trl * high/syminfo.mintick/100
stop_trl_price_offset_cond = Atrl * high/syminfo.mintick/100

stop_tick = sl * high/syminfo.mintick/100
profit_tick = tp * high/syminfo.mintick/100

mess_buy = "buy"
mess_sell = "sell"

// -----------------------------------------------------------------------------
// Entry - Exit - Close
// -----------------------------------------------------------------------------

if close < high_daily1 and roc_filter
    strategy.entry("Entry", strategy.long, stop = high_daily1 + (Gap2), alert_message = mess_buy)

ts_n  = input.bool(true, "Trailing-stop", tooltip = "Attiva o disattiva trailing-stop", group = "Trailing Stop Settings")
close_ema = input.bool(false, "Close EMA", tooltip = "Attiva o disattiva chiusura su EMA", group = "Trailing Stop Settings")
len1 = input.int(10, "EMA length", step=1, group = "Trailing Stop Settings")
ma1 = ta.ema(close, len1)

plot(ma1, title='EMA', color=color.new(color.yellow, 0))

if ts_n == true
    strategy.exit("Trailing-Stop","Entry",loss= stop_tick, stop= stop_loss_price, limit= take_price, trail_points = stop_trl_price_cond, trail_offset = stop_trl_price_offset_cond, comment_loss="Stop-Loss!!",comment_profit ="CASH!!", comment_trailing = "TRL-Stop!!", alert_message = mess_sell)
else
    strategy.exit("TP-SL", "Entry",loss= stop_tick, stop=stop_loss_price, limit= take_price, comment_loss= "Stop-loss!!!", comment_profit = "CASH!!", alert_message = mess_sell)

if close_ema == true and ta.crossunder(close,ma1)
    strategy.close("Entry",comment = "Close" , alert_message = mess_sell)