Chiến lược này tạo ra tín hiệu mua thông qua giao dịch giao dịch EMA nhanh mua đường trung bình và giao dịch EMA chậm bán đường trung bình và sử dụng ATR động theo dõi dừng để kiểm soát rủi ro, nhằm vượt qua chiến lược mua và giữ bằng một số lượng nhỏ giao dịch.
Tính toán đường EMA mua trung bình nhanh và đường EMA mua trung bình chậm, tạo ra tín hiệu mua khi đường nhanh đi qua đường chậm và đạt đến một cường độ mua nhất định.
Tính toán đường trung bình bán EMA nhanh và đường trung bình bán SMA chậm, tạo ra tín hiệu bán khi đường nhanh đi qua đường chậm.
Sử dụng giá trị trung bình hàng ngày N của chỉ số ATR nhân với số nhân để theo dõi động lệnh dừng lỗ, để kiểm soát rủi ro.
Khởi động chiến lược, thực hiện mua và bán trong thời gian phản hồi.
Mỗi cổ phiếu tối ưu hóa các tham số khác nhau để tìm tham số tốt nhất.
Chiến lược này kết hợp các lợi thế của các chỉ số trung bình di chuyển để xác định xu hướng và các tín hiệu chéo và ATR theo dõi động để dừng lỗ, điều chỉnh các tham số để phù hợp với đặc điểm của mỗi giống, với mục tiêu đạt được lợi nhuận vượt quá mua và giữ thông qua một số lượng nhỏ giao dịch chính xác.
Các EMA nhanh và SMA chậm giao nhau tạo ra tín hiệu giao dịch để xác định xu hướng.
ATR dừng điều chỉnh vị trí dừng lỗ theo biến động thị trường, kiểm soát rủi ro hiệu quả.
Tối ưu hóa các tham số cho mỗi cổ phiếu có thể giúp tăng tỷ lệ lợi nhuận.
Logic và quy tắc giao dịch đơn giản, dễ thực hiện và xác minh.
Hướng dẫn này được sử dụng để xác nhận hiệu quả của chiến lược.
Tìm kiếm sự ổn định vượt xa lợi nhuận dư thừa từ việc mua và nắm giữ.
Các tham số được tối ưu hóa không nhất thiết phải được áp dụng cho tương lai và có thể cần phải được tối ưu hóa lại thường xuyên.
EMA và SMA giao nhau có thể tạo ra tín hiệu sai hoặc tín hiệu chậm.
ATR Stop có thể quá quyết liệt và có thể mở rộng phạm vi Stop một cách thích hợp.
Lần giao dịch quá thấp, bạn có thể bỏ lỡ cơ hội giao dịch tốt hơn.
Cần xem xét chi phí giao dịch.
Tiếp tục thử nghiệm các tổ hợp tham số khác nhau để tìm ra tham số tối ưu.
Cố gắng giới thiệu các chỉ số khác để lọc tín hiệu.
Tối ưu hóa tham số chu kỳ của ATR, cân bằng độ nhạy của điểm dừng lỗ.
Đánh giá hiệu quả của việc nới lỏng phạm vi thiệt hại.
Hãy xem xét các phương pháp kết hợp với học máy để tự động tìm các tham số ưu tiên.
Nghiên cứu hiệu quả của việc tăng tần suất mở kho.
Chiến lược dừng chân theo dõi trung bình di động, kết hợp các lợi thế của tín hiệu tạo ra dấu hiệu giao thoa và kiểm soát rủi ro dừng ATR, thích ứng với các đặc điểm của mỗi cổ phiếu bằng cách tối ưu hóa tham số, là một chiến lược mua bán quá mức đơn giản và thực tế. Mặc dù tham số tối ưu hóa không đảm bảo hiệu quả trong tương lai, nhưng chiến lược này có logic giao dịch rõ ràng, có thể thực hiện được, đáng để cải thiện và kiểm tra hơn nữa và có ý nghĩa truyền cảm hứng tốt.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
//created by XPloRR 04-03-2018
strategy("XPloRR MA-Trailing-Stop Strategy",overlay=true, initial_capital=1000,default_qty_type=strategy.percent_of_equity,default_qty_value=100)
testStartYear = input(2005, "Start Year")
testStartMonth = input(1, "Start Month")
testStartDay = input(1, "Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2050, "Stop Year")
testStopMonth = input(12, "Stop Month")
testStopDay = input(31, "Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriodBackground = input(title="Background", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)
ema1Period = input(12, "Fast EMA Buy")
sma1Period = input(54, "Slow SMA Buy")
strength1 = input(52, "Minimum Buy Strength")
ema2Period = input(18, "Fast EMA Sell")
sma2Period = input(55, "Slow SMA Sell")
strength2 = input(100, "Minimum Sell Strength")
delta = input(8, "Trailing Stop (#ATR)")
testPeriod() => true
ema1val=ema(close,ema1Period)
sma1val=sma(close,sma1Period)
ema1strength=10000*(ema1val-ema1val[1])/ema1val[1]
ema2val=ema(close,ema2Period)
sma2val=sma(close,sma2Period)
ema2strength=10000*(ema2val-ema2val[1])/ema2val[1]
plot(ema1val,color=blue,linewidth=1)
plot(sma1val,color=orange,linewidth=1)
plot(ema2val,color=navy,linewidth=1)
plot(sma2val,color=red,linewidth=1)
long=crossover(ema1val,sma1val) and (ema1strength > strength1)
short=crossunder(ema2val,sma2val) and (ema2strength < -strength2)
stopval=ema(close,6)
atr=sma((high-low),15)
inlong=0
buy=0
stop=0
if testPeriod()
if (inlong[1])
inlong:=inlong[1]
buy:=close
stop:=iff((stopval>(stop[1]+delta*atr)),stopval-delta*atr,stop[1])
if (long) and (not inlong[1])
strategy.entry("buy",strategy.long)
inlong:=close
buy:=close
stop:=stopval-delta*atr
plot(buy,color=iff(close<inlong,red,lime),style=columns,transp=90,linewidth=1)
plot(stop,color=iff((short or (stopval<stop)) and (close<inlong),red,lime),style=columns,transp=60,linewidth=1)
if testPeriod()
if (short or (stopval<stop)) and (inlong[1])
strategy.close("buy")
inlong:=0
stop:=0
buy:=0