Chiến lược giao dịch đường trung bình động động lượng kép


Ngày tạo: 2024-02-19 14:36:37 sửa đổi lần cuối: 2024-02-19 14:36:37
sao chép: 1 Số nhấp chuột: 590
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch đường trung bình động động lượng kép

Tổng quan

Chiến lược giao dịch hai động lực đồng tuyến là một chiến lược sử dụng chỉ số OTT và chỉ số dao động Wavetrend. Nó kết hợp với chỉ số OTT được phát triển bởi giáo viên Anıl Özekşi và chỉ số dao động Wavetrend của lonestar108 để tạo thành một chỉ số giao dịch thành công. Chiến lược này có thể được thực hiện trong thị trường hai chiều.

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

Chiến lược giao dịch theo đường thẳng năng lượng nhị phân đầu tiên tính toán đường trung tâm của dải Brin, tức là đường trung bình di chuyển MAvg. Sau đó, tính toán điểm dừng chân dài và điểm dừng chân ngắn theo phạm vi phần trăm và chu kỳ mà người dùng đặt.

Cụ thể, chỉ số cốt lõi của chiến lược này là chỉ số OTT. Chỉ số OTT bao gồm đường trung bình và đường biên, điều chỉnh vị trí của đường biên theo mức độ biến động của thị trường theo một số thuật toán. Khi giá giảm xuống đường biên OTT, hãy tháo; khi giá vượt qua đường biên OTT, hãy tháo.

Chiến lược này đồng thời sử dụng chỉ số Wavetrend để xác định xu hướng của giá, chỉ cần không làm nhiều nếu xác định xu hướng giảm; nếu xác định xu hướng tăng, chỉ cần không làm nhiều.

Phân tích lợi thế

Chiến lược giao dịch đường thẳng động lực kép kết hợp các lợi thế của các chỉ số trung bình di chuyển, băng Brin và OTT, có thể tự động điều chỉnh vị trí dừng lỗ, giảm khả năng dừng lỗ được kích hoạt. Đồng thời kết hợp các chỉ số đánh giá xu hướng để tránh bị mắc kẹt trong xu hướng dao động.

Các lợi thế chính của chiến lược này là:

  1. Có thể tự động điều chỉnh điểm dừng để kiểm soát rủi ro
  2. Chỉ số OTT có thể đánh giá chính xác hơn điểm đảo ngược
  3. Kết hợp các chỉ số đánh giá xu hướng để tránh bị mắc kẹt trong thị trường biến động
  4. Các quy tắc tương đối đơn giản, rõ ràng và dễ sử dụng

Phân tích rủi ro

Chiến lược giao dịch theo đường thẳng của Binary Options cũng có một số rủi ro, chủ yếu tập trung vào các khía cạnh sau:

  1. Trong trường hợp cực đoan, đường dừng có thể bị phá vỡ, gây ra tổn thất lớn
  2. Tín hiệu đảo ngược của chỉ số OTT không nhất thiết phải chính xác, có thể xảy ra tín hiệu trục trặc
  3. Có thể đánh giá xu hướng sai và mất nhiều tiền trong một đợt dao động xuống.
  4. Thiết lập tham số không đúng cũng ảnh hưởng đến hiệu quả của chính sách

Các biện pháp đối phó chính là:

  1. Giảm mức độ dừng lỗ một cách thích hợp để đảm bảo đường dừng lỗ không dễ dàng được kích hoạt
  2. Kết hợp các chỉ số khác để đánh giá độ tin cậy của tín hiệu OTT, tránh tín hiệu giả
  3. Điều chỉnh các tham số phù hợp để đánh giá xu hướng đáng tin cậy hơn
  4. Tối ưu hóa các tham số, tìm các tham số kết hợp tốt nhất

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

Tuy nhiên, chiến lược giao dịch đồng tuyến của Binance vẫn có thể được tối ưu hóa hơn:

  1. Có thể xem xét kết hợp với các chỉ số khác để tăng độ chính xác của tín hiệu đánh giá
  2. Có thể nghiên cứu các thuật toán dừng lỗ thích ứng, cho phép đường dừng lỗ được điều chỉnh theo mức độ biến động của thị trường
  3. Có thể thêm vào chỉ số khối lượng giao dịch để tránh lượng phá vỡ giả thấp
  4. Bạn có thể kiểm tra các loại trung bình di chuyển khác nhau để tìm đường trung bình phù hợp nhất.
  5. Bạn có thể thử các phương pháp tự động tối ưu hóa tham số như học máy

Tóm tắt

Chiến lược giao dịch đồng bộ năng lượng động kép tích hợp các ưu điểm của nhiều chỉ số, có thể tự động điều chỉnh mức dừng lỗ, đánh giá tín hiệu đảo ngược, nhận ra hướng xu hướng. Nó có khả năng kiểm soát rủi ro mạnh mẽ, dễ hiểu sử dụng và các lợi thế khác.

Mã nguồn chiến lược
/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 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")