
Ý tưởng chính của chiến lược này là sử dụng chênh lệch chồng lên nhau của giá để đánh giá xu hướng thị trường. Khi chênh lệch đảo ngược từ âm sang dương, làm nhiều và làm rỗng khi đảo ngược từ dương sang âm, thuộ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 chồng chéo của giá (Close-Close[[1]), tức là giá đóng cửa ngày hôm nay trừ giá đóng cửa ngày hôm qua, sau đó tính tổng số chênh lệch trong 30 ngày gần đây. Khi tổng số quay ngược từ số âm sang số dương, sẽ tạo ra tín hiệu nhiều, và khi tổng số quay ngược từ số dương sang số âm, sẽ tạo ra tín hiệu thiếu hụt. Đây là một chiến lược giao dịch quay ngược điển hình.
Cụ thể, chiến lược duy trì ba chỉ số:
Khi ff xoay từ âm sang dương, tức là nhỏ hơn 0 lớn hơn 0, và dd1 cũng xoay từ âm sang dương, tạo ra tín hiệu đa.
Khi ff từ tích cực trở thành âm, tức là lớn hơn 0 trở nên nhỏ hơn 0, và dd1 cũng từ tích cực trở thành âm, sẽ tạo ra tín hiệu trống.
Nếu bạn thực hiện nhiều thời gian ngắn hơn, bạn sẽ thiết lập một đường dừng lỗ.
Chiến lược này có những ưu điểm sau:
Chiến lược này cũng có một số rủi ro:
Các giải pháp tương ứng là:
Chiến lược này có thể được tối ưu hóa bằng cách:
Chiến lược này đánh giá điểm biến đổi của thị trường bằng cách tính toán chênh lệch giá và là một chiến lược giao dịch đảo ngược điển hình. Ý tưởng của chiến lược là rõ ràng, dễ thực hiện và có giá trị thực tế. Nhưng cũng có một số rủi ro cần được tối ưu hóa hơn nữa để thích ứng với sự thay đổi của thị trường. Nói chung, chiến lược này cung cấp một khuôn khổ cơ bản cho giao dịch định lượng và có thể mở rộng trên cơ sở này.
/*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)