Chiến lược giao dịch mở cao đóng thấp là một chiến lược theo xu hướng. Nó xác định hướng xu hướng ngắn hạn bằng cách kiểm tra mối quan hệ giữa giá mở và đóng trên biểu đồ nến. Khi xu hướng bắt đầu, nó đi vào các vị trí dài hoặc ngắn để bắt được đà nhanh chóng.
Khái niệm cơ bản là kiểm tra xem giá mở bằng giá thấp nhất hoặc cao nhất của ngọn nến. Một tín hiệu dài được kích hoạt khi giá mở bằng mức thấp. Một tín hiệu ngắn được kích hoạt khi giá mở bằng mức cao. Điều này nhằm mục đích bắt những sự đột phá cho thấy xu hướng ngắn hạn.
Khi một tín hiệu được kích hoạt, một vị trí có kích thước cố định sẽ được mở ngay lập tức. Stop loss được thiết lập dựa trên chỉ số ATR để theo dõi sự biến động của thị trường. Mức thu lợi nhuận là một số lần RR cố định của khoảng cách dừng lỗ từ giá nhập cảnh. Khi giá chạm vào stop loss hoặc take profit, vị trí sẽ được đóng theo đó.
Chiến lược cũng làm phẳng tất cả các vị trí tại thời gian cắt giảm hàng ngày được xác định bởi người dùng, chẳng hạn như 30 phút trước khi thị trường Mỹ đóng cửa.
Những lợi thế chính là:
Sử dụng giá mở / đóng để xác định tín hiệu đột phá nhanh chóng.
Các tín hiệu nhập cảnh rõ ràng dễ thực hiện.
Đánh lỗ kịp thời và lấy lợi nhuận để khóa lợi nhuận và hạn chế tổn thất.
Các vị trí bằng phẳng ở mức cắt giảm hàng ngày để tránh rủi ro khoảng cách qua đêm.
Thị trường trung lập, áp dụng cho ngoại hối, cổ phiếu, tiền điện tử vv
Một số rủi ro cần xem xét:
Dừng lỗ thường xuyên với ATR trong thị trường hỗn loạn.
Phù hợp với các nhạc cụ cụ cụ thể và các phiên mà không có bộ lọc bổ sung.
Mức lợi nhuận cố định có thể hoạt động kém trong xu hướng mạnh.
Thời điểm sai trên các vị trí phẳng có thể bỏ lỡ xu hướng hoặc gây ra tổn thất không cần thiết.
Một số cách để tối ưu hóa thêm:
Thử nghiệm với các kỹ thuật dừng lỗ khác nhau cho các điều kiện thị trường khác nhau.
Thêm bộ lọc sử dụng chỉ số động lực vv để tránh tín hiệu sai.
Điều chỉnh năng động mức lợi nhuận dựa trên biến động thị trường.
Tối ưu hóa thời gian cắt giảm hàng ngày cho các công cụ và phiên giao dịch khác nhau.
Chiến lược phá vỡ mở cao đóng thấp cung cấp một cách đơn giản để thúc đẩy giao dịch. Các quy tắc vào và ra rõ ràng làm cho việc thực hiện và quản lý dễ dàng. Nhưng việc tối ưu hóa thêm các thông số như dừng lỗ, lấy lợi nhuận, bộ lọc sẽ cải thiện độ bền của nó trong nhiều điều kiện thị trường hơn. Được điều chỉnh chi tiết theo thời gian thông qua kiểm tra nghiêm ngặt, nó có tiềm năng đạt được lợi nhuận điều chỉnh rủi ro mạnh mẽ.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // Open-High-Low strategy strategy('Strategy: OLH', shorttitle="OLH", overlay=true) // Inputs slAtrLen = input.int(defval=14, title="ATR Period for placing SL", group="StopLoss settings") showSLLines = input.bool(defval=false, title="Show SL lines in chart", tooltip="Show SL lines also as dotted lines in chart. Note: chart may look untidy.", group="Stolploss settings") // Trade related rrRatio = input.float(title='Risk:Reward', step=0.1, defval=2.0, group="Trade settings") endOfDay = input.int(defval=1500, title="Close all trades, default is 3:00 PM, 1500 hours (integer)", group="Trade settings") mktAlwaysOn = input.bool(defval=true, title="Markets that never closed (Crypto, Forex, Commodity)", tooltip="Some markers never closes. For those cases, make this checked.", group="Trade settings") lotSize = input.int(title='Lot Size', step=1, defval=1, group="Trade settings") // Utils green(open, close) => close > open ? true : false red(open, close) => close < open ? true : false body(open, close) => math.abs(open - close) lowerwick = green(open, close) ? open - low : close - low upperwick = green(open, close) ? high - close : high - open crange = high - low crangep = high[1] - low[1] // previous candle's candle-range bullish = close > open ? true : false bearish = close < open ? true : false // Trade signals longCond = barstate.isconfirmed and (open == low) shortCond = barstate.isconfirmed and (open == high) // For SL calculation atr = ta.atr(slAtrLen) highestHigh = ta.highest(high, 7) lowestLow = ta.lowest(low, 7) longStop = showSLLines ? lowestLow - (atr * 1) : na shortStop = showSLLines ? highestHigh + (atr * 1) : na plot(longStop, title="Buy SL", color=color.green, style=plot.style_cross) plot(shortStop, title="Sell SL", color=color.red, style=plot.style_cross) // Trade execute h = hour(time('1'), syminfo.timezone) m = minute(time('1'), syminfo.timezone) hourVal = h * 100 + m totalTrades = strategy.opentrades + strategy.closedtrades if (mktAlwaysOn or (hourVal < endOfDay)) // Entry var float sl = na var float target = na if (longCond) strategy.entry("enter long", strategy.long, lotSize, limit=na, stop=na, comment="Enter Long") sl := longStop target := close + ((close - longStop) * rrRatio) alert('Buy:' + syminfo.ticker + ' ,SL:' + str.tostring(math.floor(sl)) + ', Target:' + str.tostring(target), alert.freq_once_per_bar) if (shortCond) strategy.entry("enter short", strategy.short, lotSize, limit=na, stop=na, comment="Enter Short") sl := shortStop target := close - ((shortStop - close) * rrRatio) alert('Sell:' + syminfo.ticker + ' ,SL:' + str.tostring(math.floor(sl)) + ', Target:' + str.tostring(target), alert.freq_once_per_bar) // Exit: target or SL if ((close >= target) or (close <= sl)) strategy.close("enter long", comment=close < sl ? "Long SL hit" : "Long target hit") if ((close <= target) or (close >= sl)) strategy.close("enter short", comment=close > sl ? "Short SL hit" : "Short target hit") else if (not mktAlwaysOn) // Close all open position at the end if Day strategy.close_all(comment = "Close all entries at end of day.")