Chiến lược giao dịch giờ vàng tự động xác định thời điểm nào trong ngày phù hợp nhất để mua và bán thông qua dữ liệu lịch sử và phát tín hiệu giao dịch vào thời điểm tương ứng. Chiến lược này sử dụng chỉ số ROC để tính toán mức tăng và giảm của đường K trong các thời điểm khác nhau, sau đó đánh giá hiệu quả giao dịch trong các thời điểm khác nhau để tìm ra thời điểm mua và bán tốt nhất.
Sử dụng thời gian hiện tại để có được số giờ hiện tại now_hour.
Sử dụng chỉ số ROC để tính toán giá trị K-line mỗi giờ.
Tính toán indicator với tích lũy nhân của now_hour buy_hourXindicator_cum。
Tính tích lũy và mua_indicator_cum của chỉ số.
Thời gian mua tốt nhất buy_hour = buy_hourXindicator_cum / buy_indicator_cum。
Đồng thời tính toán thời gian bán hàng tốt nhất sell_hour.
So sánh now_hour với buy_hour và sell_hour để xác định thời gian hiện tại là thời gian tốt nhất để mua hoặc bán.
Các tín hiệu tương ứng được phát ra vào thời điểm mua và bán tốt nhất.
Hiển thị thời gian mua và bán tốt nhất bằng màu nền khác nhau.
Ưu điểm lớn nhất của chiến lược này là có thể tự động xác định thời gian giao dịch phù hợp nhất trong ngày. Không cần quan sát dữ liệu lịch sử bằng tay để xác định thời gian giao dịch tốt nhất, tiết kiệm rất nhiều thời gian và công sức.
Ngoài ra, chiến lược này sử dụng hiệu quả chỉ số ROC. Bằng cách tính toán tỷ lệ tăng/tăng của đường K mỗi giờ, có thể đánh giá chính xác hơn hiệu quả giao dịch trong các khoảng thời gian khác nhau. Chỉ số ROC nhạy cảm với biến động đối phương và có thể phản ánh sự thay đổi của thị trường.
Rủi ro lớn nhất của chiến lược này nằm ở sự hạn chế của chỉ số ROC. ROC chỉ xem xét tỷ lệ biến đổi giá và không nhạy cảm với sự thay đổi khối lượng giao dịch.
Ngoài ra, chiến lược được sử dụng để đo lại thời điểm dữ liệu lịch sử tìm ra giao dịch tốt nhất. Tuy nhiên, quy tắc lịch sử không nhất thiết phải áp dụng cho thị trường hiện tại. Thị trường có thể có thay đổi cấu trúc và quy tắc giao dịch ban đầu không còn áp dụng. Điều này đòi hỏi phải điều chỉnh các tham số cho hoạt động thị trường hiện tại, chứ không phải là hoàn toàn phụ thuộc vào kết quả đo lại.
Đối với điều này, bạn có thể xem xét tính toán tổng hợp kết hợp với các chỉ số khác, chẳng hạn như khối lượng giao dịch, để có được sự đánh giá toàn diện hơn về tình trạng thị trường. Ngoài ra, cần phải thực hiện thử nghiệm điều chỉnh tham số cho thị trường hiện tại để đảm bảo tín hiệu giao dịch phù hợp với tình trạng thị trường mới.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Cố gắng sử dụng các chỉ số khác thay cho chỉ số ROC, chẳng hạn như khối lượng giao dịch, để tìm ra các chỉ số phù hợp hơn để tính toán thời gian mạnh.
Thêm các điều kiện lọc khác, sử dụng đường trung bình, chỉ số biến động để đánh giá xu hướng địa phương và tránh giao dịch không hợp lý.
Tối ưu hóa tham số chu kỳ thời gian, kiểm tra ảnh hưởng của các tham số chu kỳ thời gian khác nhau đối với kết quả.
Tăng cơ chế dừng lỗ, thiết lập điểm dừng lỗ hợp lý, kiểm soát rủi ro giao dịch.
Kết hợp các phương pháp học máy để tìm ra thời gian giao dịch tối ưu với lượng dữ liệu lớn hơn.
Chiến lược thời gian vàng của giao dịch này nói chung là một phương pháp khả thi và hiệu quả. Nó sử dụng chỉ số ROC để tự động xác định thời gian mua và bán tốt nhất mỗi ngày, tiết kiệm rất nhiều thời gian và công sức. Nhưng chúng ta cũng phải chú ý đến giới hạn của chỉ số ROC và lịch sử, điều chỉnh tham số cho tình hình thị trường hiện tại. Ngoài ra, chiến lược này còn nhiều chỗ để cải thiện, có thể được tối ưu hóa ở nhiều khía cạnh, làm cho tín hiệu chính xác và đáng tin cậy hơn.
/*backtest
start: 2023-08-19 00:00:00
end: 2023-09-18 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mablue (Masoud Azizi)
//@version=5
strategy("Trade Hour V3",overlay=false)
timezone = input.string("Europe/London",options=["America/New_York","America/Los_Angeles","America/Chicago","America/Phoenix","America/Toronto","America/Vancouver","America/Argentina" ,"America/El_Salvador","America/Sao_Paulo","America/Bogota","Europe/Moscow","Europe/Athens","Europe/Berlin","Europe/London","Europe/Madrid","Europe/Paris","Europe/Warsaw","Australia/Sydney","Australia/Brisbane","Australia/Adelaide","Australia/ACT","Asia/Almaty","Asia/Ashkhabad","Asia/Tokyo","Asia/Taipei","Asia/Singapore","Asia/Shanghai","Asia/Seoul","Asia/Tehran","Asia/Dubai","Asia/Kolkata","Asia/Hong_Kong","Asia/Bangkok","Pacific/Auckland","Pacific/Chatham","Pacific/Fakaofo","Pacific/Honolulu"] )
source = input.source(close)
tp = input.int(1,"ROC Timeperiod")
now_hour = hour(time,timezone)
indicator = ta.roc(source,tp)
buy_hourXindicator_cum = ta.cum(indicator* now_hour)
buy_indicator_cum = ta.cum(indicator)
buy_hour = buy_hourXindicator_cum/buy_indicator_cum
sell_hourXindicator_cum = ta.cum( (1/indicator ) * now_hour)
sell_indicator_cum = ta.cum(1/indicator)
sell_hour = sell_hourXindicator_cum/sell_indicator_cum
plot(buy_hour,color=color.green)
plot(sell_hour,color=color.red)
plot(now_hour,color=color.gray,display=display.none)
bool isLongBestHour = now_hour==math.round(buy_hour)
bool isShortBestHour = now_hour==math.round(sell_hour)
bgcolor(isLongBestHour ? color.new(color.green,80) : na)
bgcolor(isShortBestHour ? color.new(color.red,80) : na)
strategy.order("buy", strategy.long, when =isLongBestHour)
strategy.order("sell", strategy.short, when = isShortBestHour)