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


Дата создания: 2024-02-05 13:45:51 Последнее изменение: 2024-02-05 13:45:51
Копировать: 0 Количество просмотров: 565
1
Подписаться
1617
Подписчики

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

Обзор

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

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

  1. Быстрая скользящая средняя ((EMA): параметр 12-дневная индексная скользящая средняя, способная быстро реагировать на изменения цены.
  2. Медленно-движущаяся средняя ((SMA): параметр 45-дневная простая движущаяся средняя, характеризующая долгосрочные тенденции.
  3. Когда быстрый скользящий средний пересекает медленный скользящий средний, создается сигнал покупки.
  4. Средняя реальная волатильность за 15 дней (ATR) рассчитывается как стоп-стоп.
  5. Настройка трассировки стоп-лосса в соответствии с величиной ATR (например, в 6 раз ATR) и обновление стоп-лосса в реальном времени.
  6. Когда цена ниже цены стоп-лосса, генерируется сигнал продажи.

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

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

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

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

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

Можно оптимизировать параметры скользящих средних или скорректировать ATR-множитель, чтобы сбалансировать степень остановки. Также можно использовать другие показатели в качестве фильтров для улучшения времени входа в игру.

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

  1. Выбор наилучшего скользящего среднего для тестирования большего количества комбинаций.
  2. Применение множителя ATR Stop Loss в зависимости от характеристик различных акций.
  3. Повышение фильтрующих условий, таких как показатели количества и цены, чтобы избежать ненужных сделок.
  4. Накопление большего количества исторических данных для проверки стабильности параметров.

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

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

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

//@version=2
//created by XPloRR 24-02-2018

strategy("XPloRR MA-Buy ATR-MA-Trailing-Stop Strategy",overlay=true, initial_capital=1000,default_qty_type=strategy.percent_of_equity,default_qty_value=100)

testStartYear = input(2005, "Start Year")
testStartMonth = input(1, "Start Month")
testStartDay = input(1, "Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2050, "Stop Year")
testStopMonth = input(12, "Stop Month")
testStopDay = input(31, "Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriodBackground = input(title="Background", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

emaPeriod = input(12, "Exponential MA")
smaPeriod = input(45, "Simple MA")
stopPeriod = input(12, "Stop EMA")
delta = input(6, "Trailing Stop #ATR")

testPeriod() => true

emaval=ema(close,emaPeriod)
smaval=sma(close,smaPeriod)
stopval=ema(close,stopPeriod)
atr=sma((high-low),15)

plot(emaval, color=blue,linewidth=1)
plot(smaval, color=orange,linewidth=1)
plot(stopval, color=lime,linewidth=1)

long=crossover(emaval,smaval) 
short=crossunder(emaval,smaval)

//buy-sell signal
stop=0
inlong=0
if testPeriod()
    if (long and (not inlong[1]))
        strategy.entry("buy",strategy.long)
        inlong:=1
        stop:=emaval-delta*atr
    else
        stop:=iff((nz(emaval)>(nz(stop[1])+delta*atr))and(inlong[1]),emaval-delta*atr,nz(stop[1]))
        inlong:=nz(inlong[1])
        if ((stopval<stop) and (inlong[1]))
            strategy.close("buy")
            inlong:=0
            stop:=0
else
    inlong:=0
    stop:=0
plot(stop,color=green,linewidth=1)