Chiến lược giao dịch theo dõi thông minh dựa trên đường trung bình động kép


Ngày tạo: 2024-02-18 15:58:08 sửa đổi lần cuối: 2024-02-18 15:58:08
sao chép: 2 Số nhấp chuột: 505
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch theo dõi thông minh dựa trên đường trung bình động kép

Tổng quan

Chiến lược giao dịch theo dõi thông minh hai đường cong là một chiến lược theo dõi xu hướng dựa trên đường cong và một chỉ số cụ thể. Chiến lược này sử dụng hai thiết lập tham số khác nhau để xây dựng kênh bằng đường cong và kết hợp với các chỉ số OTT để thiết lập giới hạn trên và dưới của kênh để thực hiện theo dõi thông minh về xu hướng giá.

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

Chiến lược này chủ yếu sử dụng hai trung bình di động và các chỉ số OTT để xây dựng kênh thích ứng, các nguyên tắc cụ thể như sau:

  1. Tính đường MAvg nhanh, với giá đóng cửa CLOSE và đường trung bình tùy chỉnh là đầu vào, có chiều dài 5;

  2. Theo MAvg và tỷ lệ phần trăm thiết lập, tính toán đường dẫn đường dài và đường ngắn ở vị trí Stop;

  3. Tính toán giá kênh OTT dựa trên trạng thái trống, tính toán MT di động kênh trong chỉ số OTT;

  4. Khi giá phá vỡ OTT, nó sẽ tạo ra tín hiệu giao dịch.

Việc xây dựng các kênh thích ứng cho phép chiến lược theo dõi xu hướng thay đổi giá trong thời gian thực và tạo ra tín hiệu giao dịch.

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

Chiến lược này có những ưu điểm sau:

  1. Cấu trúc kênh song song, có thể nắm bắt được xu hướng giá một cách hiệu quả;
  2. Các chỉ số OTT sẽ thiết lập các lỗ hổng di động trên kênh và kiểm soát rủi ro.
  3. Cấu trúc kênh thích ứng, có thể phản ứng nhanh với sự thay đổi giá;
  4. Các tham số chiến lược được thiết lập linh hoạt, có thể được tối ưu hóa cho các giống và chu kỳ khác nhau.

Rủi ro chiến lược

Chiến lược này cũng có một số rủi ro:

  1. Các đường cong có thể tạo ra tín hiệu sai;
  2. Thiết lập các tham số OTT không đúng cách có thể quá quyết liệt hoặc bảo thủ, ảnh hưởng đến hiệu suất của chiến lược;
  3. Chiến lược chỉ dựa trên các chỉ số kỹ thuật, không kết hợp các yếu tố cơ bản.

Đối với các rủi ro trên, có thể cải thiện và tối ưu hóa bằng cách tối ưu hóa tham số, kết hợp với các chỉ số khác hoặc các tín hiệu lọc cơ bản.

Hướng tối ưu hóa chiến lược

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

  1. Tối ưu hóa tham số đường trung bình, chọn các tham số kết hợp phù hợp với giống và chu kỳ;
  2. Tối ưu hóa thông số băng thông kênh, cân bằng độ nhạy và ổn định theo dõi;
  3. Các tín hiệu được lọc dựa trên khối lượng giao dịch;
  4. Đặt lọc hướng giao dịch kết hợp với các điều kiện cơ bản.

Tóm tắt

Chiến lược này nói chung là một chiến lược theo dõi xu hướng dựa trên kênh song song song và chỉ số OTT, ý tưởng cốt lõi là xây dựng kênh thích ứng và tạo tín hiệu giao dịch bằng cách đột phá. Chiến lược này có một số ưu điểm, nhưng cũng có thể cải thiện.

Mã nguồn chiến lược
/*backtest
start: 2023-02-11 00:00:00
end: 2024-02-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="BugRA_Trade_Strategy", shorttitle="BugRA_Trade_Strategy", overlay=true)

// Kullanıcı Girdileri
length = input(5, title="Period", minval=1)
percent = input(1, title="Sihirli Yüzde", type=input.float, step=0.1, minval=0)
mav = input(title="Hareketli Ortalama Türü", defval="VAR", options=["SMA", "EMA", "WMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF"])
wt_n1 = input(10, title="Kanal Periyodu")
wt_n2 = input(21, title="Averaj Uzunluğu")
src = close

// Tarih Aralığı Girdileri
startDate = input(20200101, title="Başlangıç Tarihi (YYYYMMDD)")
endDate = input(20201231, title="Bitiş Tarihi (YYYYMMDD)")

// Tarih Filtresi Fonksiyonu
isDateInRange() => true

// Özel Fonksiyonlar
Var_Func(src, length) =>
    valpha = 2 / (length + 1)
    vud1 = src > src[1] ? src - src[1] : 0
    vdd1 = src < src[1] ? src[1] - src : 0
    vUD = sum(vud1, length)
    vDD = sum(vdd1, length)
    vCMO = (vUD - vDD) / (vUD + vDD)
    varResult = 0.0
    varResult := nz(valpha * abs(vCMO) * src + (1 - valpha * abs(vCMO)) * nz(varResult[1]))
    varResult

Wwma_Func(src, length) =>
    wwalpha = 1 / length
    wwma = 0.0
    wwma := wwalpha * src + (1 - wwalpha) * nz(wwma[1])
    wwma

Zlema_Func(src, length) =>
    zxLag = floor(length / 2)
    zxEMAData = src + (src - src[zxLag])
    zlema = ema(zxEMAData, length)
    zlema

Tsf_Func(src, length) =>
    lrc = linreg(src, length, 0)
    lrs = lrc - linreg(src, length, 1)
    tsf = lrc + lrs
    tsf

getMA(src, length) =>
    ma = mav == "SMA" ? sma(src, length) :
         mav == "EMA" ? ema(src, length) :
         mav == "WMA" ? wma(src, length) :
         mav == "TMA" ? sma(sma(src, ceil(length / 2)), floor(length / 2) + 1) :
         mav == "VAR" ? Var_Func(src, length) :
         mav == "WWMA" ? Wwma_Func(src, length) :
         mav == "ZLEMA" ? Zlema_Func(src, length) :
         mav == "TSF" ? Tsf_Func(src, length) : na

// Strateji Hesaplamaları
MAvg = getMA(src, length)
fark = MAvg * percent * 0.01
longStop = MAvg - fark
longStopPrev = nz(longStop[1], longStop)
longStop := MAvg > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop = MAvg + fark
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := MAvg < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop

dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir
MT = dir==1 ? longStop: shortStop
OTT = MAvg > MT ? MT*(200+percent)/200 : MT*(200-percent)/200

plot(OTT, title="BugRA", color=color.rgb(251, 126, 9))

// Alım ve Satım Koşulları
longCondition = crossover(src, OTT) and isDateInRange()
shortCondition = crossunder(src, OTT) and isDateInRange()

// Strateji Giriş ve Çıkış Emirleri
if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.close("Long")