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


Дата создания: 2023-12-28 17:24:53 Последнее изменение: 2023-12-28 17:24:53
Копировать: 0 Количество просмотров: 626
1
Подписаться
1623
Подписчики

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

Обзор

Стратегия отслеживания трендов с двойным движущимся средним сближением (Dual Moving Average Convergence Trend Tracking Strategy) определяет направление ценового тренда путем вычисления быстрых движущихся средних, медленных движущихся средних и сверхмедленных движущихся средних в сочетании с индикатором MACD, позволяя осуществлять отслеживание трендовых сделок. Сделайте больше, когда быстрый медленный средний пересекается с золотым, и сделайте пустое, когда он пересекается с мертвым.

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

Сначала стратегия рассчитывает 12-дневную быстродвижущуюся среднюю, 26-дневную медленную и 200-дневную сверхмедленную среднюю. Золотой крест начинается, когда быстродвижущаяся средняя пересекает медленную среднюю; мертвый крест начинается, когда быстродвижущаяся средняя пересекает медленную среднюю сверху вниз.

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

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

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

  1. Двойное подтверждение по системе быстрого и медленного равномерного движения и MACD, чтобы избежать ложных прорывов и гарантировать вход только в начале тренда.

  2. 200-дневная скользящая средняя фильтруется, чтобы избежать ошибочных сделок во время рыночных колебаний.

  3. Установка Stop Loss ограничивает максимальные потери.

  4. Можно настроить параметры, такие как длина скользящей средней, устойчивость к потере воды, чтобы адаптироваться к различным видам.

  5. Стратегическая концепция ясна, проста, легко понятна и оптимизируется.

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

  1. Стратегия долгосрочного отслеживания тенденций не позволяет использовать краткосрочные возможности.

  2. Эффективность отслеживания зависит от параметров, неправильные параметры не позволят правильно улавливать тенденции.

  3. Неправильно установленная стоп-позиция может быть слишком расслабленной или слишком напряженной, что приводит к увеличению убытков или преждевременной остановке.

  4. Долгосрочные позиции, которые требуют определенного финансового давления.

Оптимизация стратегии

  1. Оптимизация параметров длины скользящих средних для поиска оптимального сочетания параметров.

  2. Добавление других показателей в качестве вспомогательных судейских сигналов, таких как показатель KDJ и т. д.

  3. Оптимизация стратегий по прекращению убытков, такие как минимизация убытков, отслеживание убытков и т. д.

  4. Параметры скорректируются в зависимости от разновидности и цикла торгов.

  5. Количество соединений может отфильтровывать ложные сигналы, такие как количество сделок.

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

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

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

//@version=2
strategy("Trend Strategy", shorttitle="TSTrend Strategy", overlay=true)


// Trend Strategy
// If the inverse logic is true, the strategy
// goes short. For the worst case there is a
// max intraday equity loss of 50% filter.


// Input
source = input(close)
fastLength = input(12, minval=1, title="MACD fast moving average")
slowLength=input(26,minval=1, title="MACD slow moving average")
signalLength=input(9,minval=1, title="MACD signal line moving average")
veryslowLength=input(200,minval=1, title="Very slow moving average")
switch1=input(true, title="Enable Bar Color?")
switch2=input(true, title="Enable Moving Averages?")
switch3=input(true, title="Enable Background Color?")

// Calculation
fastMA = sma(source, fastLength)
slowMA = sma(source, slowLength)
veryslowMA = sma(source, veryslowLength)
macd = fastMA - slowMA
signal = sma(macd, signalLength)
hist = macd - signal

// Colors
MAtrendcolor = change(veryslowMA) > 0 ? green : red
trendcolor = fastMA > slowMA and change(veryslowMA) > 0 and close > slowMA ? green : fastMA < slowMA and change(veryslowMA) < 0 and close < slowMA ? red : blue
bartrendcolor = close > fastMA and close > slowMA and close > veryslowMA and change(slowMA) > 0 ? green : close < fastMA and close < slowMA and close < veryslowMA and change(slowMA) < 0 ? red : blue
backgroundcolor = slowMA > veryslowMA and crossover(hist, 0) and macd > 0 and fastMA > slowMA and close[slowLength] > veryslowMA ? green : slowMA < veryslowMA and crossunder(hist, 0) and macd < 0 and fastMA < slowMA and close[slowLength] < veryslowMA ? red : na
bgcolor(switch3?backgroundcolor:na,transp=80)
barcolor(switch1?bartrendcolor:na)

// Output
F=plot(switch2?fastMA:na,color=trendcolor)
S=plot(switch2?slowMA:na,color=trendcolor,linewidth=2)
V=plot(switch2?veryslowMA:na,color=MAtrendcolor,linewidth=4)
fill(F,V,color=gray)

// Strategy
buyprice = low
sellprice = high
cancelLong = slowMA < veryslowMA
cancelShort = slowMA > veryslowMA

if (cancelLong)
    strategy.cancel("MACDLE")

if crossover(hist, 0) and macd > 0 and fastMA > slowMA and close[slowLength] > veryslowMA 
    strategy.entry("MACDLE", strategy.long, stop=buyprice, comment="Bullish")

if (cancelShort)
    strategy.cancel("MACDSE")

if crossunder(hist, 0) and macd < 0 and fastMA < slowMA and close[slowLength] < veryslowMA 
    strategy.entry("MACDSE", strategy.short, stop=sellprice, comment="Bearish")

// maxIdLossPcnt = input(50, "Max Intraday Loss(%)", type=float)
// strategy.risk.max_intraday_loss(maxIdLossPcnt, strategy.percent_of_equity)

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)