Chiến lược lưới chữ nhật RSI động


Ngày tạo: 2023-10-30 11:29:30 sửa đổi lần cuối: 2023-10-30 11:29:30
sao chép: 0 Số nhấp chuột: 1022
1
tập trung vào
1617
Người theo dõi

Chiến lược lưới chữ nhật RSI động

Tổng quan

Chiến lược này là một chiến lược tương tự như Grid Bot, chủ yếu được sử dụng cho giao dịch thuật toán. Nó sử dụng một Grid Grid động, không bằng nhau, dựa trên khối lượng giao dịch và chỉ cập nhật lưới khi RSI đáp ứng các điều kiện cụ thể. Nó cũng có tính năng giao dịch đột phá, khác với Grid Bot thông thường (Grid Bot điển hình bán khi đạt đến đường lưới cao hơn, trong khi chiến lược này bán khi rơi xuống đường lưới thấp hơn trong các điều kiện cụ thể).

Nói một cách đơn giản, mỗi khi RSI đi qua đường tín hiệu mua/bán, chiến lược này sẽ cập nhật lưới thành giá cao nhất/giá thấp nhất dựa trên khối lượng giao dịch của nguồn dữ liệu mà bạn đã cung cấp (“src” trong cài đặt). Nó sẽ tạo ra 5 đường phân cách bằng nhau dựa trên khoảng cách này và sử dụng nguồn dữ liệu hiện tại để xác định nguồn dữ liệu gần nhất là đường nào. Nếu nguồn dữ liệu phá vỡ đường thẳng phía trên đường hiện tại, nó sẽ phát ra tín hiệu mua; nếu nguồn dữ liệu rơi xuống, nó sẽ phát ra tín hiệu bán.

Bạn có thể định cấu hình trong các thiết lập của bạn cho dù trống, nguồn dữ liệu, độ dài chu kỳ RSI và đường mua bán quá mức.

Nguyên tắc chiến lược

Lập luận cốt lõi của chiến lược này là:

  1. Sử dụng chỉ số RSI để xác định điểm đảo ngược xu hướng, sử dụng đường RSI để đi qua vùng quá mua hoặc vùng quá bán được thiết lập như tín hiệu xác nhận.

  2. Khi tín hiệu xác nhận RSI xuất hiện, hãy ghi lại giá cao nhất và giá thấp nhất trong một chu kỳ nhất định, đặt thành mức thấp trên lưới.

  3. Theo giới hạn trên và dưới, nó được chia thành 5 đường lưới, để xác định giá gần với đường lưới nào.

  4. Khi giá phá vỡ đường lưới trên đường lưới, hãy mua nhiều; khi giá giảm xuống đường lưới dưới đường lưới, hãy tháo dỡ.

  5. Sử dụng cách đột phá lưới, thay vì cách Grid Bot thông thường chạm vào lưới, có thể nắm bắt được sự đột phá xu hướng tốt hơn.

  6. Khi giao dịch kết thúc, hãy đặt hàng toàn bộ các lệnh kim tự tháp để tránh rủi ro qua đêm.

Chiến lược này bao gồm:

  1. Cài đặt tham số đầu vào: bao gồm nguồn dữ liệu, tham số RSI, làm nhiều lựa chọn nhượng quyền.

  2. Tính toán chỉ số RSI: Tính toán chỉ số RSI và đánh giá xem có tín hiệu vượt qua hay không.

  3. Cài đặt lưới động: Ghi lại phạm vi giá và tính toán đường lưới khi tín hiệu RSI xảy ra.

  4. Đánh giá tín hiệu: Chẩn đoán xem giá có phá vỡ lưới lên xuống hay không, và đánh giá thêm tín hiệu tháo lỗ.

  5. Quản lý đơn đặt hàng: Gửi các tín hiệu tháo dỡ nhiều và đặt hàng bằng phẳng trước khi đóng cửa.

  6. Hình vẽ giao diện: hiển thị đường lưới, làm thêm khu vực trống, v.v.

Bằng cách cập nhật mạng lưới động, kết hợp với các chỉ số RSI để đánh giá xu hướng và tín hiệu phá vỡ, chiến lược này cho phép theo dõi xu hướng hiệu quả và điều chỉnh hướng kịp thời khi đảo ngược. Việc đóng cửa trước khi đóng cửa có thể kiểm soát hiệu quả rủi ro qua đêm.

Phân tích lợi thế

Chiến lược này có những ưu điểm chính sau:

  1. Một mạng lưới động có thể tự điều chỉnh theo xu hướng, thay vì một mạng lưới cố định không thay đổi, có tính linh hoạt hơn.

  2. Chỉ điều chỉnh lưới khi RSI xác nhận xu hướng đảo ngược, bạn có thể lọc một số tín hiệu nhiễu.

  3. Sử dụng các tín hiệu đột phá thay vì chỉ chạm vào tín hiệu, bạn có thể nắm bắt chính xác hơn các điểm biến đổi xu hướng.

  4. Các nhà đầu tư có thể giảm bớt rủi ro biến động lớn trong đêm và bảo vệ lợi nhuận của họ bằng cách hoàn toàn thanh toán trước khi đóng cửa.

  5. Chỉ số RSI giúp đánh giá tốt hơn về tình trạng quá mua và quá bán, kết hợp với mạng lưới động.

  6. Sử dụng mô hình phá vỡ thay vì mô hình hồi phục, bạn có thể có cơ hội tốt hơn để tham gia vào xu hướng ban đầu.

  7. Điều chỉnh khoảng cách lưới và tỷ lệ khối lượng giao dịch cho phép điều chỉnh các đặc điểm rủi ro và lợi nhuận của chiến lược một cách linh hoạt.

  8. GUI trực quan hiển thị phân bố lưới và khu vực làm trống.

  9. Bạn có thể chọn để mở hoặc không để đáp ứng nhu cầu của các nhà giao dịch khác nhau.

  10. Các quy tắc đơn giản, rõ ràng, dễ hiểu và phù hợp với giao dịch thuật toán.

Những ưu điểm trên cho phép chiến lược này tự động theo dõi xu hướng, đồng thời kiểm soát rủi ro, phù hợp với ứng dụng thực tế của giao dịch định lượng.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro tiềm ẩn cần lưu ý:

  1. Trong một xu hướng chấn động lớn, có thể có nguy cơ dừng lỗ. Bạn có thể nới lỏng phạm vi dừng lỗ một cách thích hợp, hoặc tạm dừng chiến lược trong thời gian chấn động.

  2. Có thể xảy ra một đợt nhảy vọt lớn vào ban đêm, dẫn đến vị trí mở lớn hơn. Bạn có thể xem xét giảm tỷ lệ vị trí để tránh rủi ro này.

  3. Thiết lập tham số không đúng cách có thể dẫn đến giao dịch thường xuyên hoặc tín hiệu bị lỗi. Các tham số tối ưu hóa nên được kiểm tra cẩn thận.

  4. Khi phí giao dịch cao, lợi nhuận giao dịch lưới có thể bị ăn nhiều lần. Bạn nên điều chỉnh số lượng giao dịch thích hợp hoặc chọn sàn giao dịch có phí thấp hơn.

  5. Các tín hiệu phá vỡ có thể xuất hiện muộn hơn một chút so với điểm đảo ngược xu hướng, cần thiết phải thiết lập độ lớn phá vỡ hợp lý.

  6. Chiến lược này có thể không hoạt động tốt trong giai đoạn thị trường chứng khoán ổn định. Có thể được sử dụng với các chỉ số khác.

  7. Cần đủ tiền để hỗ trợ các vị trí lớn và vị trí kim tự tháp, nếu không hiệu quả sẽ không tốt.

Phản ứng:

  1. Tối ưu hóa các tham số, giảm tần suất giao dịch, ngăn chặn giao dịch quá mức.

  2. Giao dịch với các chỉ số xu hướng, tránh giao dịch trong thời gian chấn động.

  3. Điều chỉnh vị thế, giảm tỷ lệ giao dịch đơn lẻ, kiểm soát rủi ro.

  4. Kiểm tra các tham số đột phá khác nhau, cân bằng tính kịp thời và ổn định.

  5. Có thể xem xét kết hợp với các chỉ số khác để tận dụng thông tin thị trường nhiều hơn.

  6. Tăng vốn, mở rộng quy mô vị trí, tăng lợi nhuận.

Bằng các phương pháp như tối ưu hóa tham số, quản lý rủi ro và kết hợp với các chiến lược khác, bạn có thể giảm thiểu rủi ro của chiến lược này đến một mức độ nào đó, cho phép nó hoạt động ổn định.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa hơn trong các lĩnh vực sau:

  1. Tối ưu hóa các tham số RSI, thử nghiệm các độ dài chu kỳ RSI khác nhau, tìm kiếm sự kết hợp tham số tốt nhất.

  2. Kiểm tra các thiết lập khoảng cách lưới khác nhau để tìm ra lưới có tỷ lệ lợi nhuận rủi ro tốt nhất.

  3. Cố gắng kết hợp các tín hiệu lọc với các chỉ số khác, chẳng hạn như MACD, KD, để cải thiện độ chính xác.

  4. Phát triển chiến lược dừng lỗ thích ứng, động điều chỉnh mức dừng lỗ theo mức độ biến động của thị trường.

  5. Tăng điều kiện mở vị trí, chỉ mở vị trí khi xu hướng đủ rõ ràng, tránh bị mắc kẹt.

  6. Tối ưu hóa phản hồi, thử nghiệm dữ liệu trong một khoảng thời gian dài hơn, đánh giá tính ổn định của tham số.

  7. Cố gắng tối ưu hóa các tham số động dựa trên học máy để các chiến lược thích ứng với các môi trường thị trường.

  8. Khám phá các chiến lược kết hợp với các tùy chọn để bảo hiểm rủi ro vị trí bằng các tùy chọn.

  9. Điều chỉnh các tham số tối ưu hóa chiến lược theo các đặc điểm của thị trường gần đây để duy trì hiệu quả của chiến lược.

  10. Phát triển nền tảng tối ưu hóa chiến lược đồ họa, hỗ trợ kiểm tra tối ưu hóa nhanh chóng.

Bằng cách tự động hóa các tham số tối ưu hóa, kết hợp các chiến lược và đưa ra nhiều thông tin thị trường hơn, chiến lược này có thể đạt được sự ổn định và lợi nhuận tốt hơn, trở thành chiến lược giao dịch định lượng đáng tin cậy thực sự.

Tóm tắt

Nhìn chung, chiến lược RSI Rectangular Grid sử dụng chỉ số RSI để xác định tín hiệu xác nhận xu hướng, thiết lập mạng lưới động của phạm vi giá, giao dịch khi phá vỡ đường lưới, hoàn toàn thanh toán trong ngày, tạo thành một chiến lược giao dịch thuật toán theo dõi xu hướng linh hoạt. So với chiến lược lưới cố định, nó có thể thích ứng tốt hơn với sự thay đổi của thị trường.

Chiến lược này có một số lợi thế, bao gồm kết hợp các chỉ số RSI để xác định xu hướng, tự điều chỉnh lưới động, giao dịch theo mô hình đột phá và hoàn toàn bằng một ngày. Điều này cho phép nó theo dõi xu hướng hiệu quả và kiểm soát rủi ro. Tuy nhiên, chiến lược này cũng có một số rủi ro tiềm ẩn cần lưu ý, chẳng hạn như rủi ro dừng lỗ trong xu hướng dao động, rủi ro bay qua đêm. Những rủi ro này có thể được giảm thiểu bằng cách tối ưu hóa tham số, kết hợp với các tín hiệu khác và các phương tiện quản lý rủi ro.

Chiến lược này cũng có nhiều hướng tối ưu hóa, có thể được tối ưu hóa thành một chiến lược giao dịch thuật toán ổn định hơn, có lợi nhuận cao hơn bằng cách giới thiệu nhiều chỉ số, tham số tối ưu hóa học máy và nền tảng phản hồi đồ họa. Nhìn chung, chiến lược này cung cấp một khung thuật toán theo dõi xu hướng đáng tin cậy, dễ sử dụng cho giao dịch định lượng.

Mã nguồn chiến lược
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
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/
// © wbburgin

//@version=5
// strategy("RSI Box Strategy (pseudo-Grid Bot)", overlay=true, initial_capital = 10000, 
//  default_qty_type = strategy.percent_of_equity, default_qty_value = 1, pyramiding = 33, commission_value=0.10)

src = input.source(close,"Source")
rsiLength = input.int(14,"RSI Length")
oblvl = input.int(70,"Overbought Level")
oslvl = input.int(30,"Oversold Level")
useShorts = input.bool(false,"Use Shorts",inline="B")
showGrid = input.bool(false,"Show Grid",inline="B")

rsi = ta.rsi(src,rsiLength)

rsi_crossdn = ta.crossunder(rsi,oblvl)
rsi_crossup = ta.crossover(rsi,oslvl)

highest = ta.vwma(ta.highest(src,rsiLength),rsiLength)
lowest = ta.vwma(ta.lowest(src,rsiLength), rsiLength)

gridTop = ta.valuewhen(rsi_crossdn,highest,0)
gridBottom = ta.valuewhen(rsi_crossup,lowest,0)
gridMiddle = math.avg(gridTop,gridBottom)
gridMidTop = math.avg(gridMiddle,gridTop)
gridMidBottom = math.avg(gridMiddle,gridBottom)

diff1 = math.abs(src - gridTop)
diff2 = math.abs(src - gridBottom)
diff3 = math.abs(src - gridMiddle)
diff4 = math.abs(src - gridMidTop)
diff5 = math.abs(src - gridMidBottom)

minDiff = math.min(diff1, diff2, diff3, diff4, diff5)

// Determine which line is the closest
float closestLine = na
if minDiff == diff1
    closestLine := gridTop
else if minDiff == diff2
    closestLine := gridBottom
else if minDiff == diff3
    closestLine := gridMiddle
else if minDiff == diff4
    closestLine := gridMidTop
else if minDiff == diff5
    closestLine := gridMidBottom

buyCrosses = ta.crossover(src,gridTop) or ta.crossover(src,gridBottom) or ta.crossover(src,gridMiddle) or ta.crossover(src,gridMidTop) or ta.crossover(src,gridMidBottom)
sellCrosses= ta.crossunder(src,gridTop) or ta.crossunder(src,gridBottom) or ta.crossunder(src,gridMiddle) or ta.crossunder(src,gridMidTop) or ta.crossunder(src,gridMidBottom)

condition_bull = buyCrosses
condition_bear = sellCrosses

var float bull_status_line = na
var float bear_status_line = na
var float bull_buy_line = na
var float bear_sell_line = na

if condition_bull
    bull_status_line := closestLine
if condition_bear
    bear_status_line := closestLine

if bull_status_line == gridBottom
    bull_buy_line := gridMidBottom
if bull_status_line == gridMidBottom
    bull_buy_line := gridMiddle
if bull_status_line == gridMiddle
    bull_buy_line := gridMidTop
if bull_status_line == gridMidTop
    bull_buy_line := gridTop

if bear_status_line == gridTop
    bear_sell_line := gridMidTop
if bear_status_line == gridMidTop
    bear_sell_line := gridMiddle
if bear_status_line == gridMiddle
    bear_sell_line := gridMidBottom
if bear_status_line == gridMidBottom
    bear_sell_line := gridBottom

l = ta.crossover(src,bull_buy_line)
s = ta.crossunder(src,bear_sell_line)

if l
    strategy.entry("Long",strategy.long)
if s
    strategy.close("Long")
    if useShorts
        strategy.entry("Short",strategy.short)

// Plotting
in_buy = ta.barssince(l) < ta.barssince(s)
u=plot(bull_buy_line,color=na,title="Buy Plot")
d=plot(bear_sell_line,color=na,title="Sell Plot")

plot(not showGrid?na:gridBottom,color=color.new(color.white,75),title="Grid Line -2")
plot(not showGrid?na:gridMidBottom,color=color.new(color.white,75),title="Grid Line -1")
plot(not showGrid?na:gridMiddle,color=color.new(color.white,75),title="Grid Line 0")
plot(not showGrid?na:gridMidTop,color=color.new(color.white,75),title="Grid Line 1")
plot(not showGrid?na:gridTop,color=color.new(color.white,75),title="Grid Line 2")


fill(u,d,color=in_buy ? color.new(color.lime,75) : color.new(color.red,75))