本策略是一种基于市场动态区间中点的高精度交易方法,通过捕捉价格在特定时间范围内的波动特征,实现精准的入场和出场时机。策略核心是利用可配置的回溯周期,动态计算价格区间的高点、低点和中点,并在纽约证券交易所交易时段内执行限价交易。
策略原理基于以下关键机制: 1. 动态区间计算:通过设定可调整的回溯周期(默认30个K线),实时计算价格的最高点、最低点和中点。 2. 时间约束交易:严格限定在纽约证券交易所交易时段(上午9:30至下午3:00)内进行交易。 3. 中点突破信号:当收盘价格突破区间中点时,产生做多或做空信号。 4. 限价订单策略:在区间中点下单,并设置止盈和止损价格为区间高点和低点。
本策略通过精确的区间中点突破和限价交易机制,为交易者提供了一种系统化、规则明确的交易方法。其核心优势在于高精度入场、风险可控和时间选择性。未来的优化方向将focus于提高策略的自适应性和稳定性。
通过动态计算价格区间并在中点附近进行限价交易,在严格的时间和风险管理框架下,捕捉短期价格趋势和反转机会。
本策略仅供参考,实际交易中需要根据个人风险承受能力和市场环境进行调整。
适用于追求稳定、系统化交易策略的中短线投资者,特别是专注于期指和高流动性品种交易的交易者。
量化交易的核心在于不断优化和适应,本策略为交易者提供了一个值得深入研究和改进的交易框架。
/*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