Chiến lược giao dịch chéo TEMA

Tác giả:ChaoZhang, Ngày: 2023-09-12 16:40:50
Tags:

Chiến lược này giao dịch chéo giữa hai đường TEMA của các giai đoạn khác nhau để nắm bắt xu hướng trung hạn. TEMA lọc tiếng ồn tốt để xác định sự đảo ngược xu hướng.

Chiến lược logic:

  1. Tính toán các đường TEMA nhanh và chậm, thường là 5 và 8 giai đoạn.

  2. Đi dài khi TEMA nhanh vượt qua TEMA chậm.

  3. Rời xa khi TEMA nhanh vượt qua dưới TEMA chậm.

  4. Tùy chọn lọc dựa trên hướng nến để tránh giao dịch ngược xu hướng.

  5. Kiểm tra ngược trong một khoảng thời gian cụ thể để mô phỏng tín hiệu lịch sử.

Ưu điểm:

  1. TEMA lọc mạnh tiếng ồn về giá cả.

  2. Sự kết hợp nhanh / chậm nắm bắt các xu hướng trung gian.

  3. Bộ lọc hướng cải thiện tỷ lệ chiến thắng bằng cách tránh các mục ngược xu hướng.

Rủi ro:

  1. TEMA vẫn bị tụt lại, có thể thiếu những mục xuất sắc nhất.

  2. Cần điều chỉnh tham số để phù hợp hoàn hảo.

  3. Khó duy trì tín hiệu trên các thị trường khác nhau.

Tóm lại, chiến lược này vượt qua các đường TEMA để giao dịch xu hướng với bộ lọc tiếng ồn để ổn định.


/*backtest
start: 2022-09-11 00:00:00
end: 2023-09-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Tema",overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075)
startP = timestamp(input(2017, "Start Year"), input(12, "Start Month"), input(17, "Start Day"), 0, 0)
end   = timestamp(input(9999, "End Year"),   input(1, "End Month"),   input(1, "End Day"),   0, 0)
_testPeriod() =>
    iff(time >= startP and time <= end, true, false)

tema_length_1 = input(5, "Fast TEMA")
tema_length_2 = input(8, "Slow TEMA")
usedir       = input(true, "Use bar's direction ?" )
dirtime      = input(2,"direction bars")

tema(sec, length)=>
    tema1= ema(sec, length)
    tema2= ema(tema1, length)
    tema3= ema(tema2, length)
    tema = 3*tema1-3*tema2+tema3

tema1 = tema(hlc3, tema_length_1)
tema2 = tema(hlc3, tema_length_2)

dir=if close/close[dirtime] > 1
    1
else
    -1

plot(tema1, color=color.green, transp=50)
plot(tema2, color=color.red, transp=50)


up =  crossover(tema1, tema2) 
down = crossunder(tema1, tema2)

long_condition =  up and (usedir ? dir==1 : true) and _testPeriod()
strategy.entry('BUY', strategy.long, when=long_condition)  
 
short_condition =  down
strategy.close('BUY', when=short_condition)

Thêm nữa