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

Tác giả:ChaoZhang, Ngày: 2024-01-02 10:44:53
Tags:

img

Tổng quan

Chiến lược này dựa trên chỉ số trung bình động động để theo dõi xu hướng giá trong thời gian thực và tạo ra tín hiệu giao dịch khi trung bình động bị phá vỡ.

Chiến lược logic

Chiến lược này sử dụng các chỉ số trung bình động động bao gồm ALMA, EMA, SMA và nhiều hơn nữa. Nguyên tắc là mua dài khi giá vượt qua mức trung bình động và mua ngắn khi nó vượt qua mức thấp hơn.

Cụ thể, chiến lược sử dụng các đường trung bình động được hình thành bởi giá cao và giá thấp. Giá thấp MA phục vụ như là đường tín hiệu cho các tín hiệu dài, trong khi giá cao MA phục vụ như là đường cho các đường ngắn. Khi giá đóng tăng trên giá thấp MA, đi dài. Khi giá đóng giảm dưới giá cao MA, đi ngắn.

Bằng cách đánh giá xu hướng giá với MA và kết hợp với nguyên tắc đột phá để tạo ra tín hiệu, một chiến lược theo xu hướng đơn giản và thực tế được hình thành.

Ưu điểm

  • Cài đặt tham số đơn giản với chỉ số MA, dễ vận hành
  • Quy tắc tín hiệu rõ ràng mà không có tín hiệu sai
  • Các loại MA linh hoạt để thích nghi với những thay đổi trên thị trường
  • Thời gian MA điều chỉnh phù hợp với các chu kỳ xu hướng khác nhau
  • Xác nhận tín hiệu nhiều khung thời gian cải thiện độ tin cậy

Rủi ro và giải pháp

  • MA lag có thể bỏ lỡ một số cơ hội
    • Giảm thời gian MA hoặc sử dụng EMA
  • Rủi ro chuyển đổi lớn trong ngắn hạn
    • Mở rộng không gian dừng lỗ cho sự linh hoạt
  • Rủi ro nắm giữ dài, không thể khóa lợi nhuận kịp thời
    • Kết hợp các chỉ số khác, tránh theo đuổi mức cao và giết chết mức thấp

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

  • Điều chỉnh loại MA và các thông số dựa trên các đặc điểm của biểu tượng
  • Thêm các chỉ số phụ để cải thiện chiến lược
  • Thêm cơ chế dừng lỗ và lấy lợi nhuận
  • Đánh giá độ tin cậy tín hiệu trên các khung thời gian
  • Sử dụng máy học để tìm các thông số tốt hơn

Kết luận

Chiến lược này đánh giá hướng xu hướng với MA và tạo ra các tín hiệu dựa trên các nguyên tắc đột phá. Nó đơn giản để sử dụng và phù hợp với việc nắm giữ trung bình đến dài hạn. Các tham số cũng có thể được điều chỉnh để thích nghi với những thay đổi của thị trường. Những rủi ro từ biến động ngắn hạn và nắm giữ dài hạn cần phải được quản lý bằng cách dừng lỗ / thu lợi nhuận. Có chỗ để cải thiện bằng cách kết hợp nhiều chỉ số hơn và tìm các tham số tối ưu thông qua học máy.


/*backtest
start: 2023-12-02 00:00:00
end: 2024-01-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Baseline Strategy - evo", shorttitle="Baseline", overlay=true)

//INPUTS
mat =               input("ALMA", "MA Type", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "ALMA"])
baseline =          input(55, title="MA Length")
src =               input(ohlc4, title="Closing Source")

offset =            input(0.85, step=0.05, title="Offset (alma only)")
sigma =             input(10, title="Sigma (alma only)")

useCurrentRes =     input(true, title="Use Current Resolution")
resCustom =         input("1440", title="Timeframe")

showsignals =       input(false, title="Show Signals ?")

//BASELINE
baselinehigh = 

 mat=="SMA" ? sma(high,baseline) : 
 mat=="EMA" ? ema(high,baseline) : 
 mat=="WMA" ? wma(high,baseline) : 
 mat=="HMA" ? wma(2*wma(high, baseline/2)-wma(high, baseline), round(sqrt(baseline))) : 
 mat=="VWMA" ? vwma(high,baseline) : 
 mat=="RMA" ? rma(high,baseline) :
 mat=="ALMA" ? alma(high, baseline, offset, sigma) : na

baselinelow = 

 mat=="SMA" ? sma(low,baseline) : 
 mat=="EMA" ? ema(low,baseline) : 
 mat=="WMA" ? wma(low,baseline) : 
 mat=="HMA" ? wma(2*wma(low, baseline/2)-wma(low, baseline), round(sqrt(baseline))) : 
 mat=="VWMA" ? vwma(low,baseline) : 
 mat=="RMA" ? rma(low,baseline) : 
 mat=="ALMA" ? alma(low, baseline, offset, sigma) : na

//RESOLUTION
res =               useCurrentRes ? timeframe.period : resCustom

mtfhigh =           security(syminfo.tickerid, res, baselinehigh)
mtflow =            security(syminfo.tickerid, res, baselinelow)

//PLOTS
plot(mtfhigh, color=color.navy, linewidth=2, transp=0, title="Baseline High")
plot(mtflow, color=color.navy, linewidth=2, transp=0, title="Baseline Low")

long =              src > mtfhigh
short =             src < mtflow

barcolor(long ? #ffe0b2 : short ? #2a2e39 : not long and not short ? #b09e82 : na, title="BaseLine BarColor")

signal = 0
signal := long ? 1 : short ? 2 : nz(signal[1])

plotshape(showsignals ? (signal != signal[1] and long ? mtflow : na) : na, title="Long", location=location.absolute, size=size.small, style=shape.labelup, text="Long", textcolor=color.black, transp=40, color=#00ff00)
plotshape(showsignals ? (signal != signal[1] and short ? mtfhigh : na) : na, title="Short", location=location.absolute, size=size.small, style=shape.labeldown, text="Short", textcolor=color.white, transp=40, color=#ff0000)

alertcondition(signal != signal[1], title="Trend Change !", message="Trend Change !")

if (long)
    strategy.entry("Long", strategy.long)
if (short)
    strategy.entry("Short", strategy.short)

Thêm nữa