Ý tưởng cốt lõi của chiến lược này là kết hợp các chỉ số thời gian và ATR để thiết lập thời gian mua vào và điểm dừng lỗ. Chiến lược phát hành tín hiệu mua theo thời gian tại thời điểm xác định, sử dụng giá đóng cửa tại thời điểm đó làm giá mua, và sau đó thiết lập điểm dừng lỗ tại giá mua cộng với giá trị ATR. Điều này có thể lọc ra một số thời gian mua không phù hợp trong khi sử dụng ATR để kiểm soát rủi ro.
Chiến lược bao gồm các phần chính sau:
Các thông số đầu vào: bao gồm thời gian mua trong timeTrade và tham số ATR atrLength. timeTrade xác định thời gian mua trong, và atrLength xác định tham số thời gian của ATR.
Tính toán chỉ số ATR: tính toán giá trị ATR atrValue dựa trên tham số atrLength.
Xác định điều kiện mua: tạo tín hiệu mua khi sự kết hợp của giờ và phút bằng timeTrade.
Đưa ra lệnh mua: đi dài khi điều kiện mua được đáp ứng, và ghi lại giá mua giá mua.
Đặt điểm dừng lỗ: điểm dừng lỗ được đặt ở giá mua cộng với giá trị ATR.
Định hình: định hình đường mức dừng lỗ.
Lợi thế lớn nhất của chiến lược này là việc xác nhận hai lần thời gian mua vào và điểm dừng lỗ theo thời gian và chỉ số ATR. Điều này tránh mù quáng theo thị trường để mua vào và kiểm soát rủi ro hiệu quả. Thứ hai, điểm dừng lỗ được đặt bởi ATR thay đổi năng động, có thể thiết lập phạm vi dừng lỗ hợp lý theo biến động của thị trường. Cuối cùng, logic chiến lược đơn giản và dễ hiểu và theo dõi.
Những rủi ro chính của chiến lược này bao gồm:
Việc thiết lập thời gian mua không đúng có thể bỏ lỡ cơ hội mua tốt hơn hoặc mua trên các thị trường không mong muốn.
Các thiết lập tham số không chính xác của ATR sẽ ảnh hưởng đến hiệu suất chiến lược nếu điểm dừng lỗ quá lớn hoặc quá nhỏ.
Không thể theo dõi các xu hướng dài hạn một cách hiệu quả, thích hợp hơn cho các hoạt động ngắn hạn.
Các yếu tố phân tích cơ bản không được xem xét.
Chiến lược này có thể được tối ưu hóa thêm trong các khía cạnh sau:
Xác định thời gian mua lại khoa học hơn bằng cách kết hợp các mô hình đa yếu tố.
Tối ưu hóa cài đặt tham số ATR bằng cách kết hợp các mô hình biến động.
Tăng cơ chế theo dõi xu hướng để thích nghi với thời gian giữ dài hơn.
Bao gồm phân tích cơ bản để đánh giá tính hợp lý của thời gian mua lại.
Nhìn chung, đây là một chiến lược giao dịch nội ngày tần số cao tương đối đơn giản và trực quan. Ý tưởng cốt lõi là sử dụng xác nhận hai lần thời gian và chỉ số ATR để xác định thời gian mua và điểm dừng lỗ. Những lợi thế là rủi ro có thể kiểm soát được và tương đối dễ thực hiện. Nhưng cũng có những vấn đề như không đủ lựa chọn thời gian mua và tối ưu hóa tham số không đầy đủ.
/*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 strategy("Time-based Strategy with ATR Take Profit", overlay=true) // Initialize take profit levels var float takeProfitLevel = na var float takeProfitLevelForSell = na var float buyprice = na var float sellprice = na // Input for the time when the trade should be executed tradeTime = input(0700, "Trade Execution Time (HHMM)", "Specify the time in HHMM format", group="Time Settings") // Calculate ATR for the last 5 minutes atrLength = input(14, "ATR Length", "Specify ATR length", group="ATR Settings") atrValue = request.security(syminfo.tickerid, "5", ta.atr(atrLength)) // Define conditions for buy and sell buyCondition = hour * 100 + minute == tradeTime // and strategy.position_size == 0 sellCondition = hour * 100 + minute == tradeTime // and strategy.position_size > 0 // Execute Buy and Sell orders if (buyCondition) strategy.entry("Buy", strategy.long) buyprice := close takeProfitLevel := buyprice + atrValue strategy.exit("Take Profit BUY", from_entry="Buy", limit =takeProfitLevel) // if (sellCondition) // strategy.entry("Sell", strategy.short) // sellprice := close // takeProfitLevelForSell := sellprice -atrValue // strategy.exit("Take Profit Sell", from_entry="Sell", limit=takeProfitLevelForSell) // Plot horizontal lines for take profit levels plot(takeProfitLevel, color=color.green, title="Take Profit Level (Buy)") plot(takeProfitLevelForSell, color=color.red, title="Take Profit Level (Sell)")