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

Динамическая неврологическая стратегия торговли, основанная на тренде

Автор:Чао Чжан, Дата: 2025-01-17 14:19:08
Тэги:SMAРСИ

 Dynamic Neural RSI Trend-Following Trading Strategy

Обзор

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

Принципы стратегии

Стратегия использует 200-дневную простую скользящую среднюю (SMA) в качестве базовой для оценки тренда, в сочетании с индексом относительной силы (RSI) для генерации торговых сигналов. 1. использует 200-дневную SMA для оценки основного тренда, рассматривая только длинные позиции, когда цена выше средней 2. Определяет сигналы перепроданности, когда RSI падает ниже заданного порога (по умолчанию 40) 3. Запускает длительный вход, когда оба условия выполнены и истек период ожидания с момента последнего выхода (по умолчанию 10 дней) 4. Защищает прибыль во время хранения позиции через отслеживание стоп-лосса (по умолчанию 5%) 5. Выходит из позиции, когда цена проходит ниже отставания или 200-дневного SMA

Преимущества стратегии

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

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

  1. Промежуток движущейся средней может привести к задержке входа и выхода сигналов
  2. Индикатор RSI может генерировать ложные сигналы на рыночных диапазонах
  3. Фиксированная процентная остановка может не соответствовать всем рыночным условиям
  4. Оптимизация параметров может привести к перенастройке
  5. Может иметь значительные снижения на сильно волатильных рынках

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

  1. Ввести процент отставания, адаптированный к волатильности
  2. Добавить показатели объема в качестве вспомогательного подтверждения
  3. Заменить простую скользящую среднюю на экспоненциальную скользящую среднюю для лучшей чувствительности
  4. Включить показатели настроения рынка для оптимизации сроков торговли
  5. Разработка механизма оптимизации динамических параметров
  6. Добавить механизм подтверждения стратегии с несколькими временными рамками

Резюме

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


/*backtest
start: 2025-01-09 00:00:00
end: 2025-01-16 00:00:00
period: 15m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=5
strategy("200 SMA Crossover Strategy", overlay=false)

// Define inputs
smaLength = input.int(200, title="SMA Length")
rsiLength = input.int(14, title="RSI Length")
rsiThreshold = input.float(40, title="RSI Threshold")
trailStopPercent = input.float(5.0, title="Trailing Stop Loss (%)")
waitingPeriod = input.int(10, title="Waiting Period (Days)")

// Calculate 200 SMA
sma200 = ta.sma(close, smaLength)

// Calculate RSI
rsi = ta.rsi(close, rsiLength)

// Plot the 200 SMA and RSI
plot(sma200, color=color.blue, linewidth=2, title="200 SMA")
plot(rsi, color=color.purple, title="RSI", display=display.none)

// Define buy and sell conditions
var isLong = false
var float lastExitTime = na
var float trailStopPrice = na

// Explicitly declare timeSinceExit as float
float timeSinceExit = na(lastExitTime) ? na : (time - lastExitTime) / (24 * 60 * 60 * 1000)
canEnter = na(lastExitTime) or timeSinceExit > waitingPeriod

buyCondition = close > sma200 and rsi < rsiThreshold and canEnter

if (buyCondition and not isLong)
    strategy.entry("Buy", strategy.long)
    trailStopPrice := na
    isLong := true

// Update trailing stop loss if long
if (isLong)
    trailStopPrice := na(trailStopPrice) ? close * (1 - trailStopPercent / 100) : math.max(trailStopPrice, close * (1 - trailStopPercent / 100))

// Check for trailing stop loss or sell condition
if (isLong and (close < trailStopPrice or close < sma200))
    strategy.close("Buy")
    lastExitTime := time
    isLong := false

// Plot buy and sell signals
plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=(isLong and close < trailStopPrice) or close < sma200, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")


Связанные

Больше