В процессе загрузки ресурсов... загрузка...

Трехкратная стратегия экстремального трейдинга по РСИ

Автор:Чао Чжан, Дата: 2023-11-02 14:34:21
Тэги:

img

Обзор

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

Логика стратегии

Стратегия использует индикаторы RSI 2-периода, 7-периода и 14-периода одновременно. Когда все три индикатора RSI показывают сигналы перекупа или перепродажи одновременно, генерируются торговые сигналы.

В частности, когда 2-периодный RSI ниже 10, 7-периодный RSI ниже 20, а 14-периодный RSI ниже 30, рынок считается перепроданным, и генерируется сигнал покупки.

Код использует параметр точности для уточнения пороговых значений перекупленности/перепроданности RSI. По умолчанию это 3, а более низкие значения означают более строгие критерии перекупленности/перепроданности.

Когда генерируется сигнал покупки или продажи, если цена перевернется и прорвется через цену открытия дня, текущая позиция будет закрыта для получения прибыли или сокращения убытков.

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

  • Использование комбинации многопериодных индикаторов RSI позволяет более точно определить условия перекупки/перепродажи и отфильтровать ложные сигналы.

  • Тонкая настройка критериев перекупки/перепродажи с различными параметрами позволяет корректировать чувствительность стратегии на основе рыночных условий.

  • Внедрение открытых остановок для отслеживания цен помогает своевременно закрепить прибыль.

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

  • Показатели РСИ склонны к расхождениям, которые неэффективны для выявления обратных тенденций.

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

  • Трех RSI сигналов запускают вместе редко, что может упустить хорошие торговые возможности.

  • Параметры критериев перекупки/перепродажи должны быть отрегулированы и протестированы на разных рынках.

Руководство по оптимизации

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

  • Автоматическая оптимизация параметров RSI на основе различных рыночных режимов.

  • Испытать другие условия остановки и выхода, такие как остановки ATR.

  • Добавьте фильтры, чтобы избежать торговли в неподходящие периоды.

Заключение

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


/*backtest
start: 2023-10-25 00:00:00
end: 2023-10-28 10:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's Triple RSI Top/Bottom", shorttitle = "3RSI Top/Bottom", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
accuracy = input(3, defval = 3, minval = 1, maxval = 10, title = "accuracy")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")


//RSI-2
fastup = rma(max(change(close), 0), 2)
fastdown = rma(-min(change(close), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//RSI-7
middleup = rma(max(change(close), 0), 7)
middledown = rma(-min(change(close), 0), 7)
middlersi = middledown == 0 ? 100 : middleup == 0 ? 0 : 100 - (100 / (1 + middleup / middledown))

//RSI-14
slowup = rma(max(change(close), 0), 14)
slowdown = rma(-min(change(close), 0), 14)
slowrsi = slowdown == 0 ? 100 : slowup == 0 ? 0 : 100 - (100 / (1 + slowup / slowdown))

//Signals
acc = 10 - accuracy
up = fastrsi < (5 + acc) and middlersi < (10 + acc * 2) and slowrsi < (15 + acc * 3)
dn = fastrsi > (95 - acc) and middlersi > (90 - acc * 2) and slowrsi > (85 - acc * 3)
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size > 0 and close > open)

//Trading
if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Bottom", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Top", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

Больше