Chiến lược RSI và Stochastic đa khung thời gian


Ngày tạo: 2024-02-21 15:56:37 sửa đổi lần cuối: 2024-02-21 15:56:37
sao chép: 1 Số nhấp chuột: 924
1
tập trung vào
1617
Người theo dõi

Chiến lược RSI và Stochastic đa khung thời gian

Tổng quan

Chiến lược RSI đa khung thời gian và chỉ số ngẫu nhiên là một chiến lược sử dụng các chỉ số kết hợp của RSI và chỉ số ngẫu nhiên để đánh giá thị trường quá mua quá bán trong nhiều khung thời gian. Chiến lược này kết hợp RSI và chỉ số ngẫu nhiên trong 4 khung thời gian đồng thời, sử dụng giá trị trung bình của chúng để đánh giá xu hướng thị trường tổng thể và quá mua quá bán để tận dụng lợi thế của các chỉ số khung thời gian.

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

Chỉ số RSI

Chỉ số RSI là một chỉ số bán tháo mạnh mẽ, dựa trên sự tăng giảm của cổ phiếu trong một khoảng thời gian nhất định. Các giá trị RSI dao động từ 0 đến 100, nói chung, RSI lớn hơn 70 là mua quá mức và nhỏ hơn 30 là bán tháo.

Chiến lược này sử dụng các chỉ số RSI với độ dài 14 và lấy các giá trị RSI trong các khung thời gian 1 tháng, 1 ngày, 4 giờ và 1 giờ.

2. Chỉ số ngẫu nhiên %K

Chỉ số ngẫu nhiên %K là chỉ số cho thấy thị trường đang mua quá mức hoặc bán quá mức, giá trị dao động từ 0 đến 100. Nói chung, chỉ số ngẫu nhiên lớn hơn 80 là mua quá mức và nhỏ hơn 20 là bán quá mức.

Trong chiến lược này, chỉ số ngẫu nhiên %K có chiều dài 14, mịn là 3, cũng lấy giá trị của 4 khung thời gian trên.

3. Gói trung bình

Điểm mấu chốt của chiến lược này là tính trung bình của hai chỉ số trên trong 4 khung thời gian để tận dụng lợi thế của từng khung thời gian để xác định xu hướng thị trường tổng thể. Công thức tính toán cụ thể như sau:

RSI trung bình = (RSI đường trăng + RSI đường ngày + RSI 4 giờ + RSI 1 giờ) / 4

Trung bình chỉ số ngẫu nhiên = (đường trăng ngẫu nhiên + đường mặt trời ngẫu nhiên + 4 giờ ngẫu nhiên + 1 giờ ngẫu nhiên) / 4

Tín hiệu giao dịch

Khi RSI trung bình nhỏ hơn 30 và trung bình chỉ số ngẫu nhiên nhỏ hơn 20, làm nhiều; khi RSI trung bình lớn hơn 70 và trung bình chỉ số ngẫu nhiên lớn hơn 80, làm trống.

Sau khi thực hiện nhiều, trong trường hợp chỉ số trung bình ngẫu nhiên lớn hơn 70 và RSI trung bình lớn hơn 50 giờ đồng vị; sau khi làm giảm, trong trường hợp chỉ số trung bình ngẫu nhiên nhỏ hơn 30 và RSI trung bình nhỏ hơn 50 giờ đồng vị.

Phân tích lợi thế

Lợi thế lớn nhất của chiến lược này là kết hợp hai chỉ số và nhiều khung thời gian cùng một lúc, điều này có thể làm tăng đáng kể độ tin cậy của tín hiệu giao dịch và tránh tối đa các tín hiệu giả. Các lợi thế cụ thể như sau:

  1. Chỉ số RSI và chỉ số ngẫu nhiên xác nhận lẫn nhau. Chỉ dựa vào chỉ số đơn lẻ dễ tạo ra tín hiệu giả, và chiến lược này có thể tăng độ chính xác của tín hiệu bằng cách kết hợp hai chỉ số.

  2. Phân tích nhiều khung thời gian có thể cải thiện độ chính xác của phán đoán. Ví dụ, đường trăng và đường mặt trời cho thấy quá mua, nhưng 4 giờ và 1 giờ không hoàn toàn quá mua, điều này cho thấy xu hướng có thể tiếp tục. Nếu tất cả các khung thời gian phù hợp, tín hiệu sẽ đáng tin cậy hơn.

  3. Xác định rõ hơn các điểm biến động cấu trúc. Nhìn thấy các đột phá hỗ trợ / kháng cự quan trọng đồng thời trên nhiều khung thời gian, bạn có thể xác định xu hướng hiện tại đang biến đổi.

  4. Tự động tính trung bình chỉ số đơn giản hóa hoạt động. Không cần tính toán bằng tay, mã tự động thực hiện trích xuất dữ liệu, tính toán và tính trung bình chỉ số, giảm công việc.

Phân tích rủi ro

Rủi ro chính của chiến lược này là, giống như tất cả các chiến lược phân tích kỹ thuật, không thể hoàn toàn tránh được khả năng bị lừa và tạo ra tín hiệu giả. Rủi ro chính là:

  1. Sự đảo ngược trong thời gian ngắn của xu hướng dẫn đến việc bị bóp. Ví dụ, trong thời gian giữ nhiều vị trí, đường ngắn giá sẽ bật trở lại sau khi phá vỡ ngưỡng hỗ trợ xuống. Trong trường hợp này, theo logic vị trí bình thường của chiến lược, cần dừng lỗ ngay lập tức, nhưng có thể gây ra tổn thất trong thời gian ngắn.

  2. Mất điểm hỗ trợ / kháng cự quan trọng dẫn đến thất bại trong việc theo dõi điểm dừng. Nếu điểm hỗ trợ hoặc kháng cự quan trọng bị mất, giá dừng ban đầu có thể bị phá vỡ trực tiếp, do đó gây ra tổn thất lớn hơn.

  3. Thiết lập khung thời gian không đúng sẽ dẫn đến lỗi phán đoán. Nếu khung thời gian được thiết lập quá dài hoặc quá ngắn, nó có thể dẫn đến sai lệch trong đánh giá chỉ số.

  4. Sự phân tán của chỉ số dẫn đến hiệu ứng Dunkirk. Các chỉ số trong khung thời gian cao hơn cho thấy quá mua và các chỉ số trong khung thời gian thấp hơn cho thấy quá bán, và chỉ số trung bình không phản ánh được thực tế.

Các giải pháp đối phó với rủi ro bao gồm: tối ưu hóa chiến lược dừng lỗ, theo dõi mức hỗ trợ / kháng cự động, điều chỉnh tham số khung thời gian và thêm cơ chế lọc.

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

Với những rủi ro đã nêu trên, chiến lược này có thể được tối ưu hóa theo một số hướng sau:

  1. Tối ưu hóa cơ chế dừng lỗ, thực hiện theo dõi dừng lỗ và dừng lỗ theo lô. Điều này có thể kiểm soát rủi ro thua lỗ đơn trong khi đảm bảo lợi nhuận.

  2. Thêm các khung thời gian cao hơn như đường quý. Điều này có thể sử dụng các tín hiệu sai lệch lọc xu hướng cấp độ lớn hơn. Khi các chỉ số khác biệt, hãy ưu tiên khung thời gian cao hơn.

  3. Tăng xác thực đa không gian về lượng giao dịch. Kết hợp sự thay đổi khối lượng giao dịch để xác định độ lệch dưới và độ lệch trên, tránh bị lừa bởi hành động của zombie.

  4. Tối ưu hóa thời gian nhập cuộc. Bạn có thể chờ đợi để phá vỡ vào gần các điểm hỗ trợ / kháng cự lịch sử quan trọng hoặc chờ đợi điểm mua hồi phục tốt nhất.

  5. Tăng mức dừng thích ứng. Các mức dừng động có thể được tính toán và điều chỉnh dựa trên biến động gần đây và ATR.

Tóm tắt

Chiến lược RSI khung thời gian đa dạng và chiến lược chỉ số ngẫu nhiên là một chiến lược giao dịch rõ ràng và đáng tin cậy bằng cách kết hợp sử dụng chỉ số RSI và chỉ số ngẫu nhiên để đánh giá phạm vi bán tháo của thị trường trên nhiều khung thời gian. Ưu điểm lớn nhất của nó là sự kết hợp của chỉ số và khung thời gian xác minh lẫn nhau, có thể tránh tối đa rủi ro của tín hiệu giả và giả. Tất nhiên, chiến lược này cũng có rủi ro phổ biến của các chiến lược phân tích kỹ thuật tương tự, cần phải liên tục cải tiến và tối ưu hóa từ việc tối ưu hóa thời gian dừng lỗ, lựa chọn khung, v.v., để trở thành một chiến lược giao dịch thuật toán có lợi nhuận ổn định.

Mã nguồn chiến lược
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

////////////////////////////////////////// MTF Stochastic & RSI Strategy 🚥 ©️ bykzis /////////////////////////////////////////
//

// *** Inspired by "Binance CHOP Dashboard" from @Cazimiro and "RSI MTF Table" from @mobester16 *** and LOT OF COPY of Indicator-Jones MTF Scanner
// 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//@version=5
strategy('MTF RSI & STOCH Strategy🚥 by kzi', overlay=false,initial_capital=100, currency=currency.USD, commission_value=0.01, commission_type=strategy.commission.percent)


// Pair list
var string GRP1       = '══════════    General    ══════════'
overbought = input.int(80, 'Overbought Level', minval=1, group=GRP1)
oversold = input.int(20, 'Oversold Level', minval=1, group=GRP1)


/// Timeframes
var string GRP2       = '══════════   Timeframes   ══════════'
timeframe1 = input.timeframe(title="Timeframe 1", defval="W", group=GRP2)
timeframe2 = input.timeframe(title="Timeframe 2", defval="D", group=GRP2)
timeframe3 = input.timeframe(title="Timeframe 3", defval="240", group=GRP2)
timeframe4 = input.timeframe(title="Timeframe 4", defval="60", group=GRP2)

// RSI settings
var string GRP3       = '══════════   RSI settings   ══════════'
rsiLength = input.int(14, minval=1, title='RSI length', group=GRP3)
rsiSource = input(close, 'RSI Source', group=GRP3)
rsioverbought = input.int(70, 'RSI Overbought Level', minval=1, group=GRP3)
rsioversold = input.int(30, 'RSI Oversold Level', minval=1, group=GRP3)


/// Get RSI values of each timeframe /////////////////////////////////////////////////////
rsi = ta.rsi(rsiSource, rsiLength)
callRSI(id,timeframe) =>
    rsiValue = request.security(id, str.tostring(timeframe), rsi, gaps=barmerge.gaps_off)
    rsiValue

RSI_TF1 = callRSI(syminfo.tickerid, timeframe1)
RSI_TF2 = callRSI(syminfo.tickerid, timeframe2)
RSI_TF3 = callRSI(syminfo.tickerid, timeframe3)
RSI_TF4 = callRSI(syminfo.tickerid, timeframe4)




/////// Calculate Averages /////////////////////////////////////////////////////////////////
calcAVG(valueTF1, valueTF2, valueTF3, valueTF4) =>
    math.round((valueTF1 + valueTF2 + valueTF3 + valueTF4) / 4, 2)

AVG=calcAVG(RSI_TF1, RSI_TF2, RSI_TF3, RSI_TF4)



// Stochastic settings
var string GRP4       = '══════════   Stochastic settings   ══════════'
periodK = input.int(14, '%K length', minval=1, group=GRP4)
smoothK = input.int(3, 'Smooth K', minval=1, group=GRP4)
stochSource = input(close, 'Stochastic Source', group=GRP4)
stochoverbought = input.int(70, 'Stochastic Overbought Level', minval=1, group=GRP4)
stochoversold = input.int(30, 'Stochastic Oversold Level', minval=1, group=GRP4)


/// Get Stochastic values of each timeframe ////////////////////////////////////////////////
stoch = ta.sma(ta.stoch(stochSource, high, low, periodK), smoothK)
getStochastic(id,timeframe) =>
    stochValue = request.security(id, str.tostring(timeframe), stoch, gaps=barmerge.gaps_off)
    stochValue

Stoch_TF1 = getStochastic(syminfo.tickerid, timeframe1)
Stoch_TF2 = getStochastic(syminfo.tickerid, timeframe2)
Stoch_TF3 = getStochastic(syminfo.tickerid, timeframe3)
Stoch_TF4 = getStochastic(syminfo.tickerid, timeframe4)


AVG_STOCH=calcAVG(Stoch_TF1, Stoch_TF2, Stoch_TF3, Stoch_TF4)


plot(AVG, color = color.blue, title='RSI')
plot(AVG_STOCH, color = color.yellow,title='STOCH')
hline(rsioverbought,color=color.red)
hline(rsioversold, color=color.lime)
hline(50, color=color.white)

//============ signal Generator ==================================//

if AVG <= rsioversold and AVG_STOCH <=stochoversold 
    strategy.entry('Buy_Long', strategy.long)

    
strategy.close("Buy_Long",when=(AVG_STOCH >=70 and AVG >=50 and close >=strategy.position_avg_price),comment="Long_OK")

if AVG >=rsioverbought and AVG_STOCH >=stochoverbought
    strategy.entry('Buy_Short', strategy.short)


strategy.close("Buy_Short",when=(AVG_STOCH <=30 and AVG <=50 and close <=strategy.position_avg_price),comment="Short_OK")


///////////////////////////////////////////////////////////////////////////////////////////