Ý tưởng chính của chiến lược đặt hàng theo thời gian là mua và bán tại thời điểm mà người dùng tùy chỉnh. Chiến lược này cho phép người dùng thiết lập một thời điểm chính xác, tại thời điểm đó, họ sẽ bán vị trí hiện tại và mua với giá giới hạn thấp hơn 1% so với giá hiện tại. Điều này có thể thực hiện việc đổi vị trí thường xuyên vào một thời điểm cụ thể mỗi ngày.
Chiến lược này đầu tiên lấy giờ và phút tùy chỉnh của người dùng thông qua hàm input, sau đó sử dụng hàm timestamp để tạo thời gian thực hiện lệnh. Nếu thời gian hiện tại sau thời điểm được chỉ định, nó sẽ kích hoạt hoạt động bán và mua.
Cụ thể, chiến lược này sẽ đánh giá trước tiên liệu thời gian hiện tại có nằm trong phạm vi ngày bắt đầu và ngày kết thúc mà người dùng đã chỉ định hay không. Nếu thỏa mãn, khi đạt đến thời điểm thực hiện lệnh đã chỉ định, sẽ bán vị trí hiện tại tại giá thị trường trước và sau đó mua với giá giới hạn theo 99% giá hiện tại. Điều này sẽ thực hiện việc điều chỉnh lại vị trí tại một mức giá thấp hơn 1% so với giá hiện tại tại một thời điểm cụ thể.
Ưu điểm lớn nhất của chiến lược này là có thể điều chỉnh lại vị trí thường xuyên tại một thời điểm nhất định, không cần thao tác bằng tay, giảm chi phí nhân sự. Ngoài ra, mỗi lần chuyển vị trí mua với giá thấp hơn một chút so với giá hiện tại, bạn có thể có được lợi thế mua siêu thấp nhất định.
Những ưu điểm cụ thể bao gồm:
Hoạt động hoàn toàn tự động, giảm chi phí lao động.
Bạn có thể điều chỉnh lại vị trí của mình một cách thường xuyên tại một thời điểm nhất định.
Mỗi lần đổi vị trí, bạn sẽ có cơ hội mua siêu thấp, chỉ dưới 1% giá hiện tại.
Bạn có thể tùy chỉnh thời gian chuyển giao, điều chỉnh linh hoạt.
Có thể tùy chỉnh ngày bắt đầu và kết thúc của chu kỳ hoãn hàng, thuận tiện để đánh giá lại và tối ưu hóa.
Chiến lược này cũng có một số rủi ro cần lưu ý:
Nếu bạn không chọn đúng thời điểm giao dịch, bạn có thể bỏ lỡ một cơ hội mua tốt hơn hoặc bán vào thời điểm không phù hợp.
Giá mua chỉ thấp hơn 1% giá bán và có thể không có đủ chênh lệch giá mua siêu thấp trong mỗi chu kỳ hoãn vị.
Mua và bán đều được thực hiện theo giá thị trường và có thể bị ảnh hưởng bởi mức độ trượt.
Nếu chiến lược chỉ hoạt động tại một thời điểm nhất định, nó không thể quản lý thị trường trong khoảng thời gian đó.
Việc chuyển giao thường xuyên sẽ dẫn đến phí giao dịch cao hơn.
Giải pháp tương ứng:
Chọn thời điểm chuyển giao thích hợp, kết hợp với các chỉ số kỹ thuật khác.
Các tham số chênh lệch giá mua có thể được tăng lên khi thích hợp.
Cố gắng chọn các loại giao dịch có độ sâu tốt và ít biến động.
Có thể phối hợp với các chiến lược khác để quản lý rủi ro trong thời gian không giao dịch.
Kiểm soát thích hợp tần suất giao dịch, cân bằng lợi thế giao dịch và chi phí giao dịch.
Chiến lược này có thể được tối ưu hóa theo các hướng sau:
Tối ưu hóa lựa chọn thời điểm giao dịch, kết hợp các đặc điểm chu kỳ trong ngày của các loại giao dịch để chọn thời điểm tối ưu.
Thêm các chỉ số kỹ thuật khác để tránh chuyển vị trí vào thời điểm bất lợi. Ví dụ như các chỉ số định hướng kết hợp với đường trung bình di chuyển.
Tối ưu hóa các tham số mua siêu thấp, cân bằng lợi thế và chi phí giao dịch.
Sử dụng tracking stop-loss, quản lý vị trí trong khoảng thời gian chuyển nhượng.
Kết hợp với thuật toán học máy để đào tạo dữ liệu lịch sử, tự động tối ưu hóa thời điểm chuyển nhượng.
Thêm chức năng thu hồi quyền hạn, điều chỉnh điểm điều chỉnh tại các thời điểm như chia cổ phiếu, cổ phần.
Nhìn chung, chiến lược đặt hàng theo thời gian có thể tự động hóa quá trình giao dịch bằng cách điều chỉnh vị trí giao dịch thường xuyên, giảm chi phí vận hành bằng tay. Có nhiều không gian tối ưu hóa chiến lược, có thể được nâng cao từ các khía cạnh như lựa chọn thời điểm điều chỉnh, đặt tham số mua, dừng lỗ và tối ưu hóa thuật toán. Đồng thời, cũng cần chú ý đến rủi ro giao dịch nhất định và thực hiện các biện pháp quản lý rủi ro thích hợp. Nói chung, chiến lược này phù hợp với các nhà giao dịch định lượng theo đuổi việc điều chỉnh vị trí tự động hiệu quả.
/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 1h
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/
// © ytrevor
//@version=4
strategy("Order At Specified Time", overlay=true)
// -- These inputs are for customizing the times of your desired orders -- //
customHour = input(title="Hour for Order Execution", type=input.integer, defval=01, minval=00, maxval=24) //
customMinute = input(title="Minute for Order Execution", type=input.integer, defval=00, minval=00, maxval=59)
targetTime = timestamp("UTC", year, month, dayofmonth, customHour, customMinute, 00) //Order executes at this time
inDateRange = (time >= targetTime) and (time <= targetTime) //Orders are placed everyday at 01:00 UTC, or any other time specified via input
// -- These inputs are for back testing. Feel free to change the start and end dates via input -- //
startDay = input(title="Start Day", type=input.integer, defval=10, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer, defval=2, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer, defval=2021)
endDay = input(title="End Day", type=input.integer, defval=22, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer, defval=3, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer, defval=2021)
betweenDates = true
// -- Order execution -- //
if betweenDates
buyPrice = close*0.99 //Buy at 1% lower than selling price
strategy.entry("Sell", strategy.short, when=inDateRange) //Sell at 01:00 UTC, or at any other time specified via input
strategy.entry("Buy", strategy.long, limit=buyPrice, when=inDateRange) //Buy limit order placed at the same time, 1% lower than selling price