Эта стратегия основана на средней реальной волатильности ((ATR) и относительно сильном индексе ((RSI) и разработана для торговой системы с функцией отслеживания тенденций. Система может автоматически идентифицировать направление тенденции и имеет функции остановки и остановки.
Вычисление ATR и RSI. ATR отражает среднюю колебательность цен за последнее время. RSI отражает соотношение сил между двумя сторонами.
Когда ATR больше, чем его движущаяся средняя, считается, что находится в периоде высокой волатильности и подходит для торговли.
Когда RSI выше линейки сверхпокупа, вы делаете больше; когда RSI ниже линейки сверхпродажи, вы делаете пустоту.
После увеличения, с высокой точкой умножить на фиксированную пропорцию, чтобы отследить остановку. После уменьшения, с низкой точкой умножить на фиксированную пропорцию, чтобы отследить остановку.
Процент прибыли.
Отслеживание остановок позволяет максимально ограничить остановки и уменьшить убытки.
RSI позволяет эффективно оценивать положительную силу, избегая повторного открытия позиций в шокирующей ситуации.
ATR используется как индикатор волатильности, чтобы отфильтровывать шокирующие тренды и торговать только в трендовых.
Запрет на прибыль может блокировать часть прибыли.
ATR и RSI являются отстающими индикаторами, которые могут привести к отставанию входных точек. Можно соответствующим образом оптимизировать параметры, чтобы сделать систему более чувствительной.
Фиксированный предел убытков по сравнению с остановкой убытков может быть переоптимизирован и должен быть тщательно настроен в сочетании с результатами обратной связи.
В условиях большого циклического колебания ATR может быть длительно больше, чем скользящая средняя, что приводит к чрезмерной торговле. Могут быть добавлены другие фильтрующие условия.
Оптимизация параметров ATR и RSI для повышения чувствительности системы.
Добавьте такие показатели, как МА, чтобы определить направление тренда и избежать ошибок в шокирующей ситуации.
Попробуйте использовать динамические параметры, а не фиксированные.
Рассмотреть возможность введения мер по контролю за объемом транзакций.
Эта стратегия объединяет преимущества двух индикаторов ATR и RSI, чтобы создать простую и практичную торговую систему для отслеживания тенденций. С помощью оптимизации параметров и добавления фильтрующих условий можно еще больше повысить стабильность системы. В целом, эта стратегия имеет сильную реальную ценность.
/*backtest
start: 2023-09-08 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// © liwei666
//@version=5
// # ========================================================================= #
// # | Strategy |
// # ========================================================================= #
strategy(
title = "ATR_RSI_Strategy v2[liwei666]",
shorttitle = "ATR_RSI_Strategy",
overlay = true,
max_lines_count = 500,
max_labels_count = 500,
max_boxes_count = 500,
max_bars_back = 5000,
initial_capital = 10000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=50, commission_type=strategy.commission.percent, pyramiding=1,
commission_value=0.05
)
// # ========================================================================= #
// # | Strategy |
// # ========================================================================= #
atr_length = input.int(26, "atr_length", minval = 6, maxval = 100, step=1)
atr_ma_length = input.int(45, "atr_ma_length", minval = 6, maxval = 100, step=1)
rsi_length = input.int(15, "rsi_length", minval = 6, maxval = 100, step=1)
rsi_entry = input.int(10, "rsi_entry", minval = 6, maxval = 100, step=1)
atr_ma_norm_min = input.float(0.3, "atr_ma_norm_min", minval = 0.1, maxval = 0.5, step=0.1)
atr_ma_norm_max = input.float(0.7, "atr_ma_norm_max", minval = 0.5, maxval = 1, step=0.1)
trailing_percent= input.float(1.5, "trailing_percent", minval = 0.1, maxval = 2, step=0.1)
var rsi_buy = 50 + rsi_entry
var rsi_sell = 50 - rsi_entry
sma_norm_h_45() =>
source = high
n = 45
sma = ta.sma(source, n)
sma_norm = (sma - ta.lowest(sma, n)) / (ta.highest(sma,n) - ta.lowest(sma, n))
sma_norm
atr_value = ta.atr(atr_length)
atr_ma = ta.sma(atr_value, atr_ma_length)
rsi_value = ta.rsi(close, length = rsi_length)
atr_ma_norm = atr_ma / close * 100
sma_norm = sma_norm_h_45()
var intra_trade_high = 0.0
var intra_trade_low = 0.0
if strategy.position_size == 0
intra_trade_high := high
intra_trade_low := low
if atr_ma_norm >= atr_ma_norm_min and atr_ma_norm <= atr_ma_norm_max
if atr_value > atr_ma
if rsi_value > rsi_buy
strategy.entry("B1", strategy.long, limit = close + 5 )
else if rsi_value < rsi_sell
strategy.entry("S1", strategy.short, limit = close - 5 )
else if strategy.position_size > 0
intra_trade_high := math.max(intra_trade_high, high)
intra_trade_low := low
long_tp = intra_trade_high * (1 - trailing_percent / 100)
strategy.exit("Exit B1", from_entry="B1", stop = long_tp, limit = strategy.position_avg_price * 1.03)
else if strategy.position_size < 0
intra_trade_high := high
intra_trade_low := math.min(intra_trade_low, low)
short_tp = intra_trade_low * (1 + trailing_percent / 100)
strategy.exit("Exit S1", from_entry="S1", stop = short_tp, limit = strategy.position_avg_price * 0.94)