
Chiến lược này kết hợp các chỉ số trung bình di chuyển, chỉ số giá trị và chỉ số biến động để tạo ra một bộ lọc ba, nhằm mục đích nắm bắt xu hướng đường ngắn trung bình và có thể nhận được lợi nhuận tốt hơn trong tình trạng xu hướng.
Chiến lược này bao gồm ba phần chính:
Xây dựng bộ lọc xu hướng bằng chỉ số di chuyển trung bình 20 ngày và chỉ số di chuyển trung bình 60 ngày. Một tín hiệu mua được hình thành khi đường di chuyển ngắn hạn đi qua đường di chuyển dài hạn trên đường di chuyển ngắn hạn; một tín hiệu bán được hình thành khi đường di chuyển dài hạn đi qua đường di chuyển ngắn hạn dưới đường di chuyển ngắn hạn.
Sử dụng số lượng giao dịch chia cho số lượng giao dịch, để xác định dòng tiền. Giá trị giao dịch tăng cho thấy dòng tiền ròng, giá trị giao dịch giảm cho thấy dòng tiền ròng.
Sử dụng 20 ngày Donchian Channel Width để tính toán Bollinger Bands Parameter, tạo ra quỹ đạo lên xuống. Khi giá gần đường lên, cho thấy có thể đối mặt với áp lực phục hồi; Khi giá gần đường xuống, cho thấy có thể đối mặt với cơ hội phục hồi hỗ trợ.
Kết hợp ba phần này, xây dựng chiến lược đa không gian để bắt được xu hướng đường ngắn. Khi đường trung bình di chuyển ngắn hạn đi qua đường trung bình di chuyển dài hạn, và chỉ số giá trị đo là xu hướng tăng, giá chỉ vừa rời khỏi đường dây Brin, hình thành tín hiệu mua; Khi đường trung bình di chuyển ngắn hạn đi qua đường trung bình di chuyển dài hạn, chỉ số giá trị đo là xu hướng giảm, giá chỉ vừa rời khỏi đường dây Brin, hình thành tín hiệu bán.
Chiến lược này có những ưu điểm sau:
Bộ lọc ba chỉ số có thể ngăn chặn đột phá giả hiệu quả.
Trong khi đó, các tín hiệu có thể được tin cậy hơn khi xem xét xu hướng, dòng tiền và tình trạng quá mua quá bán.
Các tham số chỉ số đã được tối ưu hóa cho các chu kỳ và giống khác nhau.
Quá trình rút tiền có thể kiểm soát được, thu nhập ổn định.
Logic rõ ràng và dễ hiểu, tham số điều chỉnh linh hoạt.
Chiến lược này cũng có một số rủi ro:
Rủi ro biến động xu hướng. Khi xu hướng thị trường biến động, có thể dẫn đến dừng lỗ.
Sự chậm trễ của chỉ số số lượng giá. Sự chậm trễ của chỉ số số lượng giá có thể làm thay đổi giá, có thể bỏ lỡ điểm mua và bán.
Khó điều chỉnh các tham số. Các tham số cần phải được điều chỉnh theo các giống và chu kỳ khác nhau, nếu không hiệu quả có thể không tốt.
Kiểm soát rút tiền có thể được cải thiện. Kiểm soát rút tiền có thể được tối ưu hóa hơn nữa bằng cách dừng lỗ động hoặc quản lý vị trí.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Thêm chiến lược dừng lỗ, kiểm soát rút lui hơn nữa bằng cách di chuyển dừng lỗ, theo dõi dừng lỗ.
Thêm mô-đun quản lý vị trí, điều chỉnh quy mô vị trí theo biến động của thị trường.
Tối ưu hóa các tham số chỉ số để tìm ra sự kết hợp tối ưu của các tham số trong các chu kỳ giống khác nhau.
Tăng khả năng phán đoán của mô hình học máy, tăng độ chính xác của tín hiệu.
Kết hợp với các chỉ số cảm xúc, thông tin, và nhiều thứ khác để cải thiện sự phán đoán về các sự kiện bất ngờ.
Chiến lược này kết hợp sử dụng moving average, chỉ số giá trị và chỉ số Brin, hoạt động tốt hơn khi nắm bắt xu hướng ở đường trung và đường ngắn. Bằng cách tối ưu hóa hơn nữa các khía cạnh như dừng lỗ, quản lý vị trí và lựa chọn tham số, hiệu quả chiến lược có thể đạt được tốt hơn.
/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 29/04/2019
// This is combo strategies for get
// a cumulative signal. Result signal will return 1 if two strategies
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50.
// The strategy sells at market, if close price is lower than the previous close price
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Secon strategy
// The Average Directional Movement Index Rating (ADXR) measures the strength
// of the Average Directional Movement Index (ADX). It's calculated by taking
// the average of the current ADX and the ADX from one time period before
// (time periods can vary, but the most typical period used is 14 days).
// Like the ADX, the ADXR ranges from values of 0 to 100 and reflects strengthening
// and weakening trends. However, because it represents an average of ADX, values
// don't fluctuate as dramatically and some analysts believe the indicator helps
// better display trends in volatile markets.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
vFast = sma(stoch(close, high, low, Length), KSmoothing)
vSlow = sma(vFast, DLength)
pos = 0.0
pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0)))
pos
fADX(Len) =>
up = change(high)
down = -change(low)
trur = rma(tr, Len)
plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, Len) / trur)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, Len) / trur)
sum = plus + minus
100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), Len)
ADXR(LengthADX, LengthADXR, Signal1, Signal2) =>
xADX = fADX(LengthADX)
xADXR = (xADX + xADX[LengthADXR]) / 2
pos = 0.0
pos := iff(xADXR < Signal1, 1,
iff(xADXR > Signal2, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal and Average Directional Movement Index Rating", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
LengthADX = input(title="Length ADX", defval=14)
LengthADXR = input(title="Length ADXR", defval=14)
Signal1 = input(13, step=0.01)
Signal2 = input(45, step=0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posADXR = ADXR(LengthADX, LengthADXR, Signal1, Signal2 )
pos = iff(posReversal123 == 1 and posADXR == 1 , 1,
iff(posReversal123 == -1 and posADXR == -1, -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)
if (possig == 0)
strategy.close_all()
barcolor(possig == -1 ? red: possig == 1 ? green : blue )