
Ý tưởng chính của chiến lược này là kết hợp các chỉ số percentrank và các tham số tối ưu hóa để đánh giá và theo dõi xu hướng giá. Chiến lược này tạo ra tín hiệu giao dịch bằng cách so sánh giá hiện tại với tỷ lệ phần trăm của giá trong một khoảng thời gian lịch sử nhất định, để nắm bắt hiệu ứng hình ảnh phản chiếu giữa, theo dõi xu hướng và thu được lợi nhuận dư thừa.
Chiến lược này sử dụng chỉ số percentrank để xác định xu hướng giá. Percentrank cho biết mức giá hiện tại có độ mạnh tương đối trong chu kỳ xem.
Phạm vi giá trị của percentrank nằm trong khoảng từ 0 đến 100. Khi giá trị percentrank gần 0 thì giá hiện tại gần giá thấp nhất trong chu kỳ xem, thuộc vùng giá trị đánh giá thấp; Khi gần 100 thì giá hiện tại gần giá cao nhất trong chu kỳ xem, thuộc vùng giá trị đánh giá cao.
Chiến lược này cũng giới thiệu tham số scale như là độ lệch. Làm cho phạm vi từ 0 đến 100 di chuyển đến phạm vi scale đến 100 + scale. Đồng thời thiết lập hai đường tín hiệu level_1 và level_2. Trong đó level_1 cho thấy mức độ xem nhiều, level_2 cho thấy mức độ xem không.
Khi chỉ số percentrank giá từ dưới lên vượt qua level_1, nó tạo ra tín hiệu xem nhiều; khi từ trên xuống vượt qua level_2, nó tạo ra tín hiệu xem hẹp.
Đối với các rủi ro trên, có thể tối ưu hóa bằng cách điều chỉnh các tham số len, scale, level; đồng thời có thể kết hợp với các chỉ số khác để xác nhận, tránh giao dịch sai.
Chiến lược này có thể được tối ưu hóa hơn nữa:
Chiến lược này có tư duy tổng thể rõ ràng, sử dụng phương pháp định lượng tối ưu hóa tham số để đánh giá và theo dõi xu hướng giá. Có giá trị thực tế nhất định, nhưng vẫn cần được thử nghiệm và tối ưu hóa hơn nữa, giảm rủi ro thực tế và tăng khả năng lợi nhuận ổn định.
/*backtest
start: 2023-12-02 00:00:00
end: 2024-01-01 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Alex_Dyuk
//@version=4
strategy(title="percentrank", shorttitle="percentrank")
src = input(close, title="Source")
len = input(title="lookback - Период сравнения", type=input.integer, defval=10, minval=2)
scale = input(title="scale offset - смещение шкалы", type=input.integer, defval=50, minval=0, maxval=100)
level_1 = input(title="sygnal line 1", type=input.integer, defval=30)
level_2 = input(title="sygnal line 2", type=input.integer, defval=-30)
prank = percentrank(src,len)-scale
plot(prank, style = plot.style_columns)
plot(level_2, style = plot.style_line, color = color.red)
plot(level_1, style = plot.style_line, color = color.green)
longCondition = (crossunder(level_1, prank) == true)
if (longCondition)
strategy.entry("Long", strategy.long)
longExitCondition = (crossover(level_2, prank) == true)
if (longExitCondition)
strategy.close("Long")
shortCondition = (crossover(level_2, prank) == true)
if (shortCondition)
strategy.entry("Short", strategy.short)
shortexitCondition = (crossunder(level_1, prank) == true)
if (shortexitCondition)
strategy.close("Short")