Chiến lược ngăn chặn trung bình di chuyển

Tác giả:ChaoZhang, Ngày: 2023-09-19 21:33:48
Tags:

Tổng quan

Chiến lược này tạo ra tín hiệu mua khi đường mua EMA nhanh vượt qua đường mua SMA chậm, và sử dụng ATR dừng lại động để kiểm soát rủi ro.

Chiến lược logic

  1. Tính toán đường mua EMA nhanh và đường mua SMA chậm, tạo tín hiệu mua khi đường mua nhanh vượt qua đường mua chậm với một sức mạnh mua nhất định.

  2. Tính toán đường bán EMA nhanh và đường bán SMA chậm, tạo tín hiệu bán khi đường nhanh vượt qua đường chậm.

  3. Sử dụng trung bình ATR trong ngày N nhân với hệ số là dừng lại theo dõi động để kiểm soát rủi ro.

  4. Bắt đầu chiến lược trong thời gian backtest cho mua và bán thực hiện.

  5. Tối ưu hóa các thông số cho mỗi cổ phiếu để tìm ra giá trị tốt nhất.

Chiến lược này kết hợp các lợi thế của MA vượt qua các tín hiệu và ATR dừng lại để kiểm soát rủi ro.

Phân tích lợi thế

  1. EMA nhanh và đường chéo SMA chậm xác định xu hướng và tạo ra tín hiệu.

  2. ATR dừng điều chỉnh dựa trên biến động thị trường, kiểm soát rủi ro hiệu quả.

  3. Tối ưu hóa cho mỗi cổ phiếu cải thiện lợi nhuận.

  4. Logic và quy tắc đơn giản, dễ thực hiện và xác minh.

  5. Hoàn thành chức năng backtest để xác nhận chiến lược.

  6. Tìm kiếm hiệu suất ổn định hơn mua và giữ.

Phân tích rủi ro

  1. Các thông số tối ưu hóa có thể không hoạt động trong tương lai, tối ưu hóa lại định kỳ có thể cần thiết.

  2. EMA và SMA có thể tạo ra tín hiệu không chính xác hoặc chậm.

  3. ATR dừng có thể quá hung hăng, có thể nới lỏng phạm vi dừng mất mát.

  4. Tần suất giao dịch thấp có thể bỏ lỡ những cơ hội tốt.

  5. Cần phải xem xét tác động của chi phí giao dịch.

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

  1. Tiếp tục thử nghiệm các kết hợp tham số khác nhau cho các giá trị tối ưu.

  2. Hãy thử giới thiệu các chỉ số khác để lọc tín hiệu.

  3. Tối ưu hóa thời gian ATR để cân bằng độ nhạy của stop loss.

  4. Đánh giá tác dụng của việc thư giãn phạm vi dừng lỗ.

  5. Xem xét máy học để tối ưu hóa tham số tự động.

  6. Tác dụng nghiên cứu của việc tăng tần suất giao dịch.

Tóm lại

Chiến lược dừng lại sau trung bình di chuyển này kết hợp các điểm mạnh của MA crossover cho tín hiệu và ATR dừng lại để kiểm soát rủi ro. Tối ưu hóa tham số điều chỉnh nó theo đặc điểm của mỗi cổ phiếu. Mặc dù các tham số tối ưu hóa không có đảm bảo, logic tổng thể là đơn giản và thực tế để vượt trội hơn mua và giữ. Những cải tiến và xác minh hơn nữa là đáng giá, vì chiến lược có giá trị 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



Thêm nữa