Стратегия прорыва возврата к среднему значению RSI

RSI SMA ATR
Дата создания: 2024-12-05 16:53:44 Последнее изменение: 2024-12-05 16:53:44
Копировать: 0 Количество просмотров: 498
1
Подписаться
1617
Подписчики

Стратегия прорыва возврата к среднему значению RSI

Обзор стратегии

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

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

Стратегия использует многочисленные механизмы фильтрации для определения торговых сигналов: во-первых, требуется, чтобы цена создала 10 циклических новых низких, что указывает на то, что рынок находится в состоянии перепродажи; во-вторых, требуется, чтобы диапазон колебаний цены в тот день был максимальным почти на 10 торговых дней, что указывает на усиление колебаний рынка; и, наконец, чтобы подтвердить потенциальный обратный оборот, оценивая, находится ли цена закрытия в верхних четверти ценового диапазона в тот день.

Стратегические преимущества

  1. Множественные условия фильтрации улучшают качество сигнала и уменьшают ложные сигналы
  2. Сочетание нескольких измерений, таких как ценовая форма, волатильность и динамика в техническом анализе
  3. Эффективная защита прибыли с использованием механизма отслеживания убытков
  4. Механизм входа в систему использует прорывную идентификацию, чтобы избежать преждевременного вмешательства
  5. Логика транзакций ясна, легко понятна и реализуется

Стратегический риск

  1. Часто может вызывать остановку на рынке с высоким трендом
  2. Вступление в компанию требует строгих условий, и вы можете пропустить некоторые возможности для торговли.
  3. Требуется более высокая частота транзакций, что может привести к более высоким транзакционным затратам.
  4. В условиях низкой волатильности может быть трудно найти эффективные торговые сигналы
  5. Стоп-лосс может быть слишком консервативным и влиять на общую доходность

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

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

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

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

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

//@version=5
strategy("Larry Conners SMTP Strategy", overlay=true, margin_long=100, margin_short=100)

// --- Inputs ---
// Corrected the input type declaration by removing 'type='
tickSize = input.float(0.01, title="Tick Size (e.g., 1/8 for stocks)")

// --- Calculate conditions ---
// 1. Today the market must make a 10-period low
low10 = ta.lowest(low, 10)
is10PeriodLow = low == low10

// 2. Today's range must be the largest of the past 10 bars
rangeToday = high - low
maxRange10 = ta.highest(high - low, 10)
isLargestRange = rangeToday == maxRange10

// 3. Today's close must be in the top 25 percent of today's range
rangePercent = (close - low) / rangeToday
isCloseInTop25 = rangePercent >= 0.75

// Combine all buy conditions
buyCondition = is10PeriodLow and isLargestRange and isCloseInTop25

// --- Buy Entry (on the next day) ---
var float buyPrice = na
var bool orderPending = false
var float stopLoss = na  // Initialize stopLoss at the top level to avoid 'Undeclared identifier' errors

if (buyCondition and strategy.position_size == 0)
    buyPrice := high + tickSize
    stopLoss := low
    orderPending := true

// Condition to place buy order the next day or the day after
if orderPending and ta.barssince(buyCondition) <= 2
    strategy.entry("Buy", strategy.long, stop=buyPrice)
    orderPending := false

// --- Stop-Loss and Trailing Stop ---
if (strategy.position_size > 0)
    stopLoss := math.max(stopLoss, low) // Move stop to higher lows (manual trailing)
    strategy.exit("Exit", from_entry="Buy", stop=stopLoss)

// --- Plotting ---
// Highlight buy conditions
bgcolor(buyCondition ? color.new(color.green, 50) : na)
//plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy Setup")

// Plot Stop-Loss level for visualization
//plot(strategy.position_size > 0 ? stopLoss : na, color=color.red, linewidth=2, title="Stop-Loss Level")