
La estrategia de apertura de posición alta, cierre de posición baja y supresión de una sola opción es una estrategia de negociación de seguimiento de tendencias. La estrategia identifica la dirección de la tendencia a corto plazo de los precios al juzgar la relación entre el precio de apertura y cierre de la línea K, y al establecer una posición para hacer más descubiertos al inicio de la tendencia, con el objetivo de entrar rápidamente en el mercado y seguir la tendencia.
Esta estrategia determina principalmente la relación entre el precio de apertura y el precio de cierre de la línea K. Se produce una señal de multiplicación cuando el precio de apertura es igual al precio mínimo; se produce una señal de brecha cuando el precio de apertura es igual al precio máximo. De esta manera, se puede capturar una brecha en el precio a corto plazo y seguir la tendencia.
Una vez que se entra en la señal, se abre una posición de inmediato con una cantidad fija para establecer una posición. El stop loss se basará en la configuración del indicador ATR y seguirá la fluctuación del mercado. El objetivo de parada es la parte proporcional de RR de la distancia entre el punto de parada y el precio de entrada.
La estrategia también elimina todas las posiciones en el momento que el usuario establezca, por ejemplo, media hora antes del cierre de los mercados estadounidenses, para evitar el riesgo de grandes fluctuaciones durante la noche.
La estrategia tiene las siguientes ventajas:
El uso de la relación entre el precio de apertura y el precio de cierre para determinar la dirección de la tendencia permite identificar rápidamente brechas de corto plazo en el precio.
Las señales de entrada son sencillas, claras y fáciles de implementar.
El stop loss y el stop-loss a tiempo pueden bloquear las ganancias y evitar la expansión de las pérdidas.
El riesgo de fluctuaciones nocturnas puede evitarse mediante la obligación de cerrar las posiciones en un período de tiempo determinado.
No es necesario elegir una variedad específica de transacciones, que se aplican a mercados como divisas, acciones y criptomonedas.
La estrategia también tiene sus riesgos:
Utiliza el ATR para detener el deterioro, que puede ser frecuente en situaciones de temblor.
Sin tener en cuenta las características de la variedad de transacciones y el período de tiempo, existe la posibilidad de una sobreadaptación.
El objetivo de la parada fija puede no coincidir con las condiciones del mercado y no ser rentable de manera sostenible.
Si se impone una posición baja, se puede perder una oportunidad de tendencia o sufrir pérdidas adicionales.
La estrategia puede ser optimizada en los siguientes aspectos:
Optimización de la pérdida, el uso de la retención de pérdidas en situaciones de tendencia, el uso de la suspensión de pérdidas en situaciones de crisis, etc.
Se añaden condiciones de filtración para determinar el momento de entrada en combinación con indicadores de tendencia, etc., para evitar falsos breaks.
Ajuste dinámico de la posición de la parada para determinar la distancia de parada razonable según la volatilidad del mercado.
Optimización de los plazos de liquidación, seleccionando los plazos de liquidación adecuados para diferentes tipos de transacciones y regiones.
Las estrategias de apertura, cierre y apertura de posiciones de alto y bajo consumo establecen posiciones rápidamente mediante la simple determinación de tendencias a corto plazo en los precios. Tienen ventajas claras de entrada simple, parada y parada. Pero también hay aspectos que se pueden optimizar, como la forma de detener la pérdida, las señales de filtración, etc. Mediante pruebas y optimización continuas, la estrategia Parameters puede adaptarse a más entornos de mercado, con una mayor adaptabilidad y capacidad de ganancia.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
// Open-High-Low strategy
strategy('Strategy: OLH', shorttitle="OLH", overlay=true)
// Inputs
slAtrLen = input.int(defval=14, title="ATR Period for placing SL", group="StopLoss settings")
showSLLines = input.bool(defval=false, title="Show SL lines in chart", tooltip="Show SL lines also as dotted lines in chart. Note: chart may look untidy.", group="Stolploss settings")
// Trade related
rrRatio = input.float(title='Risk:Reward', step=0.1, defval=2.0, group="Trade settings")
endOfDay = input.int(defval=1500, title="Close all trades, default is 3:00 PM, 1500 hours (integer)", group="Trade settings")
mktAlwaysOn = input.bool(defval=true, title="Markets that never closed (Crypto, Forex, Commodity)", tooltip="Some markers never closes. For those cases, make this checked.", group="Trade settings")
lotSize = input.int(title='Lot Size', step=1, defval=1, group="Trade settings")
// Utils
green(open, close) => close > open ? true : false
red(open, close) => close < open ? true : false
body(open, close) => math.abs(open - close)
lowerwick = green(open, close) ? open - low : close - low
upperwick = green(open, close) ? high - close : high - open
crange = high - low
crangep = high[1] - low[1] // previous candle's candle-range
bullish = close > open ? true : false
bearish = close < open ? true : false
// Trade signals
longCond = barstate.isconfirmed and (open == low)
shortCond = barstate.isconfirmed and (open == high)
// For SL calculation
atr = ta.atr(slAtrLen)
highestHigh = ta.highest(high, 7)
lowestLow = ta.lowest(low, 7)
longStop = showSLLines ? lowestLow - (atr * 1) : na
shortStop = showSLLines ? highestHigh + (atr * 1) : na
plot(longStop, title="Buy SL", color=color.green, style=plot.style_cross)
plot(shortStop, title="Sell SL", color=color.red, style=plot.style_cross)
// Trade execute
h = hour(time('1'), syminfo.timezone)
m = minute(time('1'), syminfo.timezone)
hourVal = h * 100 + m
totalTrades = strategy.opentrades + strategy.closedtrades
if (mktAlwaysOn or (hourVal < endOfDay))
// Entry
var float sl = na
var float target = na
if (longCond)
strategy.entry("enter long", strategy.long, lotSize, limit=na, stop=na, comment="Enter Long")
sl := longStop
target := close + ((close - longStop) * rrRatio)
alert('Buy:' + syminfo.ticker + ' ,SL:' + str.tostring(math.floor(sl)) + ', Target:' + str.tostring(target), alert.freq_once_per_bar)
if (shortCond)
strategy.entry("enter short", strategy.short, lotSize, limit=na, stop=na, comment="Enter Short")
sl := shortStop
target := close - ((shortStop - close) * rrRatio)
alert('Sell:' + syminfo.ticker + ' ,SL:' + str.tostring(math.floor(sl)) + ', Target:' + str.tostring(target), alert.freq_once_per_bar)
// Exit: target or SL
if ((close >= target) or (close <= sl))
strategy.close("enter long", comment=close < sl ? "Long SL hit" : "Long target hit")
if ((close <= target) or (close >= sl))
strategy.close("enter short", comment=close > sl ? "Short SL hit" : "Short target hit")
else if (not mktAlwaysOn)
// Close all open position at the end if Day
strategy.close_all(comment = "Close all entries at end of day.")