Ý 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.
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ố:
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.
Chiến lược có những lợi thế sau:
Ngoài ra còn có một số rủi ro cho chiến lược:
Các giải pháp tương ứng là:
Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:
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)