La estrategia de engulfing de apertura inversa es una estrategia de negociación intradiaria simple basada en el primer candelero después de la apertura. La idea central de esta estrategia es juzgar la tendencia alcista o descendente del primer candelero cuando aparece después de la apertura todos los días, y tomar operaciones contrarias. Si el primer candelero es una línea de yang roja, vaya largo; si el primer candelero es una línea de yin verde, vaya corto. La estrategia también establece mecanismos de stop loss y take profit para salir de posiciones.
El principio detrás de esta estrategia es la peculiaridad del primer candelero después de la apertura. Cuando el mercado se abre, las fuerzas de los largos y cortos se enfrentan más intensamente, y la probabilidad de una reversión es relativamente grande.
Específicamente, después de la apertura de un nuevo día, la estrategia registrará el precio de apertura, el precio de cierre y el cambio de precio del primer candelabro. Si el precio de apertura es mayor que el precio de cierre (línea yin verde), significa que los bajistas han ganado y debemos hacer long; si el precio de apertura es menor que el precio de cierre (línea yang roja), significa que los alcistas han ganado y debemos hacer short. Al tomar tales operaciones contrarias, la estrategia intenta capturar oportunidades de reversión después de la apertura.
Mientras tanto, la estrategia también establece mecanismos de stop loss y take profit, incluidos el precio de stop loss largo, el precio de take profit largo, el precio de stop loss corto y el precio de take profit corto, para controlar los riesgos y las ganancias de las posiciones largas y cortas, evitando pérdidas excesivas o tomar beneficios prematuros.
La estrategia de abertura inversa para engullir tiene las siguientes ventajas:
La estrategia de abertura inversa también tiene algunos riesgos, que incluyen principalmente:
La estrategia de abertura inversa para engullir se puede optimizar en los siguientes aspectos:
La estrategia de engulfamiento de apertura inversa intenta capturar oportunidades de inversión después de la apertura al juzgar la dirección del primer candelabro y tomar operaciones contrarias. La idea de la estrategia es simple con bajos costos de participación y tiene cierto valor práctico. Pero también debemos ser conscientes de los riesgos y mejorar y optimizar constantemente la estrategia en la práctica para hacerla más robusta y confiable.
/*backtest start: 2023-10-22 00:00:00 end: 2023-11-21 00:00:00 period: 3h 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/ // © vikris //@version=4 strategy("[VJ]First Candle Strategy", overlay = true,calc_on_every_tick = true,default_qty_type=strategy.percent_of_equity,default_qty_value=100,initial_capital=750,commission_type=strategy.commission.percent, commission_value=0.02) // ********** Strategy inputs - Start ********** // Used for intraday handling // Session value should be from market start to the time you want to square-off // your intraday strategy // Important: The end time should be at least 2 minutes before the intraday // square-off time set by your broker var i_marketSession = input(title="Market session", type=input.session, defval="0915-1455", confirm=true) // Make inputs that set the take profit % (optional) longProfitPerc = input(title="Long Take Profit (%)", type=input.float, minval=0.0, step=0.1, defval=1) * 0.01 shortProfitPerc = input(title="Short Take Profit (%)", type=input.float, minval=0.0, step=0.1, defval=1) * 0.01 // Set stop loss level with input options (optional) longLossPerc = input(title="Long Stop Loss (%)", type=input.float, minval=0.0, step=0.1, defval=0.5) * 0.01 shortLossPerc = input(title="Short Stop Loss (%)", type=input.float, minval=0.0, step=0.1, defval=0.5) * 0.01 // ********** Strategy inputs - End ********** // ********** Supporting functions - Start ********** // A function to check whether the bar or period is in intraday session barInSession(sess) => time(timeframe.period, sess) != 0 // Figure out take profit price longExitPrice = strategy.position_avg_price * (1 + longProfitPerc) shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc) // Determine stop loss price longStopPrice = strategy.position_avg_price * (1 - longLossPerc) shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc) // ********** Supporting functions - End ********** // ********** Strategy - Start ********** // See if intraday session is active bool intradaySession = barInSession(i_marketSession) // Trade only if intraday session is active //=================Strategy logic goes in here=========================== // If start of the daily session changed, then it's first bar of the new session isNewDay = time("D") != time("D")[1] var firstBarCloseValue = close var firstBarOpenValue = open if isNewDay firstBarCloseValue := close firstBarOpenValue := open greenCandle = firstBarOpenValue < firstBarCloseValue redCandle = firstBarOpenValue > firstBarCloseValue buy = redCandle sell = greenCandle // plot(firstBarCloseValue) // plot(firstBarOpenValue) //Final Long/Short Condition longCondition = buy shortCondition =sell //Long Strategy - buy condition and exits with Take profit and SL if (longCondition and intradaySession) stop_level = longStopPrice profit_level = longExitPrice strategy.entry("My Long Entry Id", strategy.long) strategy.exit("TP/SL", "My Long Entry Id", stop=stop_level, limit=profit_level) //Short Strategy - sell condition and exits with Take profit and SL if (shortCondition and intradaySession) stop_level = shortStopPrice profit_level = shortExitPrice strategy.entry("My Short Entry Id", strategy.short) strategy.exit("TP/SL", "My Short Entry Id", stop=stop_level, limit=profit_level) // Square-off position (when session is over and position is open) squareOff = (not intradaySession) and (strategy.position_size != 0) strategy.close_all(when = squareOff, comment = "Square-off") // ********** Strategy - End **********