
Chiến lược này là một phương pháp giao dịch chính xác cao dựa trên điểm trung bình của khu vực động của thị trường, bằng cách nắm bắt các đặc điểm biến động của giá trong một khoảng thời gian nhất định, để thực hiện thời gian nhập và thoát chính xác. Cốt lõi của chiến lược là sử dụng chu kỳ lùi có thể cấu hình, tính toán động điểm cao, điểm thấp và điểm trung bình của khu vực giá, và thực hiện giao dịch giá giới hạn trong thời gian giao dịch trên Sở Giao dịch Chứng khoán New York.
Các nguyên tắc chiến lược dựa trên các cơ chế then chốt sau:
Chiến lược này cung cấp cho các nhà giao dịch một phương pháp giao dịch có hệ thống, có quy tắc rõ ràng thông qua các cơ chế giao dịch điểm trung bình và giá giới hạn chính xác. Ưu điểm cốt lõi của nó là độ chính xác cao, rủi ro có thể kiểm soát được và thời gian chọn lọc.
Bằng cách tính toán động phạm vi giá và giao dịch giá giới hạn gần điểm trung tâm, nắm bắt xu hướng giá ngắn hạn và cơ hội đảo ngược trong khung quản lý thời gian và rủi ro nghiêm ngặt.
Chính sách này chỉ được sử dụng để tham khảo và cần được điều chỉnh theo khả năng chịu rủi ro cá nhân và môi trường thị trường trong giao dịch thực tế.
Thích hợp cho các nhà đầu tư ngắn và trung bình theo đuổi chiến lược giao dịch ổn định và có hệ thống, đặc biệt là các nhà giao dịch chuyên giao dịch trong các loại hợp đồng tương lai và có tính thanh khoản cao.
Cốt lõi của giao dịch định lượng là tối ưu hóa và thích ứng liên tục, chiến lược này cung cấp cho các nhà giao dịch một khuôn khổ giao dịch đáng để nghiên cứu và cải thiện sâu hơn.
/*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