Dựa trên chiến lược theo dõi xu hướng nhiều khung thời gian


Ngày tạo: 2024-02-19 11:13:22 sửa đổi lần cuối: 2024-02-19 11:13:22
sao chép: 1 Số nhấp chuột: 545
1
tập trung vào
1617
Người theo dõi

Dựa trên chiến lược theo dõi xu hướng nhiều khung thời gian

Tổng quan

Chiến lược này là một chiến lược theo dõi xu hướng sử dụng sự đồng ý của nhiều chỉ số khung thời gian. Nó sẽ mở vị trí tăng hoặc giảm đồng thời khi đường ngày, đường 10, đường 15 và đường 30 tăng hoặc giảm, sử dụng phương pháp dừng lỗ động.

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

Chiến lược này sử dụng bốn khung thời gian: đường ngày, đường ngày 10, đường ngày 15 và đường ngày 30 để xác định xu hướng. Nó được đánh giá là lạc quan khi giá đóng cửa của bốn khung thời gian cao hơn giá mở và giảm khi giá đóng cửa của bốn khung thời gian thấp hơn giá mở.

Khi đánh giá là đắt, hãy mua nhiều; khi đánh giá là giảm, hãy mua bán. Sau khi mua, sử dụng KC Channel để dừng lỗ động.

Cụ thể, chiến lược đánh giá xu hướng bằng cách so sánh giá mở và giá đóng trong các khung thời gian khác nhau. Nếu giá mở thấp hơn giá đóng, khung thời gian đó là lạc quan, được thể hiện bằng màu xanh lá cây. Nếu giá mở cao hơn giá đóng, khung thời gian đó là giảm, được thể hiện bằng màu đỏ.

Khi bốn khung thời gian đều giảm, chiến lược sẽ mở thêm vị trí; khi bốn khung thời gian đều giảm, chiến lược sẽ mở vị trí.

Lợi thế chiến lược

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

  2. Phương pháp dừng lỗ động có thể bảo vệ tối đa tài chính

  3. Điều kiện nhập học nghiêm ngặt, có thể giảm giao dịch không cần thiết, tránh quá nhiều chi phí điểm trượt

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

Rủi ro chiến lược

  1. Điều kiện nhập học quá nghiêm ngặt, bạn có thể bỏ lỡ một số cơ hội

  2. Thiết lập stop loss không đúng có thể quá cực đoan hoặc bảo thủ

  3. Không chọn đúng khung thời gian, có thể không phù hợp với xu hướng dài hạn hoặc ngắn hạn hơn

  4. Sự kiện đột ngột dẫn đến sự đảo ngược nhanh chóng và không thể ngăn chặn

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

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

  2. Kiểm tra các thiết lập tham số khác nhau để tối ưu hóa stop loss

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

  4. Tăng sự chú ý đến các sự kiện lớn, tránh thiệt hại do các sự kiện bất ngờ

Tóm tắt

Chiến lược này kết hợp nhiều khung thời gian để đánh giá xu hướng, điều kiện nhập cảnh nghiêm ngặt kết hợp với dừng động, nhằm đạt được lợi nhuận ổn định. Có những cơ hội có thể bị bỏ lỡ và các vấn đề về kiểm soát rủi ro không phù hợp. Bước tiếp theo sẽ tiếp tục tối ưu hóa các thiết lập tham số để tăng sự ổn định của chiến lược.

Mã nguồn chiến lược
/*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)