Стратегия тренда RSI Alligator

Автор:Чао Чжан, Дата: 2024-01-29 14:40:07
Тэги:

img

Обзор

Стратегия RSI Alligator Trend основана на сочетании индикатора RSI и индикатора Alligator для определения входа и выхода трендов. Она использует три скользящих средних линии - линию челюсти аллигатора, линию зуба и линию губ, построенную RSI разных периодов. Она длится, когда линия зуба пересекает линию губ, а линия челюсти RSI выше линии зуба; она становится короткой, когда линия зуба пересекает линию губ, а линия челюсти RSI ниже линии зуба. Стратегия также устанавливает условия остановки потери и получения прибыли.

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

Стратегия RSI Alligator Trend строит три линии индикатора Alligator с использованием индикатора RSI.

  • Линия челюсти: 5-периодическая линия RSI
  • Линия зуба: 13-периодическая линия РСИ
  • Линия губ: 34-периодная линия РСИ

Логика входного сигнала:

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

Короткий сигнал: когда линия зуба пересекается ниже линии губы и линия челюсти ниже линии зуба, переходите на короткий.

Стратегия также устанавливает условия остановки потерь и получения прибыли:

  • Стоп-лосс установлен на 10% ниже входной цены
  • Прибыль на 90% выше входной цены

Анализ силы

Стратегия RSI Alligator Trend имеет следующие сильные стороны:

  1. Использование линий Аллигатора для определения тренда может эффективно отфильтровать рыночный шум и блокировать основную тенденцию
  2. Комбинирование многопериодного RSI позволяет избежать ложных прорывов и улучшить надежность сигнала
  3. Установление разумных условий остановки потерь и получения прибыли помогает стабилизировать стратегические операции
  4. Идея стратегии ясна и легко понять, параметры настройки просты, и это легко реализовать для торговли в режиме реального времени
  5. Он может быть как длинным, так и коротким, учитывая оба направления тренда, и имеет большую гибкость.

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

Стратегия RSI Alligator Trend также имеет следующие риски:

  1. При пересечении между линией зуба и линией губы могут возникать ложные высыпания, что приводит к ненужным потерям.

  2. Настройка стоп-лосса может быть слишком агрессивной, с высокой вероятностью ненужного стоп-лосса.

  3. Если рынок движется резко, то стоп-лосс может не выполнять свою функцию защиты маржи, в этом случае требуется ручное вмешательство, чтобы вовремя остановить потерю.

  4. Когда длинные и короткие позиции часто переключаются, давление на стоимость торговли больше.

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

Стратегия RSI Alligator Trend может быть оптимизирована в следующих аспектах:

  1. Оптимизируйте настройки параметров линии Alligator для поиска лучшей комбинации параметров

  2. Оптимизировать логику условий входа, например, добавление индикаторов, таких как объем торговли, для фильтрации сигналов

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

  4. Добавить механизмы для борьбы с экстремальными явлениями и избежать воздействия ненормальных рыночных условий

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

Заключение

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


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=3
// RSI Alligator
// Forked from Author: Reza Akhavan
// Updated by Khalid Salomão

strategy("RSI Alligator Strategy", overlay=false, pyramiding=0, default_qty_type=strategy.cash, default_qty_value=25000, initial_capital=25000, commission_type=strategy.commission.percent, commission_value=0.15, slippage=3)

// === TA LOGIC ===
overBought = input(70, minval=0, maxval=100, title="Over bought")
overSold = input(30, minval=0, maxval=100, title="Over sold")
jawPeriods = input(5, minval=1, title="Jaw Periods")
jawOffset = input(0, minval=0, title="Jaw Offset")
teethPeriods = input(13, minval=1, title="Teeth Periods")
teethOffset = input(0, minval=0, title="Teeth Offset")
lipsPeriods = input(34, minval=1, title="Lips Periods")
lipsOffset = input(0, minval=0, title="Lips Offset")

jaws = rsi(close, jawPeriods)
teeth = rsi(close, teethPeriods)
lips = rsi(close, lipsPeriods)
plot(jaws, color=green, offset=jawOffset, title="Jaw")
plot(teeth, color=red, offset=teethOffset, title="Teeth")
plot(lips, color=blue, offset=lipsOffset, title="Lips")

//
// === Signal logic ===
// 
LONG_SIGNAL_BOOLEAN  = crossover(teeth, lips) and jaws > teeth
SHORT_SIGNAL_BOOLEAN = crossunder(teeth, lips) and jaws < teeth

// === INPUT BACKTEST DATE RANGE ===
strategyType = input(defval="Long Only", options=["Long & Short", "Long Only", "Short Only"])

FromMonth = input(defval = 7, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2020, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        
window()  => true

// === STRATEGY BUY / SELL ENTRIES ===

// TODO: update the placeholder LONG_SIGNAL_BOOLEAN and SHORT_SIGNAL_BOOLEAN to signal
// long and short entries
buy()  => window() and LONG_SIGNAL_BOOLEAN
sell() => window() and SHORT_SIGNAL_BOOLEAN

if buy()
    if (strategyType == "Short Only")
        strategy.close("Short")
    else
        strategy.entry("Long", strategy.long, comment="Long")

if sell()
    if (strategyType == "Long Only")
        strategy.close("Long")
    else
        strategy.entry("Short", strategy.short, comment="Short")
        

// === BACKTESTING: EXIT strategy ===
sl_inp = input(10, title='Stop Loss %', type=float)/100
tp_inp = input(90, title='Take Profit %', type=float)/100

stop_level = strategy.position_avg_price * (1 - sl_inp)
take_level = strategy.position_avg_price * (1 + tp_inp)

strategy.exit("Stop Loss/Profit", "Long", stop=stop_level, limit=take_level)

Больше