Bước qua chiến lược thoát nạn

Tác giả:ChaoZhang, Ngày: 2023-10-12 16:47:55
Tags:

Tổng quan

Chiến lược chéo trung bình động là một chiến lược giao dịch định lượng rất phổ biến. Nó sử dụng chéo vàng và chéo chết của trung bình động để xác định xu hướng và lợi nhuận. Khi trung bình động ngắn hạn vượt qua trên trung bình động dài hạn, nó báo hiệu xu hướng tăng, và một vị trí dài có thể được thực hiện. Khi trung bình động ngắn hạn vượt qua dưới trung bình động dài hạn, nó báo hiệu xu hướng giảm, và một vị trí ngắn có thể được thực hiện.

Chiến lược logic

Chiến lược này dựa trên thập giá vàng và thập giá chết của đường trung bình động để xác định các điểm vào và ra.upOrDownlongOrShortđể xác định dài hoặc ngắn;percentInputđể thiết lập tỷ lệ phần trăm ngưỡng thay đổi giá;closePositionDaysđể thiết lập số ngày để giữ vị trí.

Lý thuyết cốt lõi là: tính toán mức tăng/giảm của ngày hôm nay so với ngày hôm qua. Nếu nó đạt đến tỷ lệ phần trăm ngưỡng đầu vào, một tín hiệu giao dịch sẽ được kích hoạt. Nếu đó là một tín hiệu dài, khi giá ngày hôm nay tăng hơn ngưỡng so với ngày hôm qua, đi dài. Nếu đó là một tín hiệu ngắn, khi giá ngày hôm nay giảm hơn ngưỡng so với ngày hôm qua, đi ngắn.

Sau khi mua/mua, ngày nhập cảnh và 4 ngày tiếp theo sẽ được đánh dấu bằng màu sắc trên biểu đồ.

Ưu điểm

  • Sử dụng đường chéo trung bình động để xác định xu hướng là một phương pháp trưởng thành và đáng tin cậy
  • Định nghĩa chiến lược đơn giản và rõ ràng, dễ hiểu và thực hiện
  • Tần số có thể được điều khiển bằng cách điều chỉnh các thông số
  • Cơ chế dừng lỗ tự động kiểm soát rủi ro hiệu quả

Rủi ro

  • Các đường trung bình động có tác dụng chậm, có thể bỏ lỡ thời điểm tốt nhất của những thay đổi giá nhanh chóng
  • Sự biến động giá có thể xảy ra trong ngắn hạn, tạo ra các tín hiệu không cần thiết
  • Cài đặt tham số không phù hợp có thể ảnh hưởng đến hiệu suất chiến lược
  • Không thể phản ứng hiệu quả với tác động của các sự kiện bất ngờ

Quản lý rủi ro:

  1. Tối ưu hóa các thông số trung bình động, thời gian dài hơn giúp lọc tiếng ồn
  2. Tăng tỷ lệ phần trăm ngưỡng để giảm các giao dịch không cần thiết
  3. Kiểm tra các khoảng thời gian giữ khác nhau để kiểm soát tổn thất đơn
  4. Kết hợp với các chỉ số khác để xác nhận thêm tín hiệu

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

  • Xem xét sử dụng EMA, DMA thay vì SMA để làm cho nó nhạy cảm hơn
  • Thêm các cơ chế dừng lỗ, ví dụ như dừng lỗ khi phá vỡ mức trung bình
  • Thêm các chỉ số kỹ thuật khác như MACD, KDJ cho sự kết hợp, cải thiện tỷ lệ thắng
  • Thử các phương pháp học máy để tự động tối ưu hóa các thông số
  • Tối ưu hóa thời gian vào và ra, chẳng hạn như thoát, vv

Tóm lại

Chiến lược chuyển trung bình chéo là một chiến lược giao dịch định lượng rất đơn giản và thực tế. Bằng cách đánh giá mối quan hệ giữa xu hướng ngắn hạn và dài hạn, nó lợi nhuận từ bản chất xu hướng của giá tài sản. Chiến lược này dễ thực hiện với logic rõ ràng, và tạo thành nền tảng của nhiều chiến lược giao dịch định lượng. Chúng ta có thể đạt được hiệu suất tốt hơn thông qua điều chỉnh tham số và tối ưu hóa. Nhưng chúng ta cũng cần quản lý rủi ro và tránh lạm dụng.


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

//@version=3
//  Created by Leon Ross

strategy(title = "DaysAfterCertainPercentChangev1", shorttitle = "DACPCv1", overlay = true, 
  pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, 
  calc_on_every_tick=true, initial_capital=100000)
  
//Inputs
longOrShort = input(title="Long=Checked Short=Unchecked", type=bool, defval=true) //long=true, down=false
upOrDown = input(title="Direction of Today vs. Previous day: Up=Checked Down=Unchecked", type=bool, defval=true) //up=true, down=false: this is the direction of days vs previous day
percentInput = input(title="Percent", type=float, defval=4.5)
closePositionDays = input(title="How Many Days to Close Position", defval=4)

//Conditions
//percentUpValue = (close / close[1]) - 1
//percentUp = percentUpValue >= (percentInput/100.0)
//upConditions = percentUp
//percentDownValue = 1- (close / close[1])
//percentDown = percentDownValue >= (percentInput/100.0)
//downConditions = percentDown
upValue = (close / close[1]) - 1
downValue = 1 - (close / close[1])
allConditions = if(upOrDown)
    upValue >= (percentInput/100.0)
else
    downValue >= (percentInput/100.0)
    
//Plots
bgcolor(allConditions ? (upOrDown ? green : red) : na, transp=70)
bgcolor(allConditions ? silver : na, transp=70, offset=1)
bgcolor(allConditions ? silver : na, transp=70, offset=2)
bgcolor(allConditions ? silver : na, transp=70, offset=3)
bgcolor(allConditions ? silver : na, transp=70, offset=4)
//bgcolor(downConditions == 1 ? red : na, transp=70)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=1)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=2)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=3)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=4)

//Entires
if(longOrShort)
    strategy.entry(id = "Long", long = true, when = allConditions) 
else
    strategy.entry(id = "Short", long = false, when = allConditions)

//Exits
if (barssince(allConditions) == closePositionDays)
    if(longOrShort)
        strategy.close("Long")
    else
        strategy.close("Short")




Thêm nữa