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