Chiến lược nhiều khung thời gian

Tác giả:ChaoZhang, Ngày: 2024-02-19 11:13:22
Tags:

img

Tổng quan

Chiến lược này sử dụng sự đồng thuận của các chỉ số trên nhiều khung thời gian để theo dõi xu hướng. Nó đi dài hoặc ngắn khi các khung thời gian hàng ngày, 10 ngày, 15 ngày và 30 ngày đồng thời đưa ra tín hiệu tăng hoặc giảm, với dừng lỗ năng động.

Chiến lược logic

Chiến lược đánh giá hướng xu hướng bằng cách sử dụng bốn khung thời gian - hàng ngày, 10 ngày, 15 ngày và 30 ngày. Khi giá đóng cao hơn giá mở trên tất cả bốn khung thời gian, nó chỉ ra tín hiệu tăng. Khi giá đóng thấp hơn giá mở trên tất cả bốn khung thời gian, nó chỉ ra tín hiệu giảm.

Khi tín hiệu tăng, nó đi dài. Khi tín hiệu giảm, nó đi ngắn. Sau khi vào, kênh KC được sử dụng để dừng lỗ năng động.

Cụ thể, chiến lược so sánh giá mở và giá đóng trên các khung thời gian khác nhau để xác định hướng xu hướng. Nếu giá đóng cao hơn giá mở, khung thời gian được coi là tăng và được vẽ màu xanh lá cây. Nếu giá đóng thấp hơn giá mở, khung thời gian được coi là giảm và được vẽ màu đỏ.

Khi tất cả bốn khung thời gian đồng ý về một tín hiệu tăng, chiến lược sẽ mở một vị trí dài. Khi tất cả bốn khung thời gian đồng ý về một tín hiệu giảm, chiến lược sẽ mở một vị trí ngắn. Nó sẽ thoát ra khi chạm vào điểm dừng lỗ hoặc xu hướng đảo ngược.

Ưu điểm

  1. Sử dụng nhiều khung thời gian để xác nhận xu hướng có thể lọc hiệu quả các sự đột phá sai và xác định hướng xu hướng.

  2. Đánh lỗ động có thể tối đa hóa bảo vệ vốn.

  3. Các tiêu chí nhập cảnh nghiêm ngặt làm giảm các giao dịch không cần thiết và chi phí trượt.

  4. Kết hợp nhiều khung thời gian cân bằng tốc độ lợi nhuận và sự ổn định.

Rủi ro

  1. Các tiêu chí nhập học có thể quá nghiêm ngặt, bỏ lỡ một số cơ hội.

  2. Cài đặt stop loss không đúng có thể quá hung hăng hoặc bảo thủ.

  3. Các lựa chọn khung thời gian không phù hợp có thể không phù hợp với xu hướng dài hạn hoặc ngắn hạn.

  4. Các biến đổi đột ngột từ các sự kiện có thể không kích hoạt dừng lỗ.

Các lĩnh vực cải tiến

  1. Tối ưu hóa lựa chọn khung thời gian để cân bằng tốc độ lợi nhuận và sự ổn định.

  2. Kiểm tra các thiết lập tham số khác nhau để tối ưu hóa mức dừng lỗ.

  3. Thêm các thuật toán học máy để giúp đánh giá các điểm đảo ngược.

  4. Theo dõi các sự kiện quan trọng để tránh tổn thất từ sự đảo ngược đột ngột.

Tóm lại

Chiến lược này tích hợp các phán quyết trên nhiều khung thời gian, với các tiêu chí nhập cảnh nghiêm ngặt và dừng động, nhằm mục đích lợi nhuận ổn định. Nó có nguy cơ bỏ lỡ cơ hội và kiểm soát rủi ro không phù hợp. Bước tiếp theo là tiếp tục tối ưu hóa các tham số cho sự ổn định cao hơn.


/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("[RichG] Easy MTF Strategy v1.1", overlay=false)

TF_1_time = input("D", "Timeframe 1")
TF_2_time = input("10D", "Timeframe 2")
TF_3_time = input("15D", "Timeframe 3")
TF_4_time = input("30D", "Timeframe 4")
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
lengthBB=input(20, title="BB Length")
transaction_size = input(1, "Contract/Share Amount")

src = close, len = 20


out = sma(src, len)
width = 5
upcolor = green
downcolor = red
neutralcolor = blue
linestyle = line


kc() =>
    ma = sma(close, lengthKC)
    range = tr
    rangema = sma(range, lengthKC)
    upperKC = ma + rangema * multKC
    lowerKC = ma - rangema * multKC
    [lowerKC, upperKC] 

 
bb() =>
    source = close 
    basis = sma(source, lengthBB)
    dev = multKC * stdev(source, lengthBB)
    upperBB = basis + dev
    lowerBB = basis - dev
    [upperBB, lowerBB]

TF_1 = request.security(syminfo.tickerid, TF_1_time, open) < request.security(syminfo.tickerid, TF_1_time, close) ? true:false
TF_1_color = TF_1 ? upcolor:downcolor

TF_2 = request.security(syminfo.tickerid, TF_2_time, open) < request.security(syminfo.tickerid, TF_2_time, close) ? true:false
TF_2_color = TF_2 ? upcolor:downcolor

TF_3 = request.security(syminfo.tickerid, TF_3_time, open) < request.security(syminfo.tickerid, TF_3_time, close) ? true:false
TF_3_color = TF_3 ? upcolor:downcolor


TF_4 = request.security(syminfo.tickerid, TF_4_time, open) < request.security(syminfo.tickerid, TF_4_time, close) ? true:false
TF_4_color = TF_4 ? upcolor:downcolor

TF_global = TF_1 and TF_2 and TF_3 and TF_4 
TF_global_bear = TF_1 == false and TF_2 == false and TF_3 == false and TF_4 == false
TF_global_color = TF_global ? green : TF_global_bear ? red : white
TF_trigger_width = TF_global ? 6 : width

plot(1, style=linestyle, linewidth=width, color=TF_1_color)
plot(5, style=linestyle, linewidth=width, color=TF_2_color)
plot(10, style=linestyle, linewidth=width, color=TF_3_color)
plot(15, style=linestyle, linewidth=width, color=TF_4_color)
plot(25, style=linestyle, linewidth=4, color=TF_global_color)    

exitCondition_Long = TF_global_bear 
exitCondition_Short = TF_global

longCondition = TF_global
if (longCondition)
    strategy.entry("MTF_Long", strategy.long, qty=transaction_size)

shortCondition = TF_global_bear
if (shortCondition)
    strategy.entry("MTF_Short", strategy.short, qty=transaction_size)

[kc_lower,kc_upper] = kc()

strategy.close("MTF_Long", when=close < kc_upper)
strategy.close("MTF_Short", when=close > kc_lower)


Thêm nữa