Стратегия двойного движущегося среднего отслеживания стоп-лосса

Автор:Чао Чжан, Дата: 2024-02-05 13:45:51
Тэги:

img

Обзор

Принципы

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

Эта стратегия сочетает в себе преимущества следующего тренда и управления стоп-лосом.

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

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

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

  1. У МА есть задержки, которые могут упустить краткосрочные шансы.
  2. Чрезмерная свободная стоп-лосс подрывает прибыльность.
  3. Изменение волатильности может повлиять на стабильность параметров ATR.

Параметры могут быть оптимизированы, чтобы сбалансировать амплитуду стоп-потери. Другие индикаторы также могут быть объединены для улучшения времени входа.

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

  1. Испытайте больше комбинаций параметров, чтобы найти оптимальные МА.
  2. Корректировать мультипликатор ATR в соответствии со специфическими характеристиками запасов.
  3. Добавьте условия фильтрации, такие как показатели объема, чтобы избежать ненужных сделок.
  4. Соберите больше исторических данных, чтобы проверить стабильность параметров.

Заключение


/*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)


Больше