Chiến lược phá vỡ biến động giá dựa trên trung bình di chuyển kép

Tác giả:ChaoZhang, Ngày: 2023-12-08 16:44:22
Tags:

img

Tổng quan

Ý tưởng cốt lõi của chiến lược này là sử dụng biến động giá để đánh giá xu hướng thị trường. Khi biến động tăng, điều đó có nghĩa là thị trường đang hình thành một xu hướng mới. Và khi biến động giảm, điều đó có nghĩa là xu hướng hiện tại đang kết thúc. Chiến lược tính toán tỷ lệ thay đổi tỷ lệ phần trăm của giá và sau đó lọc nó bằng trung bình động đôi để có được một chỉ số phản ánh biến động giá. Nó tạo ra tín hiệu mua khi chỉ số vượt qua đường tín hiệu của nó, và bán tín hiệu khi vượt qua dưới.

Chiến lược logic

Chiến lược đầu tiên tính toán tỷ lệ thay đổi tỷ lệ phần trăm giá:

i=(src/nz(src[1], src))*100

Sau đó, nó lọc i với một trung bình động 35 giai đoạn để có được chỉ số biến động sơ bộ pmol2. Pmol2 được lọc lại với một trung bình động 20 giai đoạn để có được chỉ số cuối cùng pmol. Cuối cùng, một trung bình động 10 giai đoạn của pmol được sử dụng làm đường tín hiệu pmols. Mua khi pmol vượt qua pmols và bán khi vượt qua dưới.

Phân tích lợi thế

  • Bộ lọc MA kép lấy ra sự biến động tốt và lọc ra tiếng ồn.
  • Tính toán tỷ lệ thay đổi phần trăm khuếch đại chuyển động giá, làm cho những thay đổi xu hướng trở nên rõ ràng hơn.
  • Mô hình lợi nhuận là rõ ràng: mua vào đầu xu hướng, bán vào cuối xu hướng.

Phân tích rủi ro

  • Bộ lọc hai lần gây ra sự chậm trễ.
  • Tính toán tỷ lệ thay đổi phần trăm nhạy cảm với phạm vi giá.
  • Cần phải có thời gian để thoát khỏi sự thay đổi giữa những con bò và gấu.

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

  • Tối ưu hóa các tham số MA để cải thiện việc bắt xu hướng.
  • Hãy thử các phương pháp tính toán thay đổi giá khác nhau.
  • Thêm bộ lọc để tránh tín hiệu sai.

Tóm lại

Chiến lược này sử dụng thay đổi tỷ lệ phần trăm và lọc MA đôi để trích xuất biến động giá và đánh giá thay đổi xu hướng. Nó thuộc về các chiến lược chỉ số kỹ thuật tương đối trưởng thành. Chiến lược có khả năng bắt xu hướng tốt nhưng khả năng nhận dạng điểm chuyển đổi trung bình. Có thể tối ưu hóa thông qua điều chỉnh tham số và thêm các điều kiện phụ trợ.


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Strategy for DPMO", overlay=true)

src=input(close, title="Source")
length1=input(35, title="First Smoothing")
length2=input(20, title="Second Smoothing")
siglength=input(10, title="Signal Smoothing")
ebc=input(false, title="Enable Bar Colors")

upSign = '↑' // indicates the indicator shows uptrend
downSign = '↓' // incicates the indicator showing downtrend
exitSign ='x' //indicates the indicator uptrend/downtrend ending

calc_csf(src, length) => 
	sm = 2.0/length
	csf=(src - nz(csf[1])) * sm + nz(csf[1])
	csf
i=(src/nz(src[1], src))*100
pmol2=calc_csf(i-100, length1)
pmol=calc_csf( 10 * pmol2, length2)
pmols=ema(pmol, siglength)
d=pmol-pmols
hc=d>0?d>d[1]?lime:green:d<d[1]?red:orange

buyDPMO = hc==lime and hc[1]!=lime
closeBuyDPMO = hc==green and hc[1]!=green
sellDPMO = hc==red and hc[1]!=red
closeSellDPMO = hc==orange and hc[1]!=orange

plotshape(buyDPMO, color=lime, style=shape.labelup, textcolor=#000000, text="DPMO", location=location.belowbar, transp=0)
plotshape(closeBuyDPMO, color=green, style=shape.labelup, textcolor=#ffffff,  text="X", location=location.belowbar, transp=0)
plotshape(sellDPMO, color=red, style=shape.labeldown, textcolor=#000000, text="DPMO", location=location.abovebar, transp=0)
plotshape(closeSellDPMO, color=orange, style=shape.labeldown, textcolor=#ffffff,  text="X", location=location.abovebar, transp=0)
barcolor(ebc?hc:na)


strategy.entry("Long", strategy.long, when=buyDPMO)
strategy.close("Long", when=closeBuyDPMO or sellDPMO)   
strategy.entry("Short", strategy.short, when=sellDPMO)
strategy.close("Short", when=closeSellDPMO or buyDPMO)  


Thêm nữa