Chiến lược giao dịch chênh lệch trung bình động

Tác giả:ChaoZhang, Ngày: 2023-10-26 16:05:01
Tags:

img

Bài viết này cung cấp một phân tích chuyên sâu về chiến lược giao dịch khoảng cách trung bình động được mã hóa bởi Noro. Chiến lược xác định sự đảo ngược xu hướng bằng cách tính lệch giữa giá đóng cửa và trung bình di chuyển đơn giản, và đạt được mức mua thấp và bán cao.

Chiến lược logic

Chiến lược đầu tiên tính toán trung bình di chuyển đơn giản 3 ngày (SMA). Sau đó nó tính tỷ lệ giá đóng (kết thúc) với SMA trừ một như một chỉ số (ind). Khi ind vượt quá giới hạn tham số đã đặt trước, điều đó có nghĩa là giá đóng đã vượt qua SMA đáng kể và vị trí dài được coi là dài. Khi ind vượt dưới giới hạn, điều đó có nghĩa là giá đóng đã giảm xuống dưới SMA và vị trí ngắn được coi là ngắn.

Chiến lược cũng vẽ trục 0, trục giới hạn và trục giới hạn. Chỉ số ind có màu khác nhau ở các khu vực riêng biệt để hỗ trợ đánh giá. Khi ind vượt qua giới hạn hoặc giới hạn, nó báo hiệu bước dài hoặc ngắn.

Khi tín hiệu dài / ngắn, chiến lược sẽ đóng đầu tiên vị trí đối diện, sau đó mở vị trí dài / ngắn. Khi ind trở lại giữa các trục 0, tất cả các vị trí sẽ được đóng.

Ưu điểm

  1. Sử dụng nguyên tắc giao dịch chênh lệch để nắm bắt sự đảo ngược xu hướng, không giống như các chiến lược theo xu hướng.

  2. Kế hoạch trục chỉ số để đánh giá trực quan vị trí chỉ số và giao lộ.

  3. Tối ưu hóa logic gần, đóng vị trí hiện tại trước khi đảo ngược hướng.

  4. Phạm vi thời gian giao dịch được xác định để tránh các vị trí qua đêm không cần thiết.

  5. Tính linh hoạt để cho phép / vô hiệu hóa giao dịch dài / ngắn.

Rủi ro

  1. Các chiến lược trung bình động có xu hướng tạo ra nhiều giao dịch thua lỗ, đòi hỏi sự kiên nhẫn trong việc giữ.

  2. Mức trung bình động thiếu sự linh hoạt trong việc nắm bắt sự thay đổi giá theo thời gian thực.

  3. Các thông số giới hạn được đặt trước là tĩnh, đòi hỏi phải điều chỉnh cho các sản phẩm và môi trường thị trường khác nhau.

  4. Không thể xác định biến động trong xu hướng, đòi hỏi phải kết hợp với các chỉ số biến động.

  5. Cần tối ưu hóa các quy tắc nắm giữ ví dụ như dừng lỗ, lấy lợi nhuận; hoặc chỉ bắt lỗ hổng ban đầu.

Hướng dẫn cải thiện

  1. Kiểm tra các thiết lập tham số khác nhau ví dụ như thời gian SMA, hoặc trung bình động thích nghi như EMA.

  2. Thêm hướng trung bình động và xác nhận độ dốc để tránh giao dịch vô nghĩa.

  3. Xem xét kết hợp với các chỉ số biến động như Bollinger Bands để tạm dừng giao dịch khi biến động tăng.

  4. Thực hiện các quy tắc kích thước vị trí ví dụ: số lượng cố định, hình kim tự tháp gia tăng, quản lý tiền.

  5. Thiết lập các đường dừng lỗ / lấy lợi nhuận, hoặc tạm dừng các lệnh mới khi dừng lỗ tỷ lệ phần trăm cố định được kích hoạt, để kiểm soát theo rủi ro giao dịch.

Tóm lại

Bài viết này phân tích toàn diện chiến lược giao dịch khoảng cách trung bình động của Noro. Nó sử dụng khoảng cách giá từ tính năng trung bình động và thực hiện trục chỉ số và màu sắc cho thời gian nhập cảnh. Nó cũng tối ưu hóa logic đóng và xác định phạm vi thời gian giao dịch. Tuy nhiên, những điểm yếu vốn có của việc theo dõi trung bình động vẫn còn, đòi hỏi tối ưu hóa thêm các thông số, quy tắc dừng lỗ, kết hợp các chỉ số vv để cải thiện độ bền.


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

//Noro
//2018

//@version=3
strategy(title = "Noro's Shift Close Strategy v1.0", shorttitle = "Shift Close 1.0", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
limit = input(10)
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From Day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To Day")

//Shift MA
sma = sma(ohlc4, 3)
ind = ((close / sma) - 1) * 100

//Oscilator
plot(3 * limit, color = na, transp = 0)
plot(limit, color = black, transp = 0)
plot(0, color = black, transp = 0)
plot(-1 * limit, color = black, transp = 0)
plot(-3 * limit, color = na, transp = 0)
plot(ind, linewidth = 3, transp = 0)
col = ind > limit ? red : ind < -1 * limit ? lime : na
bgcolor(col, transp = 0)

//Signals
size = strategy.position_size
up = ind < -1 * limit
dn = ind > limit
exit = ind > -1 * limit and ind < limit

//Trading
lot = 0.0 
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if exit
    strategy.close_all()

Thêm nữa