
Основная идея этой стратегии заключается в том, чтобы объединить RSI с движущимися средними и искать возможности для реверса цен на акции, чтобы достичь низких покупок и высоких продаж. Когда RSI показывает, что акции находятся в состоянии перепродажи, и цена проходит ниже краткосрочной движущейся средней, это служит сигналом к покупке.
Эта стратегия использует RSI для определения перепродажи и перекупа, а также для определения ценовых тенденций. В частности, RSI может эффективно определить, перепродается ли акция или перекупается. Когда RSI ниже 30, она находится в пределах перепродажи.
Таким образом, когда RSI ниже 40, то есть близко к состоянию перепродажи, и 9-й день пересекает цену под подвижной средней, можно рассматривать как время, когда цена акций может перевернуться. Затем устанавливается остановка убытка и остановка выхода, ожидая, что цена акций перевернется вверх.
Эта стратегия, в сочетании с RSI и движущейся средней, позволяет эффективно определить время покупки. По сравнению с одиночным суждением о перепродаже, увеличивается условная оценка движущихся средних, чтобы избежать колебаний в зонах перепродажи. Настройка стоп-стоп-лома является гибкой и может варьироваться от человека к человеку.
Эта стратегия зависит от параметров, таких как RSI judgment threshold, Moving Average Time Window и т. д. Разные параметры могут привести к разным результатам. И в определенных условиях рынка, все еще может быть остановка.
Кроме того, расходы на транзакции также могут влиять на прибыль. В дальнейшем можно рассмотреть возможность добавления модуля по управлению объемом сделок или средствами для оптимизации.
Можно рассматривать возможность динамической корректировки параметров движущихся средних, выбирая различные параметры в разных периодах; или ввести другие показатели, такие как KDJ, MACD и т. Д., Чтобы сформировать многоусловное комплексное суждение.
Кроме того, можно создать модуль управления объемом или капиталом, чтобы контролировать долю капитала в каждой сделке и уменьшить влияние одиночных потерь.
В целом, стратегия использует RSI и Moving Average для определения времени покупки, чтобы эффективно оценить обратную сторону цены, покупая при перепродаже и получая более высокий уровень успеха. В сочетании с стоп-стопами для блокирования прибыли, можно получить лучший эффект.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 23:59:59
period: 30m
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/
// © Coinrule
//@version=4
strategy(shorttitle='MARSI',title='Moving Average', overlay=true, initial_capital=1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
//Backtest dates
fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12)
fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31)
fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970)
thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12)
thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31)
thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970)
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => true
//MA inputs and calculations
inshort=input(9, title='MA short period')
MAshort= sma(close, inshort)
// RSI inputs and calculations
lengthRSI = input(14, title = 'RSI period', minval=1)
RSI = rsi(close, lengthRSI)
//Entry
strategy.entry(id="long", long = true, when = MAshort<close and RSI<40 and window())
//Exit
longLossPerc = input(title="Long Stop Loss (%)",
type=input.float, minval=0.0, step=0.1, defval=1.5) * 0.01
longTakePerc = input(title="Long Take Profit (%)",
type=input.float, minval=0.0, step=0.1, defval=3) * 0.01
longSL = strategy.position_avg_price * (1 - longLossPerc)
longTP = strategy.position_avg_price * (1 + longTakePerc)
if (strategy.position_size > 0 and window())
strategy.exit(id="TP/SL", stop=longSL, limit=longTP)
bgcolor(color = showDate and window() ? color.gray : na, transp = 90)
plot(MAshort, color=color.purple, linewidth=4)