
Chiến lược này sử dụng các chỉ số trung bình di chuyển kết hợp với nhiều khung thời gian để đánh giá sự nhất quán của xu hướng giữa nhiều khung thời gian, sử dụng chiến lược hoạt động của scalping trong ngày, theo đuổi xu hướng để kiếm lợi nhuận.
Chiến lược này xây dựng tín hiệu giao dịch bằng cách sử dụng các đường trung bình di chuyển 8 và 20 trong bốn khung thời gian 5 phút, 15 phút, 30 phút và 60 phút. Một tín hiệu mua được tạo ra khi một đường trung bình di chuyển 20 ngày đi qua đường trung bình di chuyển 8 ngày ngắn hơn; một tín hiệu bán được tạo ra khi một đường trung bình di chuyển 20 ngày đi qua đường trung bình di chuyển 8 ngày đi dưới đường trung bình di chuyển 8 ngày.
Chiến lược yêu cầu các tín hiệu giao dịch trong các khung thời gian 5, 15, 30 và 60 phút phải đồng nhất để đưa ra chỉ thị giao dịch. Nói cách khác, chỉ khi các đường trung bình di chuyển của bốn khung thời gian này phù hợp với tín hiệu mua hoặc bán, thì giao dịch mua hoặc bán sẽ được thực hiện.
Sau khi vào vị trí, chiến lược sẽ thiết lập lệnh dừng với vị trí lợi thế giá cố định, để thực hiện các hoạt động scalping trong ngày.
Cụ thể, chiến lược lấy dữ liệu trung bình di chuyển trong các khung thời gian khác nhau bằng cách gọi hàm security. Tính toán chênh lệch trung bình 8 và 20 ngày trong 5 phút, 15 phút, 30 phút và 60 phút và vẽ đường cong chênh lệch.
Đánh giá tín hiệu mua và bán dựa trên đường cong chênh lệch trên trục 0 hay không. Và thiết lập nhiều dấu islong và isshort để ghi lại tín hiệu giao dịch trong mỗi khung thời gian. Cuối cùng, ra lệnh vào và ra khi trạng thái của islong và isshort đáp ứng yêu cầu.
Sau khi nhập, chiến lược thiết lập số điểm dừng cố định thông qua hàm strategy.exit để thực hiện hoạt động scalping.
Chiến lược này có những ưu điểm sau:
Thiết kế khung thời gian đa dạng, có thể lọc hiệu quả giả mạo và giảm tần suất giao dịch thông qua việc đánh giá tổng hợp các chỉ số chu kỳ khác nhau.
Chiến lược Scalping trong ngày, tối ưu hóa lợi nhuận, có thể tích lũy lợi nhuận nhỏ liên tục.
Cấu trúc mã rõ ràng, chức năng của từng phần rõ ràng, dễ hiểu và tối ưu hóa.
Các điều kiện được thiết lập để kiểm soát rủi ro giao dịch một cách hợp lý và hiệu quả.
Chiến lược này cũng có một số rủi ro:
Thiết kế khung thời gian đa dạng có thể lọc một số tiếng ồn, nhưng cũng có thể bỏ qua một số chi tiết dẫn đến thay đổi xu hướng không rõ ràng.
Scalping trong ngày mang lại giao dịch thường xuyên, cần phải kiểm soát chi phí giao dịch.
Cài đặt điểm dừng cố định không đủ linh hoạt để điều chỉnh theo sự thay đổi của thị trường.
Trong khi đó, các nhà đầu tư khác cũng có xu hướng sử dụng các chỉ số để tạo tín hiệu giao dịch.
Chính sách này có thể được tối ưu hóa theo các khía cạnh sau:
Thêm nhiều chỉ số đánh giá khác nhau về khung thời gian chu kỳ, làm cho tín hiệu ổn định và đáng tin cậy hơn.
Tối ưu hóa chiến lược dừng, thiết lập điểm dừng dựa trên động thái ATR.
Thêm thêm các điều kiện lọc vào thời điểm nhập cảnh, chẳng hạn như tăng khối lượng giao dịch, phá vỡ các mức cao nhất trong lịch sử.
Tối ưu hóa các tham số chu kỳ của trung bình di chuyển, tìm kiếm các tham số kết hợp tốt nhất.
Tăng mô hình học máy để đánh giá độ tin cậy của tín hiệu chỉ số và tránh bị đánh giá.
Chiến lược này nói chung là một chiến lược theo dõi xu hướng đa khung thời gian điển hình, có lợi nhuận bằng cách sử dụng các chiến lược scalping trong ngày. Ý tưởng chiến lược rõ ràng, cấu trúc mã hợp lý, đáng để kiểm tra và tối ưu hóa thêm. Với một số điều chỉnh tối ưu hóa, chiến lược này có thể trở thành một mẫu chiến lược scalping trong ngày rất thực tế.
/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title="PeBAS $JPY Scalper 15m ",overlay=true)
zeigeallebars= input(false, title="Zeige alle (Show all) Candles/Bars?")
profitwert=input(52, title="Profit")
myatr= input(title="ATR", type=float, defval=0.00002, minval=0.00001,step=0.00001)
//Plot EMA-Differenz Aktueller Timeframe
dif=(ema(close,8)+ema(close,20))/2
mcolor=ema(close,8) > ema(close,20) ? green : red
bs = ema(close,8) > ema(close,20) ? true : false
ThisATR=atr(16)
//trans = zeigeallebars == true ? 00 : 100
//plot(dif,"dif",color=mcolor,linewidth=6,transp=trans)
//1M EMA
htf_ma1Mema8 = ema(close, 5)
htf_ma1Mema20 = ema(close, 20)
ema81m=request.security(syminfo.tickerid, "1", htf_ma1Mema8)
ema201m=request.security(syminfo.tickerid, "1", htf_ma1Mema20)
dif1M = (ema81m + ema201m) / 2
Close1M = request.security(syminfo.tickerid, "1", close)
color1=ema81m > ema201m ? green : red
//plot(dif1M,"dif",color1,linewidth=6)
//plotshape(1, style=shape.cross, color=color1,location=location.top)
ls1 = ema81m > ema201m ? 1 : 0
//5M EMA
htf_ma5Mema8 = ema(close, 8)
htf_ma5Mema20 = ema(close, 20)
ema85m=request.security(syminfo.tickerid, "5", htf_ma5Mema8)
ema205m=request.security(syminfo.tickerid, "5", htf_ma5Mema20)
dif5M = (ema85m + ema205m) / 2
color5=ema85m > ema205m ? green : red
plot(dif5M,"dif",color5,linewidth=5)
ls5 = ema85m > ema205m ? 1 : 0
alert1= ema85m > ema205m and ema85m[1] < ema205m[1] ? 1 : 0
islong5 = ema85m > ema205m ? 1 : 0
isshort5 = ema85m < ema205m ? 1 : 0
//15M EMA
htf_ma15Mema8 = ema(close, 8)
htf_ma15Mema20 = ema(close, 20)
ema815m=request.security(syminfo.tickerid, "15", htf_ma15Mema8)
ema2015m=request.security(syminfo.tickerid, "15", htf_ma15Mema20)
dif15M = (ema815m + ema2015m) / 2
color15=ema815m > ema2015m ? green : red
plot(dif15M,"dif",color15,linewidth=3)
ls15= ema815m > ema2015m ? 1 : 0
alert2= ema815m > ema2015m and ema815m[1] < ema2015m[1] ? 1 : 0
islong15 = ema815m > ema2015m ? 1 : 0
isshort15 = ema815m < ema2015m ? 1 : 0
//30M EMA
htf_ma30Mema8 = ema(close, 8)
htf_ma30Mema20 = ema(close, 20)
ema830m=request.security(syminfo.tickerid, "30", htf_ma30Mema8)
ema2030m=request.security(syminfo.tickerid, "30", htf_ma30Mema20)
dif30M = (ema830m + ema2030m) / 2
color30=ema830m > ema2030m ? green : red
ls30= ema830m > ema2030m ?1 : 0
islong30 = ema830m > ema2030m ? 1 : 0
isshort30 = ema830m < ema2030m ? 1 : 0
//60M EMA
htf_ma60Mema8 = ema(close, 8)
htf_ma60Mema20 = ema(close, 20)
ema860m=request.security(syminfo.tickerid, "60", htf_ma60Mema8)
ema2060m=request.security(syminfo.tickerid, "60", htf_ma60Mema20)
dif60M = (ema860m + ema2060m) / 2
color60=ema860m > ema2060m ? green : red
ls60= ema860m > ema2060m ?1 : 0
islong60 = ema860m > ema2060m ? 1 : 0
isshort60 = ema860m < ema2060m ? 1 : 0
plot(dif60M,"dif",color60,linewidth=3,transp=70)
islong = islong5 ==1 and islong15 ==1 and islong60 ==1 and year > 2017 ? 1 : 0
isshort = isshort5 ==1 and isshort15 ==1 and isshort60 ==1 and year > 2017 ? 1 : 0
condition2l= 0
condition2s = 0
c= alert1 == alert2 and alert1[1] != alert2[1] ? 1 : 0
alertcondition(c, title='Da tat sich was ', message='Da tat sich was!')
strategy.entry("enter long", strategy.long,1,when = islong ==1 and islong[1] == 0 )
strategy.entry("enter short", strategy.short,1,when = isshort == 1 and isshort [1] == 0)
strategy.exit("close",profit=profitwert)
strategy.exit("close",profit=profitwert)