Chiến lược dao động Chaikin

Tác giả:ChaoZhang, Ngày: 2023-10-12 16:41:54
Tags:

Tổng quan

Chiến lược dao động Chaikin sử dụng chỉ số dao động Chaikin để đánh giá dòng vốn trên thị trường và nắm bắt những thay đổi xu hướng. Chiến lược này kết hợp các đường trung bình di chuyển nhanh và chậm để tạo thành đường cong chỉ số, mua khi đường cong vượt qua trên đường xu hướng và bán khi đường cong vượt qua dưới để theo dõi xu hướng thị trường.

Chiến lược logic

Chiến lược này dựa trên chỉ số Chaikin Oscillator, cải thiện chỉ số Williams Accumulation/Distribution bằng cách sử dụng giá trung bình của giá cao và giá thấp thay vì giá mở để giải quyết vấn đề giá mở thiếu.

Chaikin Oscillator = Fast EMA của Accumulation/Distribution Index - Slow EMA của Accumulation/Distribution Index

Khi chỉ số tích lũy/phân phối được tính như sau:

Chỉ số tích lũy/phân phối = (Close - Open) / (High - Low) * Volume

Vì không có giá khởi điểm, nó được tính như sau:

Chỉ số tích lũy/phân phối = (Gần - (cao + thấp) /2) / (cao - thấp) * Khối lượng

Chỉ số này lấy sự khác biệt giữa EMA nhanh và chậm của chỉ số là dao động viên Chaikin. Một đường vượt trên 0 chỉ ra tín hiệu mua, trong khi đường vượt dưới 0 chỉ ra tín hiệu bán.

Lý thuyết cụ thể là:

  1. Tính toán chỉ số tích lũy / phân phối
  2. Tính toán EMA nhanh và chậm
  3. Lấy sự khác biệt như là Chaikin dao động
  4. Mua khi dao động vượt trên 0, bán khi vượt dưới 0

Phân tích lợi thế

Những lợi thế của chiến lược này là:

  1. Thu thập dòng vốn để xác định xu hướng thị trường
  2. Kết hợp các đường trung bình di chuyển nhanh và chậm để lọc các sự phá vỡ sai
  3. Quy tắc đơn giản và rõ ràng dễ thực hiện

Phân tích rủi ro

Một số rủi ro của chiến lược này là:

  1. Bộ dao động Chaikin chậm lại, có khả năng bỏ lỡ các điểm chuyển hướng xu hướng
  2. Cần điều chỉnh các thông số để tránh giao dịch quá mức
  3. Nhu cầu dừng lỗ để kiểm soát các giao dịch thua lỗ duy nhất

Rủi ro có thể được quản lý thông qua tối ưu hóa tham số, kết hợp với các chỉ số khác, v.v.

Hướng dẫn cải thiện

Một số cách để cải thiện chiến lược này:

  1. Tối ưu hóa thời gian EMA nhanh và chậm để cân bằng tần suất và sự ổn định
  2. Thêm các điều kiện thoát như tín hiệu đảo ngược xu hướng
  3. Thêm các bộ lọc như RSI, MACD để xác nhận tín hiệu
  4. Kết hợp chiến lược dừng lỗ để kiểm soát lỗ
  5. Điều chỉnh các tham số cho các sản phẩm khác nhau để tạo các chiến lược tùy chỉnh

Kết luận

Nói chung, chiến lược dao động Chaikin tương đối ổn định và đáng tin cậy. Các thông số điều chỉnh tinh tế có thể cân bằng lợi nhuận và rủi ro. Thêm bộ lọc và dừng lỗ có thể cải thiện độ bền hơn nữa.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-10-11 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/09/2017
//    Indicator plots Money Flow Indicator (Chaikin). This indicator looks 
//    to improve on Larry William's Accumulation Distribution formula that 
//    compared the closing price with the opening price. In the early 1970's, 
//    opening prices for stocks stopped being transmitted by the exchanges. 
//    This made it difficult to calculate Williams' formula. The Chaikin 
//    Oscillator uses the average price of the bar calculated as follows 
//    (High + Low) /2 instead of the Open.
//    The indicator subtracts a 10 period exponential moving average of the 
//    AccumDist function from a 3 period exponential moving average of the 
//    AccumDist function.    
//
// You can change long to short in the Input Settings
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Money Flow Indicator (Chaikin Oscillator)", shorttitle="MFI")
Fast = input(3, minval=1)
Slow = input(10, minval=1)
reverse = input(false, title="Trade reverse")
hline(0, color=gray, linestyle=hline.style_dashed)
lenMax = max(Fast, Slow)
lenMin = min(Fast, Slow)
xDiv = (high - low) * volume
SumMax = sum(iff(xDiv > 0, (close - open) / (high - low) * volume , 0) , lenMax)
SumMin = sum(iff(xDiv > 0, (close - open) / (high - low) * volume , 0) , lenMin)
emaMax = ema(SumMax, lenMax)
emaMin = ema(SumMin, lenMin)
nRes = emaMax - emaMin
pos = iff(nRes > 0, 1,
	   iff(nRes < 0, -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(nRes, color=blue, title="RMI")

Thêm nữa