Xu hướng dao động giá tuyệt đối theo chiến lược

Tác giả:ChaoZhang, Ngày: 2023-09-21 15:27:59
Tags:

Tổng quan

Chiến lược này sử dụng chỉ số dao động giá tuyệt đối (APO) để tạo ra tín hiệu giao dịch và theo dõi xu hướng.

Chiến lược logic

  • APO bao gồm EMA nhanh hơn và chậm hơn, lấy sự khác biệt giữa chúng.

  • Khi APO vượt qua vùng mua (mục tiêu 3), mua dài. Khi nó vượt qua dưới vùng bán (mục tiêu -3), mua ngắn.

  • Tùy chọn để đảo ngược tín hiệu - chéo trên bán, chéo dưới mua.

  • Đường cong cho thấy đà tăng giá, có thể tìm thấy sự đảo ngược về sự khác biệt.

Đây là một chiến lược theo xu hướng, sử dụng APO để xác định hướng xu hướng cho các tín hiệu dài / ngắn bền vững.

Ưu điểm

  • Thực hiện đơn giản bằng cách sử dụng kết hợp trung bình động cơ bản.

  • APO đo đạc động lượng giá và hướng.

  • Các thông số mặc định tạo ra các tín hiệu bền vững trung hạn, tránh giao dịch quá mức.

  • Có thể phát hiện sự đảo ngược xu hướng dựa trên sự khác biệt giá / chỉ số.

Rủi ro

  • Có xu hướng nhận tín hiệu sai và thất bại trong các thị trường.

  • Các tín hiệu trễ có thể bỏ lỡ những sự đảo ngược nhanh chóng.

  • Không có lệnh dừng lỗ hoặc kích thước vị trí, quản lý rủi ro không hoàn chỉnh.

Hạn chế:

  • Tối ưu hóa các thông số và thử nghiệm các kết hợp khác nhau cho mỗi thiết bị.

  • Thêm bộ lọc để tránh giao dịch trong điều kiện hỗn loạn.

  • Thực hiện lệnh dừng lỗ, ví dụ như lệnh dừng kéo theo.

Cơ hội gia tăng

  • Tối ưu hóa tham số cho mỗi dụng cụ để tìm các cặp lý tưởng.

  • Các bộ lọc bổ sung về hành động giá hoặc khối lượng để giảm các tín hiệu sai.

  • Định giá vị trí động dựa trên tỷ lệ biến động hoặc tỷ lệ phần trăm tài khoản.

  • Tối ưu hóa lợi nhuận như dừng lại để theo xu hướng.

  • ML để đánh giá xác suất tín hiệu phân kỳ thành công.

Kết luận

Hệ thống chéo EMA này sử dụng APO cung cấp một nền tảng vững chắc để theo dõi xu hướng. Với tối ưu hóa các thông số, quản lý rủi ro và bộ lọc, nó có thể trở thành một chiến lược định lượng hiệu quả. Khái niệm cốt lõi đơn giản và mạnh mẽ cho sự phát triển hơn nữa.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 20/09/2018
// The Absolute Price Oscillator displays the difference between two exponential 
// moving averages of a security's price and is expressed as an absolute value.
// How this indicator works
//    APO crossing above zero is considered bullish, while crossing below zero is bearish.
//    A positive indicator value indicates an upward movement, while negative readings 
//      signal a downward trend.
//    Divergences form when a new high or low in price is not confirmed by the Absolute Price 
//      Oscillator (APO). A bullish divergence forms when price make a lower low, but the APO 
//      forms a higher low. This indicates less downward momentum that could foreshadow a bullish 
//      reversal. A bearish divergence forms when price makes a higher high, but the APO forms a 
//      lower high. This shows less upward momentum that could foreshadow a bearish reversal.
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Absolute Price Oscillator (APO) Backtest 2.0", shorttitle="APO")
LengthShortEMA = input(10, minval=1)
LengthLongEMA = input(20, minval=1)
BuyZone = input(3, step = 0.01)
SellZone = input(-3, step = 0.01)
reverse = input(false, title="Trade reverse")
hline(BuyZone, color=green, linestyle=line)
hline(SellZone, color=red, linestyle=line)
hline(0, color=gray, linestyle=line)
xPrice = close
xShortEMA = ema(xPrice, LengthShortEMA)
xLongEMA = ema(xPrice, LengthLongEMA)
xAPO = xShortEMA - xLongEMA
pos = iff(xAPO > BuyZone, 1,
       iff(xAPO < SellZone, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )  
plot(xAPO, color=blue, title="APO")

Thêm nữa