Chiến lược giao dịch theo xu hướng và khoảng trống trung tâm


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

Chiến lược giao dịch theo xu hướng và khoảng trống trung tâm

Tổng quan

Chiến lược này sử dụng chỉ số CCI và chỉ số động lực kết hợp với chỉ số RSI để xác định xu hướng thị trường, tham gia khi thấy hiện tượng nhảy vọt trong khu vực mua bán quá mức, đồng thời sử dụng Bollinger để xác định xu hướng và quay trở lại trung tâm. Chiến lược có thể xác định hiệu quả phá vỡ và điều chỉnh, tham gia vào giai đoạn bắt đầu xu hướng, và có thể điều chỉnh tùy theo tham số để phù hợp với các loại giao dịch khác nhau.

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

Đầu tiên, chiến lược thông qua các chỉ số CCI hoặc chỉ số động lực trên trục 0 và dưới trục 0 để đánh giá tín hiệu mua và bán. Đồng thời, yêu cầu chỉ số RSI nằm trong khu vực mua bán quá mức, tức là RSI cao hơn 65 là khu vực mua bán quá mức và thấp hơn 35 là khu vực bán quá mức. Điều này có thể tránh phát ra tín hiệu sai trong khu vực không mua bán quá mức.

Ngoài ra, các chiến lược có thể chọn xem RSI có phân kỳ tăng (thấp lên một chút) và phân kỳ giảm (thấp xuống một chút) để đảm bảo tín hiệu mua và bán được tin cậy hơn.

Khi phù hợp với tín hiệu mua của CCI hoặc động lực, và RSI nằm trong vùng bán quá, chiến lược sẽ phán đoán xem mức cao và thấp trước đó có nằm trên trung tâm của Bollinger Bands hay không, và nếu có, sẽ tạo ra tín hiệu mua. Ngược lại, khi phù hợp với tín hiệu bán và mức cao và thấp trước đó nằm dưới trung tâm của Bollinger Bands, sẽ tạo ra tín hiệu bán.

Bằng cách này, chiến lược sử dụng cả chỉ số xu hướng và chỉ số biến động để bắt kịp khi xu hướng bắt đầu và sử dụng phán đoán trung tâm để tránh phá vỡ giả. Khi giá thoát khỏi vòng Brin xuống đường, chiến lược sẽ hoàn toàn bằng phẳng để khóa lợi nhuận và ngăn chặn sự mở rộng của rút lui.

Phân tích lợi thế

  1. Kết hợp chỉ số xu hướng và chỉ số biến động, có thể vào khi xu hướng bắt đầu, đồng thời tránh không cần thiết để đặt vị trí trong thị trường biến động

  2. Sử dụng các nốt kết nối trong dây chuyền Brin để nhảy vào tín hiệu, có thể lọc hiệu quả các đột phá giả

  3. Nhìn lại lịch sử của chỉ số RSI để tránh các tín hiệu giao dịch sai

  4. Giao dịch hoàn toàn tự động, không cần sự can thiệp của con người, phù hợp với giao dịch thuật toán

  5. Các tham số chiến lược có thể được điều chỉnh tự do để phù hợp với các loại giao dịch khác nhau

  6. Có thể đặt trạm dừng lỗ, kiểm soát rủi ro hiệu quả

Phân tích rủi ro

  1. Thiết lập không đúng các tham số của vùng Brin có thể dẫn đến sự thất bại của phán đoán trung ương

  2. Thiết lập tham số chỉ số không đúng, có thể dẫn đến quá nhiều tín hiệu sai

  3. Thâm nhập thất bại, giá phải dừng lại kịp thời khi quay trở lại trung tâm Blink

  4. Các nhà đầu tư có thể sẽ không đạt được kết quả đột phá khi các loại thương mại không có đủ tính thanh khoản.

  5. Trước khi giao dịch, hãy kiểm tra dữ liệu lịch sử để tránh sự phù hợp của đường cong.

  6. Cần chú ý đến thời gian giao dịch để tránh đột phá giả

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

  1. Tối ưu hóa các tham số Brin để làm cho trung tâm ổn định hơn

  2. Kiểm tra hiệu quả của các tham số chỉ số khác nhau đối với các giống khác nhau

  3. Tăng khả năng kiểm soát khối lượng giao dịch, tránh quá nhiều vị trí đơn lẻ

  4. Tăng khả năng phân tích thời gian, hoạt động trong giờ giao dịch chính

  5. Thêm thuật toán học máy để tạo ra tín hiệu thông minh hơn

  6. Truy cập nhiều nguồn dữ liệu hơn để đánh giá xu hướng chung của thị trường

  7. Tăng sự tích hợp của nhiều chỉ số hơn để tạo ra một bảng chỉ số

Tóm tắt

Chiến lược này tích hợp chỉ số xu hướng và chỉ số biến động, có thể vào thị trường khi xu hướng bắt đầu. Đồng thời sử dụng các liên kết trung tâm trong vùng Brin như là tín hiệu đầu vào, có thể ngăn chặn hiệu quả các đột phá giả. Các tham số chiến lược có thể được điều chỉnh linh hoạt, thích ứng với các giống khác nhau, hiệu quả phản hồi tối ưu. Bước tiếp theo sẽ làm cho chiến lược mạnh mẽ hơn và đáng tin cậy hơn bằng cách tối ưu hóa các thiết lập tham số và kết hợp mô hình, để có được lợi nhuận vượt trội ổn định lâu dài.

Mã nguồn chiến lược
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title='BroTheJo Strategy', shorttitle='BTJ', overlay=true)

// Input settings
ccimomCross = input.string('CCI', 'Entry Signal Source', options=['CCI', 'Momentum'])
ccimomLength = input.int(10, minval=1, title='CCI/Momentum Length')
useDivergence = input.bool(false, title='Find Regular Bullish/Bearish Divergence')
rsiOverbought = input.int(65, minval=1, title='RSI Overbought Level')
rsiOversold = input.int(35, minval=1, title='RSI Oversold Level')
rsiLength = input.int(14, minval=1, title='RSI Length')
plotMeanReversion = input.bool(true, 'Plot Mean Reversion Bands on the chart')
emaPeriod = input(200, title='Lookback Period (EMA)')
bandMultiplier = input.float(1.6, title='Outer Bands Multiplier')

// CCI and Momentum calculation
momLength = ccimomCross == 'Momentum' ? ccimomLength : 10
mom = close - close[momLength]
cci = ta.cci(close, ccimomLength)
ccimomCrossUp = ccimomCross == 'Momentum' ? ta.cross(mom, 0) : ta.cross(cci, 0)
ccimomCrossDown = ccimomCross == 'Momentum' ? ta.cross(0, mom) : ta.cross(0, cci)

// RSI calculation
src = close
up = ta.rma(math.max(ta.change(src), 0), rsiLength)
down = ta.rma(-math.min(ta.change(src), 0), rsiLength)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
oversoldAgo = rsi[0] <= rsiOversold or rsi[1] <= rsiOversold or rsi[2] <= rsiOversold or rsi[3] <= rsiOversold
overboughtAgo = rsi[0] >= rsiOverbought or rsi[1] >= rsiOverbought or rsi[2] >= rsiOverbought or rsi[3] >= rsiOverbought

// Regular Divergence Conditions
bullishDivergenceCondition = rsi[0] > rsi[1] and rsi[1] < rsi[2]
bearishDivergenceCondition = rsi[0] < rsi[1] and rsi[1] > rsi[2]

// Mean Reversion Indicator
meanReversion = plotMeanReversion ? ta.ema(close, emaPeriod) : na
stdDev = plotMeanReversion ? ta.stdev(close, emaPeriod) : na
upperBand = plotMeanReversion ? meanReversion + stdDev * bandMultiplier : na
lowerBand = plotMeanReversion ? meanReversion - stdDev * bandMultiplier : na

// Entry Conditions
prevHigh = ta.highest(high, 1)
prevLow = ta.lowest(low, 1)
longEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition) and (prevHigh >= meanReversion) and (prevLow >= meanReversion)
shortEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition) and (prevHigh <= meanReversion) and (prevLow <= meanReversion)

// Plotting
oldLongEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition)
oldShortEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition)
plotshape(oldLongEntryCondition, title='BUY', style=shape.triangleup, location=location.belowbar, color=color.new(color.lime, 0), textcolor=color.new(color.white, 0), size=size.tiny)
plotshape(oldShortEntryCondition, title='SELL', style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)

// Strategy logic
if (longEntryCondition)
    strategy.entry("Buy", strategy.long)
if (shortEntryCondition)
    strategy.entry("Sell", strategy.short)

// Close all open positions when outside of bands
closeAll = (high >= upperBand) or (low <= lowerBand)

if (closeAll)
    strategy.close_all("Take Profit/Cut Loss")


// Plotting
plot(upperBand, title='Upper Band', color=color.fuchsia, linewidth=1)
plot(meanReversion, title='Mean', color=color.gray, linewidth=1)
plot(lowerBand, title='Lower Band', color=color.blue, linewidth=1)