Chiến lược giao dịch hàng ngày


Ngày tạo: 2023-09-26 20:49:44 sửa đổi lần cuối: 2023-09-26 20:49:44
sao chép: 0 Số nhấp chuột: 611
1
tập trung vào
1617
Người theo dõi

Tóm tắt

Đây là một chiến lược giao dịch đa đầu trống tùy chỉnh cho Bitcoin. Nó cho phép bạn tăng hoặc giảm tùy thuộc vào ngày giao dịch khác nhau trong tuần. Giá có thể có xu hướng di chuyển theo một hướng hoặc hướng khác vào những ngày giao dịch khác nhau trong tuần, chiến lược này cho phép bạn thử nghiệm các ngày giao dịch khác nhau trong một loạt ngày để tận dụng điều này.

Hãy chắc chắn rằng bạn sử dụng biểu đồ lịch sử khi xem biểu hiện và lịch sử giao dịch để đảm bảo kịch bản hoạt động như dự kiến và bạn có được càng nhiều dữ liệu lịch sử càng tốt từ Trading View.

Nguyên tắc chiến lược

Lập luận cốt lõi của chiến lược này là cho phép người dùng chọn giao dịch nhiều lần mỗi ngày trong tuần, giao dịch không có hoặc không giao dịch gì cả.

Đầu tiên, nó cho phép người dùng thiết lập phạm vi ngày đo lường, bao gồm tháng, ngày, năm bắt đầu và tháng, ngày, năm kết thúc.

Sau đó, nó sử dụng một mảng thời gian để lưu trữ các biểu tượng số cho mỗi ngày trong tuần, từ 0 cho ngày chủ nhật đến 6 cho ngày thứ bảy.

Một mảng khác timeframes_options được sử dụng để lưu trữ các tùy chọn cho mỗi ngày để giao dịch nhiều, trống hoặc không. Điều này được thiết lập bằng một tùy chọn đầu vào.

Trong vòng lặp for, chiến lược kiểm tra xem ngày giao dịch hiện tại có phù hợp với một ngày trong mảng thời gian không. Nếu phù hợp và tùy chọn khác với ngày trước, hãy đóng tất cả các vị trí chưa thanh toán trước.

Nếu tùy chọn không phải là nắp nắp, hãy mở vị trí theo hướng tương ứng tùy thuộc vào nhiều đầu hoặc đầu trống được chọn.

Bằng cách này, chiến lược có thể giao dịch nhiều đầu trống trong phạm vi ngày được thiết lập, dựa trên thiết lập mỗi ngày trong tuần.

Phân tích lợi thế

Ưu điểm chính của chiến lược này là cung cấp giao dịch đa đầu không được tùy chỉnh cao. Người dùng có thể tự do chọn hướng giao dịch mỗi ngày trong tuần.

Khác với chiến lược giao dịch hàng tuần cố định, chiến lược này có thể được điều chỉnh một cách linh hoạt. Nếu một số ngày không hoạt động tốt, bạn có thể dễ dàng thay đổi chỉ giao dịch vào những ngày khác.

Phạm vi ngày phản hồi cũng rất linh hoạt, bạn có thể thử nghiệm bất kỳ khoảng thời gian nào mà người dùng chỉ định để xem kết hợp ngày nào có hiệu quả nhất.

Logic giao dịch rất rõ ràng, đơn giản, dễ hiểu và sửa đổi. Người dùng có thể điều chỉnh tham số mà không cần lập trình.

Chiến lược này cũng tự động xóa các vị trí chưa thanh toán khi thay đổi hướng mỗi ngày, tránh rủi ro không cần thiết.

Phân tích rủi ro

Rủi ro chính của chiến lược này là tùy chọn giao dịch hàng ngày của người dùng không nhất thiết phù hợp với tất cả các phạm vi ngày.

Ví dụ, làm việc nhiều ngày trong tuần và làm việc nhiều ngày cuối tuần có thể được chứng minh là hiệu quả trong một khoảng thời gian, nhưng có thể thất bại trong một khoảng thời gian khác.

Do đó, phải cẩn thận kiểm tra các phạm vi ngày khác nhau, không phụ thuộc vào kết quả kiểm tra lại một lần. Điều chỉnh tham số phải được kết hợp với các tình huống thị trường cụ thể.

Rủi ro khác là không thể dừng lỗ khi thay đổi hướng hàng ngày. Điều này có thể dẫn đến sự gia tăng lỗ. Tuy nhiên, chiến lược này cố gắng giảm thiểu vấn đề này bằng cách tự động thanh toán.

Nhìn chung, chiến lược này phụ thuộc nhiều hơn vào tối ưu hóa tham số và cần có đủ thử nghiệm để tìm ra các tham số phù hợp với các điều kiện thị trường khác nhau.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa bằng cách:

  1. Tăng logic dừng lỗ khi thay đổi hướng hàng ngày, thiết lập dừng di chuyển khi vị trí có lợi nhuận, giảm rút lui.

  2. Thêm một bộ lọc để phát tín hiệu khi giá vượt qua đỉnh hoặc đáy của một ngày, tránh giao dịch lặp lại khi không có xu hướng.

  3. Giảm quy mô vị trí trong thời gian biến động cao, tăng vị trí trong thời gian biến động thấp, để kiểm soát rủi ro.

  4. Lựa chọn ngày giao dịch để kết hợp với học máy, xác định xác suất giao dịch hàng ngày dựa trên dữ liệu lịch sử và tạo ra hướng động hàng ngày.

  5. Thêm logic xử lý các sự kiện bất ngờ, chẳng hạn như tạm dừng giao dịch khi xảy ra sự kiện tài chính quan trọng, tránh bị mắc kẹt.

Tóm tắt

Chiến lược này cung cấp khả năng giao dịch đa đầu không rất linh hoạt thông qua lựa chọn hướng hàng ngày. Người dùng có thể tự do kết hợp các thử nghiệm để tìm các tham số tối ưu. Tuy nhiên, chiến lược có yêu cầu tối ưu hóa cao, cần nhiều thử nghiệm để tìm các thiết lập phù hợp với các thị trường khác nhau.

Mã nguồn chiến lược
/*backtest
start: 2022-09-19 00:00:00
end: 2023-09-25 00:00:00
period: 1d
basePeriod: 1h
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/

//@version=4
// strategy("Day of Week Custom Buy/Sell Strategy", overlay=true, currency=currency.USD, default_qty_value=1.0,initial_capital=30000.00,default_qty_type=strategy.percent_of_equity)

frommonth = input(defval = 6, minval = 01, maxval = 12, title = "From Month")
fromday = input(defval = 14, minval = 01, maxval = 31, title = "From day")
fromyear = input(defval = 2021, minval = 1900, maxval = 2100, title = "From Year")

tomonth = input(defval = 12, minval = 01, maxval = 12, title = "To Month")
today = input(defval = 31, minval = 01, maxval = 31, title = "To day")
toyear = input(defval = 2100, minval = 1900, maxval = 2100, title = "To Year")

timeframes = array.new_int(7, 1)
timeframes_options = array.new_string(7, 'None')

array.set(timeframes,0,7)
array.set(timeframes_options,0, input(defval='None', options=['Long','Short','None'], title='sunday'))
array.set(timeframes,1,1)
array.set(timeframes_options,1, input(defval='Long', options=['Long','Short','None'], title='monday'))
array.set(timeframes,2,2)
array.set(timeframes_options,2, input(defval='Long', options=['Long','Short','None'], title='tuesday'))
array.set(timeframes,3,3)
array.set(timeframes_options,3, input(defval='Long', options=['Long','Short','None'], title='wednesday'))
array.set(timeframes,4,4)
array.set(timeframes_options,4, input(defval='None', options=['Long','Short','None'], title='thursday'))
array.set(timeframes,5,5)
array.set(timeframes_options,5, input(defval='None', options=['Long','Short','None'], title='friday'))
array.set(timeframes,6,6)
array.set(timeframes_options,6, input(defval='None', options=['Long','Short','None'], title='saturday'))



for i = 0 to array.size(timeframes) - 1
    
    if dayofweek == array.get(timeframes, i) and array.get(timeframes_options, i) != array.get(timeframes_options, i==0?6:i-1)
        strategy.close_all()

    if dayofweek == array.get(timeframes, i) and array.get(timeframes_options, i)!='None' and array.get(timeframes_options, i) != array.get(timeframes_options, i==0?6:i-1)
        if array.get(timeframes_options, i) == 'Long'
            strategy.entry("Long", strategy.long, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
        else if array.get(timeframes_options, i) == 'Short'
            strategy.entry("Short", strategy.short, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))