Алгоритм Стратегия прорыва диапазона RSI

Автор:Чао Чжан, Дата: 2023-10-17 17:14:09
Тэги:

img

Обзор

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

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

  1. Установите период RSI на 14

  2. Установите диапазоны сигналов покупки RSI:

    • Диапазон 1: RSI <= 27
    • Диапазон 2: RSI <= 18
  3. Установите диапазоны сигналов RSI продажи:

    • Диапазон 1: RSI >= 68
    • Диапазон 2: RSI >= 80
  4. Когда RSI входит в диапазон покупок, делайте длинный:

    • Если RSI входит в диапазон 1 (ниже 27), займите 1 лот
    • Если RSI входит в диапазон 2 (ниже 18), дополнительно длинный 1 лот
  5. Когда RSI входит в диапазон продажи, перейдите на короткий:

    • Если RSI входит в диапазон 1 (выше 68), перейти на короткий 1 лот
    • Если RSI входит в диапазон 2 (выше 80), перейти на дополнительный короткий 1 лот
  6. Установите фиксированную прибыль на 2500 пип и стоп-лосс на 5000 пип

  7. Закрыть позицию при выходе RSI из диапазона сигнала

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

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

  2. Принятие фиксированной прибыли и остановки убытков в пипах предотвращает преследование тенденций слишком много

  3. RSI является зрелым осциллятором для определения уровней перекупа и перепродажи с преимуществами по сравнению с другими показателями

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

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

  1. Дивергенция по РСИ может привести к последовательным потерям от длительной короткой позиции

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

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

  4. Эта стратегия во многом опирается на оптимизацию параметров на основе бэкстестов.

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

  1. Эффективность испытаний RSI при различных продолжительностях периода

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

  3. Динамика исследования с целью получения прибыли и прекращения убытков для повышения рентабельности и разумности

  4. Рассмотреть возможность объединения других индикаторов для торговли в совокупности для повышения надежности

  5. Исследование методов машинного обучения для автоматической оптимизации диапазонов параметров для надежности

Заключение

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


/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 1h
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/
// © Rawadabdo

// Ramy's Algorithm

//@version=5
strategy("BTC/USD - RSI", overlay=false, initial_capital = 5000)

// User input
length = input(title = "Length", defval=14, tooltip="RSI period")

first_buy_level = input(title = "Buy Level 1", defval=27, tooltip="Level where 1st buy triggers")
second_buy_level = input(title = "Buy Level 2", defval=18, tooltip="Level where 2nd buy triggers")

first_sell_level = input(title = "Sell Level 1", defval=68, tooltip="Level where 1st sell triggers")
second_sell_level = input(title = "Sell Level 2", defval=80, tooltip="Level where 2nd sell triggers")

takeProfit= input(title="target Pips", defval=2500, tooltip="Fixed pip stop loss distance")
stopLoss = input(title="Stop Pips", defval=5000, tooltip="Fixed pip stop loss distance")

lot = input(title = "Lot Size", defval = 1, tooltip="Trading Lot size")

// Get RSI
vrsi = ta.rsi(close, length)

// Entry Conditions
long1 = (vrsi <= first_buy_level and vrsi>second_buy_level)
long2 = (vrsi <= second_buy_level)

short1= (vrsi >= first_sell_level and vrsi<second_sell_level)
short2= (vrsi >= second_sell_level)


// Entry Orders
// Buy Orders
if (long1 and strategy.position_size == 0)
    strategy.entry("Long", strategy.long, qty=lot, comment="Buy")
    if (long2 and  strategy.position_size == 0)
        strategy.entry("Long", strategy.long, qty=lot, comment="Buy")

// Short Orders
if (short1 and strategy.position_size == 0)
    strategy.entry("Short", strategy.short,qty=lot, comment="Sell")
    if (short2 and strategy.position_size == 0)
        strategy.entry("Short", strategy.short,qty=lot, comment="Sell")
    
// Exit our trade if our stop loss or take profit is hit
strategy.exit(id="Long Exit", from_entry="Long",qty = lot, profit=takeProfit, loss=stopLoss)
strategy.exit(id="Short Exit", from_entry="Short", qty = lot, profit=takeProfit, loss=stopLoss)

// plot data to the chart
hline(first_sell_level, "Overbought Zone", color=color.red, linestyle=hline.style_dashed, linewidth = 2)
hline(second_sell_level, "Overbought Zone", color=color.green, linestyle=hline.style_dashed, linewidth = 2)
hline(first_buy_level, "Oversold Zone", color=color.red, linestyle=hline.style_dashed, linewidth = 2)
hline(second_buy_level, "Oversold Zone", color=color.green, linestyle=hline.style_dashed, linewidth = 2)
plot (vrsi, title = "RSI", color = color.blue, linewidth=2)





Больше