Chiến lược dao động của trung bình TEMA cao và thấp

Tác giả:ChaoZhang, Ngày: 2023-11-15 17:49:52
Tags:

img

Tổng quan

Chiến lược này sử dụng các chỉ số TEMA, VWMACD và HMA để nắm bắt xu hướng giảm của Bitcoin. Lý thuyết chính của nó là đi ngắn khi VWMACD vượt dưới 0, giá dưới HMA và TEMA nhanh dưới TEMA chậm. Nó sẽ thoát khỏi vị trí khi VWMACD vượt trên 0, giá trên HMA hoặc TEMA nhanh vượt trên TEMA chậm.

Nguyên tắc

Đầu tiên tính VWMACD (sự khác biệt duy nhất từ MACD thông thường là cách tính trung bình động) và vẽ nó dưới dạng biểu đồ. Sau đó thêm HMA dưới dạng bộ lọc xu hướng. Sau đó tạo và thêm TEMA nhanh (5 giai đoạn) và TEMA chậm (8 giai đoạn), và tính sự khác biệt giữa chúng để vẽ xung quanh 0.

Quy tắc nhập khẩu cụ thể là: khi VWMACD dưới 0, giá dưới HMA và TEMA nhanh dưới TEMA chậm, đi ngắn.

Quy tắc thoát cụ thể là: khi VWMACD vượt trên 0, giá vượt trên HMA hoặc TEMA nhanh vượt trên TEMA chậm, vị trí đóng.

Phân tích lợi thế

  • Sử dụng sự kết hợp của ba chỉ số, cải thiện độ tin cậy của tín hiệu giao dịch.
  • VWMACD có thể xác định sự khác biệt và cung cấp đánh giá xu hướng chính xác.
  • HMAfilter như một bộ lọc xu hướng, tránh nhiễu nhiễu.
  • Sự kết hợp TEMA nhanh và chậm bắt được những điểm đảo ngược ngắn hạn.
  • Sử dụng các tham số ngắn hạn, phù hợp với giao dịch tần số cao, bắt được xu hướng giảm ngắn hạn.

Phân tích rủi ro

  • Nhiều chỉ số kết hợp, cần điều chỉnh tham số phức tạp.
  • Mặc dù có bộ lọc HMA, nhưng vẫn cần ngăn chặn các vụ phá vỡ sai trên các thị trường khác nhau.
  • Thời gian ngắn dễ bị nhiễu nhiễu thị trường, tín hiệu sai có thể xảy ra.
  • Cần dừng lỗ nghiêm ngặt để ngăn ngừa tổn thất lớn bất ngờ.
  • Cần tập trung vào kiểm soát chi phí giao dịch, giao dịch tần số cao dễ bị tổn thương bởi ma sát.

Hướng dẫn tối ưu hóa

  • Có thể kiểm tra các kết hợp tham số khác nhau để tìm các tham số tối ưu.
  • Có thể thêm các chỉ số khác như RSI, KD để hỗ trợ.
  • Có thể sử dụng các tham số thích nghi theo các điều kiện thị trường khác nhau.
  • Có thể tối ưu hóa chiến lược dừng lỗ, như dừng lỗ.
  • Có thể kết hợp với các chỉ số âm lượng để tránh lực đẩy không đủ.

Kết luận

Chiến lược này sử dụng sự kết hợp của VWMACD, HMA và TEMA nhanh / chậm để nắm bắt xu hướng giảm ngắn hạn của Bitcoin. Ưu điểm của nó là các tín hiệu tương đối đáng tin cậy và phù hợp với giao dịch tần số cao. Nhưng nó cũng có những rủi ro như điều chỉnh tham số phức tạp, dễ bị nhiễu nhiễu. Tăng cường thêm các combo tham số và thêm các chỉ số phụ trợ có thể làm cho chiến lược ổn định và đáng tin cậy hơn.


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

//@version=4
strategy(title="TEMA_HMA_VWMACD short strategy", shorttitle="Short strategy", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.018, currency='USD')
startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0)
end   = timestamp(9999,1,1,0,0)
_testPeriod() =>
    iff(time >= startP and time <= end, true, false)
    

slow = input(13, "Short period")
fast = input(21, "Long period")
signal = input(5, "Smoothing period")

Fast = ema( volume * close, fast ) / ema( volume, fast ) 
Slow = ema( volume * close, slow ) / ema( volume, slow ) 
Macd = Slow - Fast 
Signal = ema(Macd, signal) 
Hist=Macd-Signal
plot(Hist, color=color.silver, linewidth=1, style=plot.style_histogram)
plot(0, color=color.red)

length = input(400, minval=1, title = "HMA")
hullma = wma(2*wma(close, length/2)-wma(close, length), floor(sqrt(length)))

tema_length_1 = input(5, "Fast moving TEMA")
tema_length_2 = input(8, "Slow moving TEMA")


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)

threshold  = 0
tm = tema1 - tema2
plot_fast = plot(tm, color = tm > 0 ? color.green : color.red)
plot(threshold, color=color.purple)

up =  crossover(tm, 0) 
down = crossunder(tm, 0)

longCondition =  (Hist < 0) and hullma > close and (tema1 < tema2)  and _testPeriod() 
strategy.entry('BUY', strategy.short, when=longCondition)  
 
shortCondition =  (Hist > 0) or hullma < close or up
strategy.close('BUY', when=shortCondition)


// Take profit  
tp = input(1, type=input.float, title='Take Profit (%)')  
sl = input(4, type=input.float, title='Stop Loss (%)')  
strategy.exit('XLong', from_entry='BUY', profit=(close * (tp/100) * (1/syminfo.mintick)), loss=(close * (sl/100) * (1/syminfo.mintick)))

Thêm nữa