
이 전략은 시장의 역동적 영역의 중간 지점에 기반한 고 정밀 거래 방법이며, 특정 시간 범위 내의 가격 변동 특성을 포착하여 정확한 입시 및 출구 시기를 달성합니다. 전략의 핵심은 구성 가능한 회귀 주기를 사용하여 가격 영역의 높고 낮은 점과 중간 지점을 동적으로 계산하고 뉴욕 증권 거래소 거래 시간 내에 제한 가격 거래를 수행하는 것입니다.
이 전략은 다음과 같은 핵심 메커니즘을 기반으로 합니다.
이 전략은 정확한 간격의 중점 돌파와 제한 가격 거래 메커니즘을 통해 거래자에게 체계적이고 규칙이 명확한 거래 방법을 제공합니다. 그것의 핵심 장점은 높은 정밀 입문, 위험 제어 및 시간 선택입니다. 미래의 최적화 방향은 전략의 적응성과 안정성을 향상시키는 데 초점을 맞춘 것입니다.
동적으로 가격 범위를 계산하고 중간 지점 근처에서 제한 가격 거래를 통해 엄격한 시간 및 위험 관리 프레임 워크에서 단기 가격 추세와 역전 기회를 잡습니다.
이 정책은 참고용으로만 사용되며 실제 거래에서는 개인의 위험 부담 능력과 시장 환경에 따라 조정할 필요가 있습니다.
안정적이고 체계적인 거래 전략을 추구하는 중단계 투자자에게 적합하며, 특히 선물과 유동성 높은 품종 거래에 집중하는 거래자에게 적합합니다.
양적 거래의 핵심은 지속적인 최적화와 적응이며, 이 전략은 거래자에게 깊이 연구하고 개선할 가치가 있는 거래 프레임워크를 제공합니다.
/*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