Chiến lược giao dịch ngược dựa trên chênh lệch giá chồng chéo

Tác giả:ChaoZhang, Ngày: 2023-12-15 15:47:23
Tags:

img

Tổng quan

Ý tưởng chính của chiến lược này là sử dụng các chênh lệch giá chồng chéo để đánh giá xu hướng thị trường. Nó đi dài khi chênh lệch đảo ngược từ âm sang dương, và đi ngắn khi chênh lệch đảo ngược từ dương sang âm. Nó thuộc về các chiến lược giao dịch đảo ngược.

Nguyên tắc

Chiến lược này đầu tiên tính toán chênh lệch giá chồng chéo (Close-Close [1]), đó là giá đóng ngày hôm nay trừ giá đóng ngày hôm qua, và sau đó tính toán tổng các chênh lệch trong 30 ngày qua. Nó tạo ra tín hiệu dài khi tổng đảo ngược từ âm sang dương, và tạo ra tín hiệu ngắn khi tổng đảo ngược từ dương sang âm. Đây là một chiến lược giao dịch ngược điển hình.

Cụ thể, chiến lược duy trì ba chỉ số:

  1. ff: Tổng số chênh lệch giá trong 30 ngày qua
  2. dd1: trung bình di động cân nhắc 15 ngày của ff
  3. dd2: trung bình di động trọng số 30 ngày của ff

Nó tạo ra một tín hiệu dài khi ff thay đổi từ âm thành dương, tức là từ nhỏ hơn 0 đến lớn hơn 0, và dd1 cũng thay đổi từ âm thành dương.

Nó tạo ra một tín hiệu ngắn khi ff thay đổi từ dương đến âm, tức từ lớn hơn 0 xuống dưới 0, và dd1 cũng thay đổi từ dương đến âm.

Sau khi đi dài hoặc ngắn, lấy lợi nhuận và dừng lỗ sẽ được thiết lập.

Ưu điểm

Chiến lược có những lợi thế sau:

  1. Lý thuyết là rõ ràng và dễ hiểu và thực hiện.
  2. Nó nắm bắt thời gian nhập cảnh tốt tại các điểm chuyển hướng thị trường bằng cách sử dụng các tính năng đảo ngược giá.
  3. Các vụ đột nhập giả có thể được lọc ra với cơ chế xác nhận kép.
  4. Các tham số có thể tùy chỉnh thích nghi với môi trường thị trường khác nhau.

Rủi ro

Ngoài ra còn có một số rủi ro cho chiến lược:

  1. Khả năng đảo ngược cao, có khả năng bị dừng ở các thị trường giới hạn phạm vi.
  2. Cài đặt tham số không đúng có thể dẫn đến giao dịch thường xuyên và tăng chi phí giao dịch.
  3. Các chỉ số khác nên được kết hợp để lọc các mục, tránh theo đuổi các đỉnh và đáy.

Các giải pháp tương ứng là:

  1. Đặt đúng tỷ lệ stop loss để kiểm soát lỗ đơn.
  2. Tối ưu hóa các thông số để tìm ra sự kết hợp tốt nhất.
  3. Thêm các điều kiện lọc để tránh các mục không cần thiết.

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

Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:

  1. Thêm bộ lọc âm lượng, đòi hỏi khối lượng mở rộng trên breakouts.
  2. Bao gồm các chỉ số xu hướng để tránh các hoạt động chống xu hướng.
  3. Điều chỉnh động các tham số để thích nghi với các điều kiện thị trường thay đổi.
  4. Tối ưu hóa cơ chế dừng lỗ, chẳng hạn như dừng lỗ sau.

Tóm lại

Chiến lược này đánh giá các bước ngoặt của thị trường bằng cách tính toán sự đảo ngược chênh lệch giá. Đây là một chiến lược giao dịch ngược điển hình. Logic là rõ ràng và dễ thực hiện với một số giá trị thực tế. Nhưng cũng có những rủi ro cần được tối ưu hóa hơn nữa để thích nghi với những thay đổi của thị trường. Nhìn chung, chiến lược cung cấp một khuôn khổ cơ bản cho giao dịch định lượng, có thể được xây dựng và mở rộng.


/*backtest
start: 2023-12-07 00:00:00
end: 2023-12-14 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="Fst",currency="USD",initial_capital=100000)

//Length0 = input(30, title="fastperiod", minval=1)
Length = input(30, title="SUMM")
Length1 = input(15, title="Signalperiod", minval=1)
Length2= input(30, title="Info", minval=1)
profit=input(95, title="profit", minval=1)
loss=input(95, title="loss", minval=1)
//f=iff(close>open,close-open,iff(close>open[1],close[1]-open[1],0))
f=0.0
dd1=0.0
dd2=0.0
ff=0.0
ff0=0.0
f:=close-close[1]
ff:=sum(f,Length)
//ff0:=sum(f,Length0)
dd1:=wma(ff,Length1)
dd2:=wma(ff,Length2)

bull=ff<0 and dd1<0 and ff[1]<dd1 and ff>dd1 and abs(ff)>20
bear=ff>0 and dd1>0 and ff[1]>dd1 and ff<dd1 and abs(ff)>20
if(bull)
    
    strategy.entry("long", strategy.long)
strategy.exit("exit", "long", profit = close*profit/1000, loss=close*loss/1000) 

strategy.close("long", when = bear)




plotchar(bull,size=size.small,location=location.bottom)
plot(ff,color=black,linewidth=2)
plot(ff0,color=green,linewidth=2)
plot(wma(ff,Length1),color=red,linewidth=2)
plot(wma(ff,Length2),color=blue,linewidth=2)
plot(wma(ff,Length1)-wma(ff,Length2),color=green,style=columns)

plot(0,linewidth=1,color=black)
plot(500,linewidth=1,color=red)
plot(-500,linewidth=1,color=red)


Thêm nữa