Chiến lược dao động stochastic kép

Tác giả:ChaoZhang, Ngày: 2023-09-17 18:26:16
Tags:

Tổng quan

Chiến lược này sử dụng hai dao động stochastic với các tham số khác nhau để xác định điều kiện tăng / giảm. Đây là một hệ thống chéo trung bình động điển hình. Động cơ dao động nhanh hơn đánh giá xu hướng ngắn hạn và tín hiệu nhập cảnh, trong khi một tín hiệu chậm hơn xác nhận hướng xu hướng tổng thể.

Chiến lược logic

  1. Nhanh %K cho thấy hướng xu hướng ngắn hạn. %K vượt qua đường mượt SM1 tạo ra tín hiệu nhập cảnh.

  2. Chậm %K phản ánh các điều kiện xu hướng tổng thể. Khi dao động nhanh đưa ra tín hiệu đảo ngược, kiểm tra dao động chậm cho tính hợp lệ của xu hướng.

  3. %K nhanh vượt trên SM1 cho thấy tín hiệu tăng. %K chậm trên 50 có nghĩa là xu hướng tăng, thỏa mãn điều kiện dài.

  4. %K nhanh chéo dưới SM1 cho thấy tín hiệu giảm. %K chậm dưới 50 có nghĩa là xu hướng giảm, thỏa mãn điều kiện ngắn.

  5. Đặt điểm lấy lợi nhuận và dừng lỗ ở tỷ lệ phần trăm cố định.

Phân tích lợi thế

  1. Bộ lọc stochastic kép làm tăng độ chính xác và kết hợp nhanh và chậm làm giảm nguy cơ mắc kẹt.

  2. Các thông số SM1 nhỏ hơn làm cho %K nhạy cảm để bắt các cơ hội ngắn hạn.

  3. Chu kỳ lớn hơn đánh giá xu hướng tổng thể, chu kỳ nhỏ hơn ghi lại sự đảo ngược.

  4. Các điểm lấy lợi nhuận cố định và dừng lỗ làm cho rủi ro có thể kiểm soát được mà không có sự dao động lớn.

Phân tích rủi ro

  1. Sự khác biệt giữa các chỉ số có thể gây ra các giao dịch bị bỏ lỡ hoặc tín hiệu sai.

  2. Điểm thu lợi nhuận cố định và điểm dừng lỗ thiếu sự linh hoạt trong việc điều chỉnh thị trường.

  3. Các thông số ngẫu nhiên cần tối ưu hóa lặp đi lặp lại, cài đặt không đúng dẫn đến thất bại.

  4. Tần suất giao dịch cao từ giao dịch ngắn hạn làm tăng chi phí giao dịch.

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

  1. Thêm các chỉ số hoặc bộ lọc khác để đảm bảo chất lượng tín hiệu.

  2. Kiểm tra các kết hợp tham số khác nhau để tìm các thiết lập tối ưu.

  3. Bao gồm các biện pháp biến động để làm cho mức lợi nhuận và dừng lỗ năng động.

  4. Sử dụng bộ lọc thời gian để tránh các sự kiện quan trọng và biến động giá không hợp lý.

  5. Tối ưu hóa các chiến lược quản lý vốn như kích thước vị trí để cải thiện hiệu quả vốn.

Tóm lại

Chiến lược này tích hợp các dao động stochastic nhanh và chậm vào một hệ thống hai hướng. Tăng thêm tối ưu hóa tham số và thêm các bộ lọc như chỉ số xu hướng và biến động có thể cải thiện nó. Với kiểm soát rủi ro thích hợp, chiến lược này có thể đạt được lợi nhuận dư thừa tương đối ổn định.


/*backtest
start: 2023-08-17 00:00:00
end: 2023-09-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Double Stochastic", overlay=true)

//-----------------------Stochastics------------------------//

c= security(syminfo.tickerid,timeframe.period , close)  
h= security(syminfo.tickerid, timeframe.period, high)  
l= security(syminfo.tickerid, timeframe.period, low)  

c1= security(syminfo.tickerid, timeframe.period, close)  
h2= security(syminfo.tickerid, timeframe.period, high)  
l1= security(syminfo.tickerid, timeframe.period, low)  

K1 = input(5, title="K", minval=1, title="Leading K")
SM1 = input(2, title="Smooth", minval=1, title="Leading Smooth ")
k = ema(stoch(c, h, l, K1), SM1)

K2 = input(97, title="K", minval=1, title="Lagging K")
D2 = input(3, title="D", minval=1, title="Lagging D")
SM2 = input(1, title="Smooth", minval=1, title="Lagging Smooth")
k1 = ema(stoch(c1, h2, l1, K2), SM2)

// buy ((k[2] < 40 and k > 40) and bars_up > 0 and k1 > 50) 
// sell (k[2] > 60 and k < 60) and bars_down > 0 and k1 < 50

//-----------------------Mechanics------------------------//

buy = k1 > 50 and k < 30 and k > k[1] ? 1 : 0
sell = k1 < 50 and k > 70 and k < k[1] ? 1 : 0

buy_val = valuewhen(buy == 1, close, 1)
sell_val = valuewhen(sell == 1, close, 1)

buy_close = buy_val * input(1.20, minval=0.1)
sell_close = sell_val / input(1.20, minval=0.1)

//------------------------Buy/Sell-------------------------//

longCondition = buy == 1
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

close_long = close >= buy_close
if (close_long)
    strategy.close("My Long Entry Id")
    
sellCondition = sell == 1
if (sellCondition)
    strategy.entry("My Short Entry Id", strategy.short)

close_short = close <= sell_close
if (close_short)
    strategy.close("My Short Entry Id")    

Thêm nữa