
Chiến lược này tạo ra tín hiệu giao dịch bằng cách kết hợp sử dụng chỉ số Brin và chỉ số RSI tương đối mạnh. Nó theo dõi xem giá đóng cửa của ba đường K có cùng lúc phá vỡ đường lên hoặc xuống đường không và kết hợp với chỉ số gearbox và RSI để xác nhận tín hiệu giao dịch.
Chiến lược này dựa trên các nguyên tắc sau:
Chiến lược này có những lợi thế chính như sau:
Chiến lược này cũng có một số rủi ro:
Các biện pháp kiểm soát rủi ro bao gồm:
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Chiến lược này sử dụng nhiều chỉ số để đánh giá tổng hợp, đồng thời đảm bảo độ tin cậy của tín hiệu, nhưng cũng có một số vấn đề. Bằng các phương tiện như tối ưu hóa tham số, làm phong phú nguồn tín hiệu, điều chỉnh logic phán đoán và dừng lỗ, bạn có thể tăng cường sự ổn định và lợi nhuận của chiến lược. Nó cung cấp một ý tưởng tốt cho giao dịch định lượng.
/*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"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Noway0utstorm
//@version=5
strategy(title='RSI + BB over 3 bar+--- vortex0.71.3 ', shorttitle='NoWaytruongphuthinh', format=format.price, precision=4,overlay = true)
length = input(20, title="Length")
mult = input(2.0, title="Multiplier")
source = close
basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)
upperBand = basis + dev
lowerBand = basis - dev
isClosedBar = ta.change(time("15"))
var bool closeAboveUpperBand = false
var bool closeBelowLowerBand = false
// Vortex Indicator Settings
period_ = input.int(14, title='Period', minval=2)
VMP = math.sum(math.abs(high - low[1]), period_)
VMM = math.sum(math.abs(low - high[1]), period_)
STR = math.sum(ta.atr(1), period_)
VIP = VMP / STR
VIM = VMM / STR
//
lengthrsi = input(14, title="RSI Length")
overboughtLevel = input(70, title="Overbought Level")
oversoldLevel = input(30, title="Oversold Level")
sourcersi = close
rsiValue = ta.rsi(sourcersi, lengthrsi)
shouldShort = rsiValue > overboughtLevel
shouldLong = rsiValue < oversoldLevel
if bool(isClosedBar[1]) and bool(isClosedBar[2]) and bool(isClosedBar[3])
if close[1] > upperBand[1] and close[2] > upperBand[2] and close[3] > upperBand[3] and VIP > 1.25 and VIM < 0.7 and rsiValue > overboughtLevel
strategy.entry("Short", strategy.short)
closeAboveUpperBand := false // Reset the condition when entering a new Short position
if close[1] < lowerBand[1] and close[2] < lowerBand[2] and close[3] < lowerBand[3] and VIP < 0.7 and VIM > 1.25 and rsiValue < oversoldLevel
strategy.entry("Long", strategy.long)
closeBelowLowerBand := false // Reset the condition when entering a new Long position
if strategy.position_size > 0 // Check if there is an open Long position
closeAboveUpperBand := close > upperBand // Update the condition based on close price
if closeAboveUpperBand
strategy.close("Long",disable_alert=true) // Close the Long position if close price is above upper band
if strategy.position_size < 0 // Check if there is an open Short position
closeBelowLowerBand := close < lowerBand // Update the condition based on close price
if closeBelowLowerBand
strategy.close("Short",disable_alert=true) // Close the Short position if close price is below lower band
// Plots
plot(basis, color=color.orange, title="Basis")
p1 = plot(upperBand, color=color.blue, title="Upper Band")
p2 = plot(lowerBand, color=color.blue, title="Lower Band")
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))