
Strategi ini adalah strategi yang mudah hanya melakukan lebih banyak, menggunakan RSI untuk menilai overbought dan oversold. Kami telah meningkatkannya dengan menambah stop loss dan menyertakan modul kebarangkalian untuk meningkatkan kebarangkalian, hanya membuka kedudukan apabila kebarangkalian perdagangan yang menguntungkan lebih besar daripada atau sama dengan 51% dalam tempoh yang lalu. Ini meningkatkan prestasi strategi.
Strategi ini menggunakan indikator RSI untuk menilai pasaran berlebih-lebihan. Khususnya, apabila RSI melanggar batas bawah yang ditetapkan untuk kawasan berlebih-lebihan; apabila RSI melanggar batas atas yang ditetapkan untuk kawasan berlebih-lebihan; dan apabila RSI melanggar batas atas yang ditetapkan untuk kawasan berlebih-lebihan.
Yang penting, kami mengintegrasikan modul penilaian kebarangkalian. Modul ini akan mengkaji peratusan perdagangan yang lebih banyak atau lebih banyak dalam jangka masa yang baru-baru ini (ditetapkan oleh parameter lookback). Hanya apabila kebarangkalian perdagangan yang menguntungkan baru-baru ini lebih besar daripada atau sama dengan 51%, anda akan membuka lebih banyak kedudukan. Ini mengurangkan kemungkinan perdagangan yang rugi.
Ini adalah strategi RSI yang dipertingkatkan kebarangkalian dan mempunyai kelebihan berikut berbanding strategi RSI biasa:
Strategi ini juga mempunyai risiko:
Penyelesaian:
Strategi ini boleh dioptimumkan dengan cara berikut:
Strategi ini adalah strategi RSI yang mudah, modul penilaian kebarangkalian bersepadu dipertingkatkan. Berbanding dengan strategi RSI biasa, anda boleh menyaring sebahagian perdagangan yang rugi, menarik balik keseluruhan dan mengoptimumkan perbandingan 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)