Kama và xu hướng dựa trên trung bình động theo chiến lược

Tác giả:ChaoZhang, Ngày: 2024-02-06 09:53:22
Tags:

img

Tổng quan

Ý tưởng cốt lõi của chiến lược này là xác định xu hướng thị trường bằng cách kết hợp các chỉ số Kama Moving Average và Moving Average để đạt được xu hướng theo. Khi Kama Moving Average và Moving Average có một đường chéo vàng, nó được đánh giá là xu hướng tăng đã bắt đầu và vị trí dài được thực hiện. Khi Kama Moving Average và Moving Average có đường chéo chết, nó được đánh giá là xu hướng giảm đã bắt đầu và vị trí ngắn được thực hiện.

Chiến lược logic

  1. Tính toán đường trung bình Kama là một chỉ số theo xu hướng nhạy cảm hơn với tiếng ồn thị trường và có thể được sử dụng để xác định xu hướng giá.

  2. Tính toán trung bình động. hai trung bình động được tính toán ở đây, một là một tốc độ nhanh gấp đôi trung bình động biểu thức, người kia là một trung bình động bình thường cân nhắc.

  3. Khi đường nhanh vượt qua đường chậm từ dưới, đi dài. khi đường nhanh vượt qua đường chậm từ trên, đi ngắn. để đánh giá xu hướng và theo dõi hoàn thành.

  4. Sau khi lấy vị trí, thoát khi giá vượt qua đường Kama để đạt được xu hướng sau khi thoát.

Ưu điểm

  1. Chiến lược kết hợp các chỉ số trung bình di chuyển Kama và trung bình di chuyển để đưa ra các phán đoán tương đối chính xác về xu hướng thị trường và đạt được xu hướng theo sau với khả năng kiểm soát rút mạnh mẽ.

  2. Đường trung bình Kama nhạy cảm hơn với tiếng ồn thị trường và có thể phát hiện các điểm đảo ngược xu hướng trước.

  3. Phán quyết kết hợp trung bình động là rõ ràng và dễ hiểu.

  4. Chiến lược có không gian tối ưu hóa tham số lớn và các tham số có thể được điều chỉnh và tối ưu hóa cho các loại và công cụ giao dịch khác nhau.

Phân tích rủi ro

  1. Vẫn có khả năng đánh giá sai khi kết hợp trung bình di chuyển Kama và trung bình di chuyển đánh giá xu hướng thị trường.

  2. Không thiết lập stop loss có thể dẫn đến tổn thất lớn hơn trong điều kiện thị trường cực đoan.

  3. Cài đặt tham số không phù hợp cũng có thể gây ra sai đoán. Các tham số cần phải được điều chỉnh theo các giống khác nhau.

Các đề xuất tối ưu hóa

  1. Xem xét thêm chỉ báo ATR để thiết lập stop loss.

  2. Kiểm tra tác động của các giá trị tham số khác nhau đối với lợi nhuận chiến lược để tìm các tham số tối ưu.

  3. Xem xét thêm các chỉ số khác để xác minh, chẳng hạn như chỉ số dao động, để cải thiện độ chính xác phán đoán.

  4. Xây dựng khung tối ưu hóa tự điều chỉnh và năng động cho tối ưu hóa tham số tự động.

Tóm lại

Ý tưởng tổng thể của chiến lược này là rõ ràng, sử dụng Kama moving average và moving average Golden Cross và death cross để xác định và theo dõi xu hướng với khả năng kiểm soát giảm mạnh. Thông qua điều chỉnh tham số và tối ưu hóa, kết quả tốt có thể đạt được. Nhưng vẫn còn chỗ để cải thiện. Bằng cách thêm nhiều chỉ số xác minh và các mô-đun dừng lỗ, sự ổn định và lợi nhuận của chiến lược có thể được tăng thêm.


/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-05 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//synapticex.com
kamaPeriod = input(8, minval=1) 
ROCLength=input(4, minval=1) 

kama(length)=>
    volatility = sum(abs(close-close[1]), length)
    change = abs(close-close[length-1])
    er = iff(volatility != 0, change/volatility, 0)
    sc = pow((er*(0.666666-0.064516))+0.064516, 2)
    k = nz(k[1])+(sc*(hl2-nz(k[1])))
    

n=input(title="period",defval=7)

n2ma=2*wma(close,round(n/2))
nma=wma(close,n)
diff=n2ma-nma
sqn=round(sqrt(n))

n2ma1=2*wma(close[1],round(n/2))
nma1=wma(close[1],n)
diff1=n2ma1-nma1
sqn1=round(sqrt(n))

n1=wma(diff,sqn)
n2=wma(diff1,sqn)
c=n1>n2?lime:red
ma=plot(n1,color=c, linewidth = 3)
plot(cross(nma, nma1) ? nma : na, style = cross, color = c, linewidth = 5)
    
kamaEntry = request.security(syminfo.tickerid,timeframe.period,kama(kamaPeriod))

plot(kamaEntry, color=gray, title="Kama",transp=0, trackprice=false, style=line)


strategy("Kama VS HeikinAshi", overlay=true, pyramiding=0, calc_on_every_tick=true, calc_on_order_fills=true)

buyEntry =  n1 > n2
sellEntry = close < kamaEntry and n1 < n2 

buyExit = close < kamaEntry and n1 < n2
sellExit = n1 > n2 
if (buyEntry)
    strategy.entry("KAMAL", strategy.long, comment="KAMAL")
else
    strategy.close("KAMAL", when=buyExit)

if (sellEntry)
    strategy.entry("KAMAS", strategy.short, comment="KAMAS")
else
    strategy.close("KAMAS", when = sellExit)



Thêm nữa