Chiến lược đột phá đảo ngược trung bình


Ngày tạo: 2023-12-20 14:48:57 sửa đổi lần cuối: 2023-12-20 14:48:57
sao chép: 0 Số nhấp chuột: 637
1
tập trung vào
1621
Người theo dõi

Chiến lược đột phá đảo ngược trung bình

Tổng quan

Chiến lược phá vỡ giá trị trung bình đảo ngược là một chiến lược đảo ngược xu hướng với nhiều yếu tố. Nó kết hợp nhiều chỉ số kỹ thuật như đường trung bình di chuyển, dải Brin, chỉ số CCI, chỉ số RSI, nhằm nắm bắt cơ hội biến đổi giá từ khu vực quá mua quá bán. Chiến lược này cũng kết hợp với phân tích phân tán chính xác để phát hiện xu hướng hiện tại có phù hợp với trước đó hay không, do đó tránh phá vỡ giao dịch giả.

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

Lý luận cốt lõi của chiến lược này là khi giá đảo ngược từ vùng quá mua quá bán, hãy thực hiện giao dịch bán tháo thích hợp. Cụ thể, chiến lược đánh giá cơ hội đảo ngược theo bốn khía cạnh:

  1. Chỉ số CCI hoặc chỉ số động lực phát ra tín hiệu giao thoa vàng để đánh giá quá mua quá bán.

  2. Chỉ số RSI đánh giá xem có nằm trong khu vực mua và bán quá mức không. RSI cao hơn 65 là khu vực mua quá mức và thấp hơn 35 là khu vực bán quá mức.

  3. Sử dụng Brin để đánh giá giá trị của giá thành của một vùng bình thường. Khi giá trở lại vùng bình thường, nó có thể đảo ngược.

  4. Kiểm tra sự chênh lệch chính xác của chỉ số RSI, tránh theo đuổi phá vỡ giả.

Khi đáp ứng các điều kiện trên, chiến lược sẽ đi vào hướng ngược. Và thiết lập vị trí dừng lỗ, kiểm soát rủi ro.

Lợi thế chiến lược

Lợi thế lớn nhất của chiến lược này là kết hợp nhiều chỉ số để đánh giá cơ hội đảo ngược, tỷ lệ thắng trung bình cao hơn. Cụ thể, chủ yếu là:

  1. Xác định nhiều yếu tố, độ tin cậy cao hơn. Không chỉ dựa vào chỉ số duy nhất, giảm khả năng sai lầm.

  2. Giao dịch đảo chiều có khả năng chiến thắng cao.

  3. Phát hiện sự phân tán, tránh truy lùng đột phá giả và giảm rủi ro hệ thống.

  4. Kiểm soát rủi ro của hệ thống ngăn chặn thiệt hại.

Rủi ro và giải pháp

Chiến lược này cũng có một số rủi ro, chủ yếu tập trung vào những điểm sau:

  1. Đánh giá thời điểm đảo ngược không đúng. Kết quả là dừng bị kích hoạt.

  2. Cài đặt tham số Brinh không đúng, giá bình thường là bất thường. Cài đặt tham số tỷ lệ biến động thị trường nên được hỗ trợ.

  3. Số lần giao dịch có thể cao hơn. Mở rộng phạm vi các tham số phán đoán như CCI một cách thích hợp, giảm tần suất giao dịch.

  4. Sự cân bằng đa không gian có thể khác nhau. Các tham số chỉ số có hợp lý hay không nên được đánh giá dựa trên dữ liệu lịch sử.

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

Chiến lược này có thể được tối ưu hóa theo các hướng sau:

  1. Sử dụng thuật toán học máy để tự động tối ưu hóa các tham số chỉ số. Tránh lỗi kinh nghiệm nhân tạo.

  2. Thêm chỉ số đá phiến, chỉ số độ rộng và các chỉ số khác để đánh giá cường độ quá mua quá bán.

  3. Tăng số lượng giao dịch để đánh giá độ tin cậy. Ví dụ: khối lượng giao dịch, lưu trữ dữ liệu, v.v.

  4. Kết hợp dữ liệu blockchain để đánh giá cảm xúc của thị trường. Tăng khả năng thích ứng của chiến lược.

  5. Tham gia cơ chế dừng lỗ thích ứng. Điều chỉnh điểm dừng lỗ theo biến động của thị trường.

Tóm tắt

Chiến lược phá vỡ giá trị trung bình đảo ngược sử dụng nhiều chỉ số để đánh giá cơ hội đảo ngược. Trong trường hợp kiểm soát rủi ro, xác suất chiến thắng của nó cao hơn. Chiến lược này có tính thực tế rất mạnh mẽ và có không gian để tối ưu hóa hơn nữa. Nếu các tham số được thiết lập đúng, hiệu quả sẽ đạt được hiệu quả tốt hơn.

Mã nguồn chiến lược
/*backtest
start: 2023-12-12 00:00:00
end: 2023-12-19 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

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

// Input settings
stopLossInPips = input.int(10, minval=0, title='Stop Loss (in Pips)')
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)
shortEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition) and (prevHigh >= meanReversion) and (prevLow >= meanReversion)
longEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition) and (prevHigh <= meanReversion) and (prevLow <= meanReversion)

// Plotting
oldShortEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition)
oldLongEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition)
plotshape(oldLongEntryCondition, title='BUY', style=shape.triangleup, text='B', 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, text='S', location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)

// Strategy logic
if (longEntryCondition)
    stopLoss = close - stopLossInPips
    strategy.entry("Buy", strategy.long)
    strategy.exit("exit", "Buy", stop=stopLoss)
if (shortEntryCondition)
    stopLoss = close + stopLossInPips
    strategy.entry("Sell", strategy.short)
    strategy.exit("exit", "Sell", stop=stopLoss)

// 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)