Стратегия отслеживания стоп-лосса на основе динамической двойной скользящей средней


Дата создания: 2024-02-26 11:13:17 Последнее изменение: 2024-02-26 11:13:17
Копировать: 0 Количество просмотров: 594
1
Подписаться
1617
Подписчики

Стратегия отслеживания стоп-лосса на основе динамической двойной скользящей средней

Обзор

Эта стратегия является динамической стратегией отслеживания стоп-порогов, основанной на двойных средних линиях EMA. Она использует 9-й и 20-й линии для определения направления тенденции рынка в сочетании с RSI, фильтрующей ложные трещины. При этом используется индикатор ATR для вычисления динамических стоп-порогов и стоп-порогов.

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

Эта стратегия использует 9-дневную ЭМА в качестве краткосрочной средней линии, 20-дневную ЭМА в качестве среднесрочной средней линии, чтобы определить тенденцию цены. Когда цена вверх пробивает краткосрочную среднюю линию, и цена закрытия выше предыдущей дневной максимальной цены, в то время как RSI выше 30, делать больше; когда цена вниз пробивает краткосрочную среднюю линию, и цена закрытия ниже предыдущей дневной минимальной цены, в то время как RSI ниже 70, делать пустоту.

Стоп-стоп устанавливается как цена закрытия за вычетом ATR в 1,5 раза, стоп-стоп устанавливается как цена закрытия за вычетом ATR в 1,5 раза, а стоп-стоп устанавливается как цена закрытия за вычетом ATR в 2 раза.

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

  1. Используйте двойные EMA, чтобы оценить основные тенденции рынка и избежать шума
  2. Фильтрация ложных прорывов в сочетании с RSI повышает точность входа в игру
  3. Динамический стоп-стоп, который может быть скорректирован в зависимости от колебаний рынка
  4. Следить за трендом, чтобы максимизировать прибыль

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

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

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

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

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

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

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

//@version=4
strategy("CJTrade", overlay=true)

short = ema(close, 9)
medium = ema(close, 20)
long = ema(close, 50)
very_long = ema(close, 200)

plot(short, color=color.gray, linewidth=1)
plot(medium, color=color.red, linewidth=1)
plot(long, color=color.black, linewidth=1)
plot(very_long, color=color.blue, linewidth=1)

rsiValue = rsi(close, 14)

near20EMA = close > medium - atr(14)

longCond = crossover(close[1], short) and close >= high[1] and rsiValue < 70 and near20EMA
shortCond = crossunder(close[1], short) and close <= low[1] and rsiValue > 30 and near20EMA

strategy.entry("Long", strategy.long, when=longCond)
strategy.entry("Short", strategy.short, when=shortCond)

atrValue = atr(14)
stopLossLevel = close - atrValue * 1.5

// Dynamic take profit level based on ATR
takeProfitMultiplier = input(2, title="Take Profit Multiplier", minval=0.1, maxval=10, step=0.1)
takeProfitLevel = close + atrValue * takeProfitMultiplier

// Trailing stop loss for long positions
longTrailingStop = close - atrValue * 2
strategy.exit("LongTrailingStop", from_entry="Long", loss=longTrailingStop)

// Trailing stop loss for short positions
shortTrailingStop = close + atrValue * 2
strategy.exit("ShortTrailingStop", from_entry="Short", loss=shortTrailingStop)

strategy.exit("Take Profit/Stop Loss", from_entry="Long", loss=stopLossLevel, profit=takeProfitLevel)
strategy.exit("Take Profit/Stop Loss", from_entry="Short", loss=stopLossLevel, profit=takeProfitLevel)