Chiến lược trung bình động động đa giai đoạn

Tác giả:ChaoZhang, Ngày: 2023-10-27 16:07:16
Tags:

img

Chiến lược này chọn năng động các loại trung bình động khác nhau trên nhiều khung thời gian để tạo ra tín hiệu giao dịch.

Chiến lược logic

Chiến lược này cho phép lựa chọn từ SMA, EMA, TEMA, WMA và HMA, với độ dài thời gian tùy chỉnh. Các loại trung bình động khác nhau sẽ được vẽ theo cách động dựa trên lựa chọn. Nó đi dài khi giá đóng phá vỡ trên mức trung bình động, và đi ngắn khi giá đóng phá vỡ bên dưới.

Cụ thể, chiến lược đầu tiên xác định thời gian backtest dựa trên các thông số đầu vào. sau đó nó tính toán năm loại trung bình động:

  • SMA trung bình di chuyển đơn giản
  • EMA Exponential Moving Average
  • Trung bình Di chuyển Triple Exponential TEMA
  • WMA Đường trung bình di chuyển cân nhắc
  • HMA Hull Moving Average

Đường trung bình động tương ứng được vẽ dựa trên lựa chọn. Nó đi dài khi giá đóng trên đường trung bình động, và đi ngắn khi dưới.

Bằng cách kết hợp các loại trung bình động khác nhau, chiến lược có thể làm mịn dữ liệu giá và lọc ra tiếng ồn thị trường để tạo ra các tín hiệu giao dịch đáng tin cậy hơn.

Ưu điểm

  • Kết hợp nhiều đường trung bình động cho độ tin cậy cao hơn
  • Thời gian tùy chỉnh phù hợp với các khung thời gian giao dịch khác nhau
  • Chuyển đổi năng động của trung bình cho phép tối ưu hóa linh hoạt
  • Dễ dàng và trực quan theo xu hướng phù hợp cho người mới bắt đầu

Rủi ro

  • Sự chậm trễ của các đường trung bình động có thể bỏ lỡ các điểm chuyển đổi xu hướng
  • Việc quá phù hợp với các tham số cố định, hiệu suất thấp trong giao dịch trực tiếp có khả năng
  • Các tín hiệu dài / ngắn có ảnh hưởng đến hiệu quả sử dụng vốn

Các rủi ro có thể được giảm bằng cách:

  • Thêm các chỉ số khác để xác định các mục chính xác hơn
  • Tối ưu hóa thương mại thực của các tham số cho các chế độ thị trường khác nhau
  • Tối ưu hóa quy mô vị trí dựa trên quy mô tài khoản và quản lý rủi ro

Cơ hội gia tăng

Chiến lược có thể được cải thiện trong một số khía cạnh:

  1. Thêm các bộ lọc khác cho tín hiệu ổn định hơn

    ví dụ như các chỉ số khối lượng để tránh các sự đột phá sai mà không có xác nhận khối lượng.

  2. Tối ưu hóa logic nhập và xuất

    Đặt kênh giá và dừng lỗ để giảm lỗ không cần thiết.

  3. Thời gian trung bình động động

    Sử dụng thời gian dài hơn trong xu hướng mạnh và thời gian ngắn hơn trong quá trình củng cố.

  4. Cải thiện quản lý tiền bạc

    Điều chỉnh kích thước vị trí dựa trên rút tiền và thu lợi nhuận.

Kết luận

Chiến lược này kết hợp các đường trung bình động khác nhau trên các khung thời gian để tạo ra các hiệu ứng theo xu hướng tương đối ổn định. Với không gian rộng rãi để tối ưu hóa các mục nhập, lối ra, tham số và quản lý tiền, nó có thể được cải thiện để có hiệu suất thực tế tốt hơn.


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

//@version=3
strategy("MA_strategy ", shorttitle="MA_strategy", overlay=true, initial_capital=100000)

qty = input(100000000, "Buy quantity")

testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")

testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,testStartMin)

testStopYear = input(2099, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)


testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false


ma1 = input( "SMA",title="Select MA", options=["SMA", "EMA","TEMA", "WMA","HMA"])


len1 = input(7, minval=1, title="Period")

s=sma(close,len1)

e=ema(close,len1)


xEMA1 = ema(close, len1)
xEMA2 = ema(xEMA1, len1)
xEMA3 = ema(xEMA2, len1)
t = 3 * xEMA1 - 3 * xEMA2 + xEMA3


f_hma(_src, _length)=>
    _return = wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))

h = f_hma(close, len1)

w = wma(close, len1)

ma = ma1 == "SMA"?s:ma1=="EMA"?e:ma1=="WMA"?w:ma1=="HMA"?h:ma1=="TEMA"?t:na

buy= close>ma
sell= close<ma

alertcondition(buy, title='buy', message='buy')
alertcondition(sell, title='sell', message='sell')

ordersize=floor(strategy.equity/close)

if testPeriod()
    strategy.entry("long",strategy.long,ordersize,when=buy)
    strategy.close("long", when = sell )


    
  









Thêm nữa