
Esta estratégia é uma estratégia de negociação de alta precisão baseada no ponto médio de uma faixa dinâmica do mercado, que permite o tempo preciso de entrada e saída, capturando as características de flutuação dos preços em um determinado período de tempo. O núcleo da estratégia é usar um ciclo de retrocesso configurável, calcular dinamicamente os pontos altos, baixos e médios da faixa de preços e executar a negociação de preços limitados durante o período de negociação da New York Stock Exchange.
A estratégia baseia-se nos seguintes mecanismos fundamentais:
A estratégia oferece aos traders uma forma de negociação sistematizada e com regras claras, através de um mecanismo de negociação de ponto médio e preço de limite em intervalos precisos. Sua principal vantagem é a alta precisão de entrada, o controle de risco e a seletividade do tempo.
A negociação de preços limitados é feita através do cálculo dinâmico de intervalos de preços e perto dos pontos médios, para capturar tendências de preços de curto prazo e oportunidades de reversão, dentro de um rigoroso quadro de gestão de tempo e risco.
Esta estratégia é apenas para referência e precisa ser ajustada de acordo com a tolerância individual ao risco e as condições do mercado nas negociações reais.
Aplica-se a investidores de linha média e curta que buscam estratégias de negociação estáveis e sistemáticas, especialmente para os que se concentram em negociações de futuros e variedades de alta liquidez.
O núcleo da negociação quantitativa está na otimização e adaptação contínua. Esta estratégia oferece aos comerciantes uma estrutura de negociação que vale a pena estudar e melhorar.
/*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