Chiến lược mua-bán tự động dựa trên RSI ngẫu nhiên và EMA


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

Chiến lược mua-bán tự động dựa trên RSI ngẫu nhiên và EMA

Tổng quan

Chiến lược này được thiết kế để thực hiện một chiến lược giao dịch Scalper mua và nắm giữ đồng tiền tự động dựa trên các chỉ số RSI và EMA. Nó áp dụng cho đường K 5 phút, được tối ưu hóa cho BTC. Mục tiêu của chiến lược là nắm giữ càng nhiều đồng tiền càng tốt khi ngang hoặc không giảm mạnh.

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

Chiến lược này sử dụng chỉ số RSI để xác định xem có quá mua hay quá bán hay không và kết hợp các giá trị K và D của chỉ số RSI ngẫu nhiên để phát ra tín hiệu mua và bán.

Khi K-line của RSI ngẫu nhiên thấp hơn 20 được coi là bán quá mức và tạo ra một tín hiệu mua khi K-line lớn hơn D-line. Sau đó, việc bán được đánh giá dựa trên ba điều kiện: 1) Sự đảo ngược EMA xảy ra sau khi giá tăng hơn 1%; 2) K-line của chỉ số RSI ngẫu nhiên thấp hơn D-line; 3) Giá dừng khi đạt 98.5% giá nhập cảnh.

Ngoài ra, khi EMA ngắn hạn sau khi tăng trở lại, nó cũng được coi là một tín hiệu bán.

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

  • Sử dụng chỉ số RSI ngẫu nhiên để xác định thời điểm mua là đáng tin cậy hơn, có thể lọc hiệu quả các phá vỡ giả.
  • Kết hợp với chỉ số EMA, chúng ta có thể đánh giá tốt hơn thời gian thay đổi xu hướng.
  • Việc sử dụng Stop Loss có thể kiểm soát hiệu quả tổn thất.
  • Có nhiều đồng tiền càng tốt sẽ làm giảm tần suất giao dịch và giảm phí.

Rủi ro chiến lược

  • Khả năng RSI phát ra tín hiệu sai. Các tham số RSI có thể được điều chỉnh thích hợp để tối ưu hóa.
  • Nếu giá dừng lỗ được thiết lập quá nhỏ, nó có thể dẫn đến tổn thất lớn hơn. Bạn có thể điều chỉnh mức dừng lỗ thích hợp.
  • Thiết lập tham số chỉ số EMA không đúng có thể bỏ lỡ thời gian thay đổi xu hướng. Các tham số có thể được thử nghiệm trong các chu kỳ EMA khác nhau.

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

  • Kiểm tra các RSI khác nhau và các thiết lập RSI ngẫu nhiên để tìm kiếm sự kết hợp tối ưu
  • Thử các mức dừng lỗ khác nhau để cân bằng để tránh mất mát và thu hồi lợi nhuận
  • Kiểm tra sự kết hợp của các EMA dài và ngắn để xác định các tham số tốt nhất để xác định xu hướng thay đổi
  • Có thể xem xét thêm các chỉ số khác để cải thiện độ chính xác của phán đoán thời gian mua bán

Tóm tắt

Chiến lược này tích hợp lợi thế của nhiều chỉ số như RSI và EMA ngẫu nhiên, sử dụng phương pháp vững chắc hơn để đánh giá thời gian mua và bán. Bằng cách tối ưu hóa tham số và quản lý rủi ro, có thể nâng cao hơn nữa lợi nhuận và sự ổn định của chiến lược.

Mã nguồn chiến lược
/*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)