
La estrategia es un método de negociación de alta precisión basado en el punto medio de un intervalo de mercado dinámico, que permite un momento preciso de entrada y salida mediante la captura de las características de la fluctuación de los precios en un rango de tiempo específico. El núcleo de la estrategia es utilizar un ciclo de retroceso configurable, calcular dinámicamente los puntos altos, bajos y medios de un intervalo de precios y ejecutar operaciones de precio límite durante el período de negociación de la Bolsa de Nueva York.
La estrategia se basa en los siguientes mecanismos clave:
La estrategia ofrece a los operadores un método de negociación sistematizado y con reglas claras a través de un mecanismo de negociación de brechas medias y precios límite en intervalos precisos. Sus principales ventajas son la alta precisión de entrada, el control del riesgo y la selectividad del tiempo. La dirección de optimización futura se centrará en mejorar la adaptabilidad y la estabilidad de la estrategia.
La estrategia de la empresa consiste en calcular dinámicamente los rangos de precios y realizar operaciones de precio límite cerca del punto medio para capturar tendencias de precios a corto plazo y oportunidades de reversión dentro de un marco riguroso de tiempo y gestión de riesgos.
Esta estrategia es solo para referencia y se ajusta en función de la capacidad de asunción de riesgo individual y el entorno del mercado en las transacciones reales.
Aplicable para inversores de línea media y corta que buscan estrategias de negociación estables y sistemáticas, especialmente para los operadores que se centran en el comercio de futuros y variedades de alta liquidez.
El núcleo de la negociación cuantitativa está en la optimización y adaptación continuas, y esta estrategia ofrece a los comerciantes un marco de negociación que vale la pena investigar y mejorar.
/*backtest
start: 2024-03-31 00:00:00
end: 2025-03-29 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Midpoint Crossing Strategy", overlay=true)
// Input for lookback period
lookback = input.int(30, title="Lookback Period", minval=1)
// Input for NYSE trading hours
startHour = 9
startMinute = 30
endHour = 15
endMinute = 0
// Variables to store high, low, and midpoint of the lookback period
var float rangeHigh = na
var float rangeLow = na
var float rangeMid = na
// Calculate high, low, and midpoint based on lookback period
if (bar_index >= lookback)
rangeHigh := ta.highest(high, lookback)
rangeLow := ta.lowest(low, lookback)
rangeMid := (rangeHigh + rangeLow) / 2
// Plot high, low, and midpoint for reference
plot(rangeHigh, color=color.red, title="Range High")
plot(rangeLow, color=color.green, title="Range Low")
plot(rangeMid, color=color.blue, title="Range Mid")
// Time condition for NYSE hours
currentTime = timestamp("GMT-5", year, month, dayofmonth, hour, minute)
startTime = timestamp("GMT-5", year, month, dayofmonth, startHour, startMinute)
endTime = timestamp("GMT-5", year, month, dayofmonth, endHour, endMinute)
// Check if the current time is within NYSE hours
isNYSEHours = currentTime >= startTime and currentTime <= endTime
// Entry conditions (only during NYSE hours)
longCondition = ta.crossover(close, rangeMid) and isNYSEHours
shortCondition = ta.crossunder(close, rangeMid) and isNYSEHours
// Define stop loss and take profit levels based on the range
longStopLoss = rangeLow
longTakeProfit = rangeHigh
shortStopLoss = rangeHigh
shortTakeProfit = rangeLow
// Place limit order at mid-price
if (longCondition and not strategy.opentrades)
strategy.order("Long Limit", strategy.long, limit=rangeMid)
strategy.exit("Take Profit", "Long Limit", limit=longTakeProfit, stop=longStopLoss)
if (shortCondition and not strategy.opentrades)
strategy.order("Short Limit", strategy.short, limit=rangeMid)
strategy.exit("Take Profit", "Short Limit", limit=shortTakeProfit, stop=shortStopLoss)
// Close open positions at 4:00 PM to avoid overnight risk
if (currentTime >= endTime)
strategy.close_all(comment="Close All at 4:00 PM")
// Add a check for open positions
if (strategy.opentrades > 0)
// Ensure no recalculation while a position is open
rangeHigh := na
rangeLow := na
rangeMid := na