Stochastic RSI với chiến lược Scalper mua tự động

Tác giả:ChaoZhang, Ngày: 2023-10-31 11:34:47
Tags:

img

Tổng quan

Chiến lược này nhằm thực hiện một chiến lược giao dịch tự động mua vào và giữ coin scalper dựa trên chỉ số kỹ thuật Stochastic RSI và EMA. Nó được thiết kế cho các ngọn nến 5 phút, được tối ưu hóa cho BTC. Mục tiêu là giữ coin càng nhiều càng tốt trong các xu hướng giảm bên hoặc không đáng kể.

Chiến lược logic

Chiến lược sử dụng chỉ số RSI để xác định mức mua quá mức và bán quá mức, kết hợp với mối quan hệ giữa các giá trị K và D của Stochastic RSI để tạo ra tín hiệu mua và bán.

Nó sẽ kích hoạt tín hiệu mua khi đường Stochastic RSI K dưới 20, được coi là quá bán và K trên D. Sau đó, nó sẽ xác định liệu có nên bán dựa trên ba điều kiện: 1) giá tăng hơn 1% theo sau là đảo ngược EMA; 2) đường Stochastic RSI K dưới D; 3) giá dừng lỗ đạt 98,5% giá nhập cảnh.

Ngoài ra, một sự biến đổi giảm của EMA ngắn hạn sau xu hướng tăng cũng sẽ được coi là tín hiệu bán.

Ưu điểm

  • Sử dụng chỉ số RSI Stochastic cho thời gian nhập là đáng tin cậy hơn, lọc hiệu quả các đột phá sai.
  • Kết hợp EMA có thể phát hiện tốt hơn thời gian thay đổi xu hướng.
  • Áp dụng stop loss giúp kiểm soát lỗ hiệu quả.
  • Giữ tiền xu càng nhiều càng tốt làm giảm tần suất giao dịch và phí.

Rủi ro

  • Có thể là tín hiệu sai từ chỉ số RSI.
  • Đặt stop loss quá chặt có thể dẫn đến tổn thất mở rộng.
  • Thiết lập tham số EMA không chính xác có thể bỏ lỡ thời gian thay đổi xu hướng.

Hướng dẫn tối ưu hóa

  • Kiểm tra các kết hợp khác nhau của các thông số RSI và Stochastic RSI để thiết lập tối ưu.
  • Hãy thử các tỷ lệ stoploss khác nhau để cân bằng phòng ngừa lỗ và rút tiền.
  • Kiểm tra các kết hợp EMA dài và ngắn để xác định các thông số tốt nhất để bắt sự thay đổi xu hướng.
  • Xem xét thêm các chỉ số khác để cải thiện độ chính xác thời gian vào và ra.

Tóm lại

Chiến lược này tích hợp các điểm mạnh của chỉ số RSI Stochastic, EMA và các chỉ số khác, sử dụng các phương pháp tương đối mạnh mẽ để xác định thời gian vào và ra.


/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Stochastic RSI W Auto Buy Scalper Scirpt III ", shorttitle="Stoch RSI_III", format=format.price, precision=2)
smoothK = input.int(3, "K", minval=1)
smoothD = input.int(3, "D", minval=1)
lengthRSI = input.int(14, "RSI Length", minval=1)
lengthStoch = input.int(14, "Stochastic Length", minval=1)
src = input(close, title="RSI Source")
rsi1 = ta.rsi(src, lengthRSI)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = ta.sma(k, smoothD)
plot(k, "K", color=#2962FF)
plot(d, "D", color=#FF6D00)
h0 = hline(80, "Upper Band", color=#787B86)
hline(50, "Middle Band", color=color.new(#787B86, 50))
h1 = hline(20, "Lower Band", color=#787B86)

longStopLoss  = strategy.opentrades.entry_price(0)* (.985)

stochDropping = ta.falling(k,2)
shortSma = ta.sma(hlc3,12)
shorterSma = ta.sma(hlc3,3)
plot(shortSma[3])

shortSmaFlip = (ta.change(shortSma,3)>0) and ta.falling(hlc3,1)
shorterSmaFlip = (ta.change(shorterSma,2)>0) and ta.falling(hlc3,1)
messageSellText ='"type": "sell", "symbol": "BTCUSD", "marketPosition": "{{strategy.market_position}}"'

messageBuyText ='"type": "buy", "symbol": "BTCUSD", "marketPosition": {{strategy.market_position}}"'

fill(h0, h1, color=color.rgb(33, 150, 243, 90), title="Background")

strategy.entry("Tech", strategy.long, when=(strategy.position_size <= 0 and k<17 and k>d),alert_message=messageBuyText)
//original: strategy.close("TL", when=(strategy.position_size >= 0 and (k>90 and k<d)))

takeProfit = hlc3 > strategy.opentrades.entry_price(0)*1.01
//longStopLoss  = strategy.opentrades.entry_price(0)* (.995)

strategy.close("Tech", when=(strategy.position_size >= 0 and (k>90 and k<d and stochDropping)) or close<longStopLoss, comment="rsi or Stop sell",alert_message=messageSellText)
//strategy.close("Tech", when=(strategy.position_size >= 0 and close<longStopLoss), comment="stopLoss sell",alert_message=messageSellText)

strategy.close("Tech", when=(shortSmaFlip and k>20 and takeProfit),comment="Sma after profit",alert_message=messageSellText)



Thêm nữa