
Strategi ini adalah strategi sederhana hanya melakukan lebih, menggunakan indikator RSI untuk menilai overbought dan oversold. Kami telah meningkatkannya dengan menambahkan stop loss, dan juga mengintegrasikan modul probabilitas untuk meningkatkan probabilitas, yang hanya akan membuka posisi jika probabilitas perdagangan yang menguntungkan lebih besar dari atau sama dengan 51% dalam beberapa waktu terakhir. Ini sangat meningkatkan kinerja strategi.
Strategi ini menggunakan indikator RSI untuk menilai pasar overbought dan oversold. Secara khusus, ketika RSI berada di bawah batas bawah dari area oversold yang ditetapkan; ketika RSI berada di atas batas atas dari area oversold yang ditetapkan. Selain itu, kami menetapkan stop loss stop loss.
Yang penting, kami mengintegrasikan modul penilaian probabilitas. Modul ini akan menghitung berapa banyak perdagangan yang dilakukan atau dirugi dalam beberapa waktu terakhir (ditentukan oleh parameter lookback). Hanya jika probabilitas perdagangan yang menguntungkan baru-baru ini lebih besar dari atau sama dengan 51 persen, maka Anda akan mengambil posisi lebih banyak. Ini sangat mengurangi kemungkinan perdagangan yang merugikan.
Ini adalah strategi RSI dengan peningkatan probabilitas yang memiliki keuntungan berikut dibandingkan dengan strategi RSI biasa:
Strategi ini juga memiliki beberapa risiko:
Solusi yang sesuai:
Strategi ini dapat dioptimalkan lebih lanjut dalam beberapa hal:
Strategi ini adalah strategi RSI sederhana, dengan modul penilaian probabilitas terpadu yang diperkuat. Dibandingkan dengan strategi RSI biasa, Anda dapat menyaring sebagian perdagangan yang merugikan, menarik kembali secara keseluruhan, dan memaksimalkan rasio kerugian.
/*backtest
start: 2023-11-19 00:00:00
end: 2023-12-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © thequantscience
//@version=5
strategy("Reinforced RSI",
overlay = true,
default_qty_type = strategy.percent_of_equity,
default_qty_value = 100,
pyramiding = 1,
currency = currency.EUR,
initial_capital = 1000,
commission_type = strategy.commission.percent,
commission_value = 0.07)
lenght_rsi = input.int(defval = 14, minval = 1, title = "RSI lenght: ")
rsi = ta.rsi(close, length = lenght_rsi)
rsi_value_check_entry = input.int(defval = 35, minval = 1, title = "Oversold: ")
rsi_value_check_exit = input.int(defval = 75, minval = 1, title = "Overbought: ")
trigger = ta.crossunder(rsi, rsi_value_check_entry)
exit = ta.crossover(rsi, rsi_value_check_exit)
entry_condition = trigger
TPcondition_exit = exit
look = input.int(defval = 30, minval = 0, maxval = 500, title = "Lookback period: ")
Probabilities(lookback) =>
isActiveLong = false
isActiveLong := nz(isActiveLong[1], false)
isSellLong = false
isSellLong := nz(isSellLong[1], false)
int positive_results = 0
int negative_results = 0
float positive_percentage_probabilities = 0
float negative_percentage_probabilities = 0
LONG = not isActiveLong and entry_condition == true
CLOSE_LONG_TP = not isSellLong and TPcondition_exit == true
p = ta.valuewhen(LONG, close, 0)
p2 = ta.valuewhen(CLOSE_LONG_TP, close, 0)
for i = 1 to lookback
if (LONG[i])
isActiveLong := true
isSellLong := false
if (CLOSE_LONG_TP[i])
isActiveLong := false
isSellLong := true
if p[i] > p2[i]
positive_results += 1
else
negative_results -= 1
positive_relative_probabilities = positive_results / lookback
negative_relative_probabilities = negative_results / lookback
positive_percentage_probabilities := positive_relative_probabilities * 100
negative_percentage_probabilities := negative_relative_probabilities * 100
positive_percentage_probabilities
probabilities = Probabilities(look)
lots = strategy.equity/close
var float e = 0
var float c = 0
tp = input.float(defval = 1.00, minval = 0, title = "Take profit: ")
sl = input.float(defval = 1.00, minval = 0, title = "Stop loss: ")
if trigger==true and strategy.opentrades==0 and probabilities >= 51
e := close
strategy.entry(id = "e", direction = strategy.long, qty = lots, limit = e)
takeprofit = e + ((e * tp)/100)
stoploss = e - ((e * sl)/100)
if exit==true
c := close
strategy.exit(id = "c", from_entry = "e", limit = c)
if takeprofit and stoploss
strategy.exit(id = "c", from_entry = "e", stop = stoploss, limit = takeprofit)