Chiến lược trung bình động động đa kỳ


Ngày tạo: 2023-10-27 16:07:16 sửa đổi lần cuối: 2023-10-27 16:07:16
sao chép: 1 Số nhấp chuột: 647
1
tập trung vào
1617
Người theo dõi

Chiến lược trung bình động động đa kỳ

Chiến lược này tạo ra tín hiệu giao dịch bằng cách chọn động các loại moving average khác nhau và kết hợp chúng với nhiều chu kỳ thời gian.

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

Chiến lược này cho phép chọn năm chỉ số trung bình di chuyển SMA, EMA, TEMA, WMA, HMA, và thiết lập độ dài chu kỳ của đường trung bình. Chiến lược sẽ vẽ các loại đường trung bình khác nhau tùy thuộc vào động lực được chọn.

Cụ thể, chiến lược này sẽ xác định thời gian đo lường dựa trên các tham số đầu vào. Sau đó tính toán năm chỉ số trung bình:

  • SMA đơn giản
  • Chỉ số EMA
  • TEMA - Đường trung bình di chuyển ba chỉ số
  • WMA trung bình di chuyển trọng lượng
  • HMA Hull trung bình di chuyển

Theo lựa chọn, vẽ đường trung bình tương ứng. Khi giá đóng cửa cao hơn đường trung bình, hãy làm nhiều hơn; Khi giá đóng cửa thấp hơn đường trung bình, hãy làm trống.

Chiến lược này có thể tạo ra tín hiệu giao dịch đáng tin cậy hơn bằng cách kết hợp các loại đường trung bình khác nhau để làm mịn dữ liệu giá, lọc tiếng ồn thị trường và cho phép tùy chỉnh độ dài chu kỳ đường trung bình để giao dịch theo xu hướng trong các chu kỳ khác nhau.

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

  • Kết hợp sử dụng nhiều chỉ số đường trung bình, độ tin cậy cao
  • Có thể tùy chỉnh chu kỳ trung tuyến cho các hoạt động chu kỳ khác nhau
  • Tính năng chuyển đổi động, linh hoạt trong các tham số tối ưu hóa
  • Các chiến lược theo dõi xu hướng đơn giản, trực quan và dễ thực hiện

Rủi ro chiến lược

  • Đường trung bình bị tụt hậu, có thể bỏ lỡ điểm chuyển hướng
  • Các tham số cố định có thể dễ bị quá phù hợp, hiệu quả của đĩa cứng có thể kém hơn so với phản hồi
  • Các giai đoạn nhiều đầu tích cực làm nhiều, giai đoạn trống tích cực làm trống, dễ ảnh hưởng đến hiệu quả sử dụng vốn

Bạn có thể giảm thiểu rủi ro bằng cách tối ưu hóa:

  • Kết hợp các chỉ số khác để đánh giá xu hướng, xác định thời điểm nhập học chính xác hơn
  • Các tham số tối ưu hóa đĩa cứng, điều chỉnh chu kỳ đường trung bình để thích ứng với môi trường thị trường khác nhau
  • Tối ưu hóa quản lý vị trí, điều chỉnh vị trí phù hợp với quy mô vốn và kiểm soát rủi ro

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

Chiến lược này có thể được tối ưu hóa theo các hướng sau:

  1. Thêm bộ lọc cho các chỉ số khác để tạo ra tín hiệu giao dịch ổn định hơn

Ví dụ, có thể thêm chỉ số năng lượng, chỉ khi khối lượng giao dịch tăng lên mới tạo ra tín hiệu giao dịch, lọc ra một số đột phá giả.

  1. Tối ưu hóa logic ra sân

Có thể thiết lập một kênh, chỉ vào khi giá vượt qua kênh; thiết lập một đường dừng lỗ, giá chạm đường dừng lỗ sau khi thanh toán. Điều này có thể làm giảm tổn thất không cần thiết.

  1. Chu kỳ trung bình điều chỉnh động

Có thể điều chỉnh chu kỳ đường trung bình theo tình hình thị trường, sử dụng đường trung bình chu kỳ dài khi xu hướng rõ ràng hơn, sử dụng đường trung bình chu kỳ ngắn khi kết thúc.

  1. Tối ưu hóa chiến lược quản lý tài chính

Bạn có thể điều chỉnh kích thước vị trí tùy theo trường hợp rút tiền, giảm vị trí khi rút tiền và tăng vị trí khi lợi nhuận.

Tóm tắt

Chiến lược này được sử dụng kết hợp nhiều chỉ số đường trung bình, kết hợp với nhiều chu kỳ thời gian, tạo ra hiệu quả theo dõi xu hướng ổn định hơn. Có nhiều không gian tối ưu hóa chiến lược, có thể cải thiện từ các khía cạnh của bộ lọc nhập cảnh, cách thoát ra, tối ưu hóa tham số, để chiến lược có hiệu quả tốt hơn trong đĩa thật.

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