
Chiến lược này là một chiến lược để tối ưu hóa cải tiến dựa trên tốc độ thay đổi của chỉ số động lực ((ROC)). So với chiến lược ROC ban đầu, chiến lược này được tối ưu hóa như sau:
Với các phương tiện tối ưu hóa này, bạn có thể lọc ra nhiều tín hiệu không hiệu quả, làm cho chiến lược ổn định và đáng tin cậy hơn.
Chỉ số cốt lõi của chiến lược này là tốc độ thay đổi ((ROC)). ROC đo lường tốc độ thay đổi của giá cổ phiếu trong một chu kỳ nhất định. Chiến lược này đầu tiên tính toán giá trị ROC dài 9 chu kỳ.
Độ mạnh tương đối này được xử lý bằng phẳng thông qua SMA dài 10 và lọc các biến động ngắn hạn để có được đường cong phẳng. Khi đường cong phẳng tăng 3 ngày liên tiếp và giá trị thấp hơn -80%, cho rằng giá cổ phiếu bắt đầu giảm và tạo ra dấu hiệu đáy, vì vậy làm nhiều hơn; Khi đường cong phẳng giảm 3 ngày liên tiếp và giá trị cao hơn 80%, cho rằng giá cổ phiếu bắt đầu giảm và tạo ra dấu hiệu đỉnh, vì vậy giữ vị trí bằng phẳng.
Chiến lược này có những ưu điểm chính so với chiến lược ROC ban đầu:
Nhìn chung, chiến lược này đã xử lý hiệu quả chỉ số ROC, giúp nó phù hợp hơn với giao dịch thực.
Chiến lược này có những rủi ro:
Để giảm thiểu rủi ro trên, bạn có thể xem xét kết hợp các chỉ số xu hướng để xác định xu hướng lớn; điều chỉnh tham số giá trị thấp, thử nghiệm tham số tối ưu; tối ưu hóa tham số chu kỳ SMA.
Chiến lược này có thể được tối ưu hóa theo các hướng sau:
Chiến lược này là chiến lược tối ưu hóa phát triển thứ cấp dựa trên chỉ số ROC. Nó giới thiệu các phương tiện như so sánh giá trị tối đa lịch sử, làm mỏng SMA và giá trị mua bán, có thể lọc tín hiệu không hiệu quả, làm cho chiến lược ổn định hơn. Ưu điểm chính là chất lượng tín hiệu cao, phù hợp với thị trường thực.
/*backtest
start: 2024-02-12 00:00:00
end: 2024-02-19 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="Rate Of Change Mod Strategy", shorttitle="ROC", format=format.price, precision=2)
//length = input.int(9, minval=1)
//source = input(close, "Source")
//roc = 100 * (source - source[length])/source[length]
//plot(roc, color=#2962FF, title="ROC")
//hline(0, color=#787B86, title="Zero Line")
length = input.int(9, minval=1, title="Length")
maxHistory = input(200, title="Max Historical Period for ROC")
lenghtSmooth = input.int(10, minval=1, title="Length Smoothed ROC")
lenghtBUY = input.int(-80, title="Buy Threshold")
lenghtSELL = input.int(80, title="Buy Threshold")
source = close
roc = 100 * (source - source[length]) / source[length]
// Calculate the maximum ROC value in the historical period
maxRoc = ta.highest(roc, maxHistory)
// Calculate current ROC as a percentage of the maximum historical ROC
rocPercentage = (roc / maxRoc) * 100
rocPercentageS = ta.sma(rocPercentage, lenghtSmooth)
if ta.rising(rocPercentageS, 3) and rocPercentageS < lenghtBUY
strategy.entry("Buy", strategy.long)
if ta.falling(rocPercentageS, 3) and rocPercentageS > lenghtSELL
strategy.close("Buy")
plot(rocPercentage, color=color.new(color.blue, 0), title="Percentage ROC")
plot(rocPercentageS, color=color.new(#21f32c, 0), title="Percentage ROC")
hline(0, color=color.new(color.gray, 0), title="Zero Line")