Двунаправленная пирамидальная стратегия для торговли акциями на основе индикатора RSI


Дата создания: 2024-01-30 15:26:49 Последнее изменение: 2024-01-30 15:26:49
Копировать: 0 Количество просмотров: 728
1
Подписаться
1617
Подписчики

Двунаправленная пирамидальная стратегия для торговли акциями на основе индикатора RSI

Обзор

В данной статье в основном представлена стратегия двусторонней пирамиды торговли акциями, разработанная на основе относительно сильного показателя ((RSI)). Эта стратегия использует показатель RSI для определения зоны перепродажи акций, чтобы получить прибыль в соответствии с принципом пирамиды.

Стратегический принцип

  • Используйте RSI, чтобы определить, входит ли акция в зону перекупа или перепродажи. Если RSI ниже 25, то это перепродажа, а если выше 80, то это перепродажа.
  • Когда RSI входит в зону перепродажи, начинается перезапуск. Когда RSI входит в зону перекупки, начинается перезапуск.
  • Применение метода пирамидального пополнения до 7 раз. После каждого пополнения устанавливается стоп-стоп.

Анализ преимуществ

  • Используя RSI, можно определить площадь перекупа и перепродажи, чтобы уловить большие возможности для изменения цены.
  • Пирамидальный способ пополнения запасов позволяет получить более высокую доходность при правильных условиях.
  • После каждой пополненной позиции настраивается стоп-стоп, что позволяет контролировать риск.

Анализ рисков

  • RSI может быть неустойчивым и подавать ошибочные сигналы о перепродаже.
  • Необходимо разумно установить количество пополнений, а избыточные пополнения могут увеличить риск.
  • Настройка точки стоп-убытков должна учитывать волатильность и не должна быть слишком маленькой.

Направление оптимизации

  • Можно рассмотреть возможность фильтрации сигналов RSI в сочетании с другими индикаторами, чтобы повысить точность определения перепродажи. Например, сочетание таких показателей, как KDJ, BOLL и т. Д.
  • Для отслеживания цены можно установить плавающий стоп. Динамически корректируется в соответствии с волатильностью и требованиями контроля риска.
  • В зависимости от рыночных условий (бычьи, медвежьи и т. д.) можно рассмотреть возможность использования параметров самостоятельной адаптации.

Подвести итог

Эта стратегия объединяет показатель RSI с пирамидальной стратегией наложения, при этом можно получить больше дохода от наложения, хотя точность определения RSI должна быть улучшена, однако, путем оптимизации разумных параметров, в сочетании с другими показателями можно создать эффективную и стабильную торговую стратегию. Эта стратегия имеет некоторую универсальность и является относительно простым и прямым методом количественной торговли.

Исходный код стратегии
/*backtest
start: 2023-12-30 00:00:00
end: 2024-01-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © RafaelZioni

strategy(title='Simple RSI strategy', overlay=false)

SWperiod = 1
look = 0
OverBought = input(80, minval=50)
OverSold = input(25, maxval=50)

bandmx = hline(100)
bandmn = hline(0)

band1 = hline(OverBought)
band0 = hline(OverSold)
//band50 = hline(50, color=black, linewidth=1)
fill(band1, band0, color=color.purple, transp=98)


src = close
len = input(5, minval=1, title="RSI Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)

p = 100

//scale
hh = highest(high, p)
ll = lowest(low, p)
scale = hh - ll

//dynamic OHLC
dyno = (open - ll) / scale * 100
dynl = (low - ll) / scale * 100
dynh = (high - ll) / scale * 100
dync = (close - ll) / scale * 100

//candle color
color_1 = close > open ? 1 : 0

//drawcandle
hline(78.6)
hline(61.8)
hline(50)
hline(38.2)
hline(23.6)
plotcandle(dyno, dynh, dynl, dync, title="Candle", color=color_1 == 1 ? color.green : color.red)
plot(10, color=color.green)
plot(55, color=color.black)
plot(80, color=color.black)
plot(90, color=color.red)

long = rsi <= OverSold ? 5 : na

//Strategy
golong = rsi <= OverSold ? 5 : na

longsignal = golong  
//based on https://www.tradingview.com/script/7NNJ0sXB-Pyramiding-Entries-On-Early-Trends-by-Coinrule/
//set take profit

ProfitTarget_Percent = input(3)
Profit_Ticks = close * (ProfitTarget_Percent / 100) / syminfo.mintick

//set take profit

LossTarget_Percent = input(10)
Loss_Ticks = close * (LossTarget_Percent / 100) / syminfo.mintick


//Order Placing

strategy.entry("Entry 1", strategy.long, when=strategy.opentrades == 0 and longsignal)

strategy.entry("Entry 2", strategy.long, when=strategy.opentrades == 1 and longsignal)

strategy.entry("Entry 3", strategy.long, when=strategy.opentrades == 2 and longsignal)

strategy.entry("Entry 4", strategy.long, when=strategy.opentrades == 3 and longsignal)

strategy.entry("Entry 5", strategy.long, when=strategy.opentrades == 4 and longsignal)

strategy.entry("Entry 6", strategy.long, when=strategy.opentrades == 5 and longsignal)

strategy.entry("Entry 7", strategy.long, when=strategy.opentrades == 6 and longsignal)



if strategy.position_size > 0
    strategy.exit(id="Exit 1", from_entry="Entry 1", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 2", from_entry="Entry 2", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 3", from_entry="Entry 3", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 4", from_entry="Entry 4", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 5", from_entry="Entry 5", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 6", from_entry="Entry 6", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 7", from_entry="Entry 7", profit=Profit_Ticks, loss=Loss_Ticks)